谷歌为何不喜欢 Node.js ?

by admin on 2020年4月14日

有人在 Quora 上提问,为什么谷歌不喜欢 Node.js 呢,Google 的 UX
工程师和来自 Node.js
团队的开发者分别回答了他们对这个问题的看法,对于编程语言来说,每一门语言都有它自己的优势,重要的是如何用它去解决问题。

澳门新葡亰信誉平台游戏 1image

快速入门,界面上的使用方式

使用console

  • 创建一个Cloud Spanner instance、database、table。
  • 添加schema.
  • 写入或更新数据
  • 查询数据
    参考官网

澳门新葡亰信誉平台游戏 2

Android developers love Kotlin. Google can tell us that 27% of the top
1,000 Android apps are built using Kotlin or that developers who are
using it have a 97% satisfaction rate and that’s great.

深入,通过Google Cloud SDK的方式操作Spanner

澳门新葡亰信誉平台游戏,为了在本地、测试、线上等环境通过代码来操作Spanner DB需要进行以下步骤:

谷歌 UX 工程师 Sean Grogg :

But we’ve also had developers tell us in person that they not only love
it, but it’s also changed how much time they need to spend doing the
“boring” part of building an app. That gives them more time to do things
like polish the user experience or add small details that make a great
app stand out.

下载好Google Cloud SDK

本地开发之前,需要下载并安装Google Cloud
SDK,然后就可以使用gcloud工具。gcloud提供了很多Google
Cloud
Platform的命令行接口。无论是通过命令行、脚本或其他自动化方式,都可以使用gcloud工具执行许多常见的平台任务。
例如,可以使用gcloud 去创建管理以下资源:

  • Google Compute Engine virtual machine instances and other resources
  • Google Cloud SQL instances
  • Google Kubernetes Engine clusters
  • Google Cloud Dataproc clusters and jobs
  • Google Cloud DNS managed zones and record sets
  • Google Cloud Deployment manager deployments
    也可以使用 gcloud 去部署 App Engine 应用,执行任务
    更多关于gcloud的功能看官方文档 gcloud
    Reference

对于任何语言,谷歌对其都秉持着中立的态度,只有所谓的 Big
Three(Java、Python 和
Go)例外,这些语言有着自己特别的优势,在项目中使用它们不需要进行额外的说明。

Kotlin helps make the tedious parts of building Android apps fewer and
farther between.

设置你的project为gcloud command-line工具的默认project

命令如下:

gcloud config set project [MY_PROJECT_ID]

作为一家企业,谷歌对 Node.js 并没有什么偏见。我写过很多 React
代码,它们都依赖 Node ,其中一些代码甚至现在还在谷歌的 megarepo 中。

When a one-man dev team can see the same benefit as a big player, that
means a thing is pretty darn good. Part of what makes Kotlin work so
well for writing Android apps is Google’s support. Google treats Kotlin
as a primary (“First class” in its own words) language in Android Studio
and all the official Android developers’ documentation. This includes
examples and tutorials as well as code camps and even a complete — and
free — Udacity course. If you know how to code in Java, you’ll be up and
running with Kotlin in no time.

验证授权

Cloud Spanner使用 OAuth
2.0做API验证和授权。跑以下命令:

gcloud auth application-default login

或者

gcloud auth login | gmail@address

或者直接

gcloud auth login

它会打开一个类似https://accounts.google.com/o/oauth2/auth?redirect_uri=XXXXXX的谷歌授权页面,直接点击当前用户并且赋予权限即可。但是这个授权方式只使用于本地环境,如果要部署到production环境,需要使用另外一种方式,请参考
Getting credentials for server-centric
flow和Setting
Up Authentication for Server to Server Production
Applications

当然,可能也会有一些个人或是团队不太喜欢 Node.js
。谷歌内部的确有一些人不喜欢它,但是同时也有很多人能够看到 Node.js
的价值,尤其是 Cloud 团队。

After seeing the success of Kotlin for Android development, Google is
moving it to the cloud with the Kotlin on Google Cloud Platform portal.

使用gcloud command-line工具

本地开发环境的授权已经完成,接下来就是正式使用了。
首先验证一下 gcloud command-line 是否可以连接并且操作Cloud Spanner。

gcloud spanner instance-configs list

通过以上命令可以看到project下面的一系列Cloud Spanner instance
配置信息。包含
regional 和 multi-region 配置信息。

更多操作参考gcloud
spanner。

  •  Node.js 是目前 Cloud Functions 唯一支持的语言

  •  它也是 App Engine 灵活环境的一部分

  •  它还是很多产品的客户端 library(Compute Engine,、Cloud Storage 以及
    Datastore 等)

Going beyond Android, we are happy to announce that the Google Cloud
Platform team is launching a dedicated Kotlin portal today. This will
help developers more easily find resources related to Kotlin on Google
Cloud. We want to make it as easy as possible for you to use Kotlin,
whether it’s on mobile or in the Cloud.

代码中使用Cloud Spanner client library操作Spanner DB

查询数据的一个例子:

// Imports the Google Cloud client library
const Spanner = require('@google-cloud/spanner');

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const projectId = 'my-project-id';
// const instanceId = 'my-instance';
// const databaseId = 'my-database';

// Creates a client
const spanner = new Spanner({
  projectId: projectId,
});

// Gets a reference to a Cloud Spanner instance and database
const instance = spanner.instance(instanceId);
const database = instance.database(databaseId);

// Reads rows from the Albums table
const albumsTable = database.table('Albums');

const query = {
  columns: ['SingerId', 'AlbumId', 'AlbumTitle'],
  keySet: {
    all: true,
  },
};

albumsTable
  .read(query)
  .then(results => {
    const rows = results[0];

    rows.forEach(row => {
      const json = row.toJSON();
      console.log(
        `SingerId: ${json.SingerId}, AlbumId: ${json.AlbumId}, AlbumTitle: ${
          json.AlbumTitle
        }`
      );
    });
  })
  .catch(err => {
    console.error('ERROR:', err);
  })
  .then(() => {
    // Close the database when finished.
    return database.close();
  });

除此以外,还支持很多操作:建数据库,建表,对数据的增删改查等等。更多的详情参考以下官网。

  • Getting Started with Cloud Spanner in
    C#
  • Getting Started with Cloud Spanner in
    Go
  • Getting Started with Cloud Spanner in
    Java
  • Getting Started with Cloud Spanner in
    Node.js
  • Getting Started with Cloud Spanner in
    PHP
  • Getting Started with Cloud Spanner in
    Python
  • Getting Started with Cloud Spanner in
    Ruby
  • Getting Started with Cloud Spanner in
    REST

Node.js 团队 Andreas Madsen:

Like Kotlin on the Android platform, Google is offering a complete SDK
for Google Cloud and tutorials to guide you through doing things like
building a backend for your app or using Kotlin to deploy Google App
Engine. It also promises a full set of APIs and code libraries for
Kotlin on Google Cloud Platform to help make moving a project from
another language to Kotlin or building a new Kotlin project from scratch
easier and worth doing.

谷歌的 V8 团队与 Node.js 团队有着紧密的合作。在最近的 Node.js 8
中,我们对之后的 V8 保证了 ABI
兼容性。如果没有两个团队间的紧密合作,我们无法做到这一点。

Programming languages and developer tools to use them don’t really mean
much to end-users like ourselves. But they do make life easier for the
developers when they’re done right. Google looks to be learning from
mistakes it sees in its own past as well as the things Apple and
Microsoft are doing that could be improved and it’s partnership with
JetBrains to establish the Kotlin Foundation is one way it wants to fix
them.

Node.js 还在和 V8 团队一起开发 PromiseHook API ,它允许开发者使用 C++
检测所有 promise 。它让我们可以在 domain module 中加入对 promise
的支持,而且也是新的 async_hooks API 中的一个主要组件。

For us, it all just means better apps. Who doesn’t love better apps?

由此可见,说谷歌讨厌 Node.js 完全是一派胡言。

Android开发人员喜欢Kotlin。谷歌可以告诉我们,前1000个Android应用程序中有27%是使用Kotlin构建的,或者使用它的开发人员的满意度为97%,而且非常棒。

Topseptools.tech SEO 经理 Muhammad Saeed:

但我们也有开发人员告诉我们他们不仅喜欢它,而且还改变了他们花费多少时间来构建应用程序的“无聊”部分。这使他们有更多的时间来做一些事情,比如改善用户体验或添加一些细节,使一个出色的应用程序脱颖而出。

在使用 Node.js 的时候,你不能一次性处理多个 core ,比需要要对多个
instance 进行 spin 。更糟的是,它的 cluster API
到现在依然还只是实验性功能。

Kotlin帮助使构建Android应用程序的繁琐部分更少,更远。

我之所以不喜欢 Node.js ,是因为在使用 headless
浏览器运行测试的时候,你智能使用一个 core 。除非你能学会如何将测试的
load 进行分配,否则在真实浏览器中运行测试的速度会更快。

当一个单人开发团队能够看到与大玩家相同的好处时,这意味着事情相当不错。Kotlin编写Android应用程序的一部分原因是谷歌的支持。Google将Kotlin视为Android
Studio中的主要语言语言,以及所有官方Android开发人员的文档。这包括示例和教程,以及代码阵营,甚至一个完整的-
和自由 –
Udacity课程。如果您知道如何使用Java编写代码,那么您很快就可以使用Kotlin了。

调试也是个问题,如果你使用的是cluster
library,它会无法正常工作。我非常希望 Node.js 能解决这个问题。

在看到Kotlin用于Android开发的成功之后,谷歌正在通过Google云平台门户网站上的Kotlin将其迁移到云端。

原文:Why does Google despise Node.js? Answer
Request
译文:SDK.cn  编译:鲁行云

超越Android,我们很高兴地宣布Google Cloud
Platform团队今天推出了专门的Kotlin门户。这将有助于开发人员更轻松地在Google
Cloud上查找与Kotlin相关的资源。我们希望让您尽可能轻松地使用Kotlin,无论是在移动设备还是在云端。

与Android平台上的Kotlin一样,Google提供了完整的Google Cloud
SDK和教程,可指导您完成为应用构建后端或使用Kotlin部署Google App
Engine等操作。它还承诺为Google Cloud
Platform上的Kotlin提供一整套API和代码库,以帮助将项目从另一种语言转移到Kotlin,或者从头开始构建一个新的Kotlin项目更容易,更值得做。

使用它们的编程语言和开发人员工具对像我们这样的最终用户来说并不是很重要。但是,当他们做得好时,他们确实让开发人员的生活变得更轻松。谷歌似乎正在从它自己过去看到的错误中学习,以及苹果和微软正在做的事情可以改进,它与JetBrains合作建立Kotlin基金会是它想要修复它们的一种方式。

对我们来说,这一切只是意味着更好的应用。谁不喜欢更好的应用程序?

澳门新葡亰信誉平台游戏 3image

国内第一Kotlin 开发者社区公众号,主要分享、交流 Kotlin 编程语言、Spring
Boot、Android、React.js/Node.js、函数式编程、编程思想等相关主题。

快快拿出手机,扫一扫关注吧~

澳门新葡亰信誉平台游戏 4开发者社区
QRCode.jpg

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图