Node.js|Now的使用介绍

396 阅读4分钟

Zeit现在叫Vercel,这个教程可能已经过时了

部署Node.js应用程序的最简单方法之一是通过Zeit创建的Now平台。

最近,Now 2已经推出。本教程的重点是这个。与Now 1有很多不同之处,在这篇文章中重点介绍

Now使应用程序的部署和分发步骤变得非常、非常简单和快速。你可以把它看作是 "云",因为你并不知道你的应用将被部署在哪里,但你知道你将有一个可以到达的URL。

你可以使用Now来部署Node.js应用程序、静态网站,以及更多。

Now不仅支持Node.js(也支持Go、PHP、Python和其他语言),但在本教程中我只考虑这项技术。

Now可以免费开始使用,其慷慨的免费计划包括免费的SSL、100GB的主机、每天1000次无服务器函数调用、每月1000次构建、每月100GB的带宽,以及全球CDN的使用。如果你需要更多,定价页面有助于了解成本。

安装

最好的方法是安装Now Desktop,你可以从github.com/zeit/now-de… 下载这是一个Electron应用程序,它也安装了Now CLI,这是一个我们以后要使用的工具。

通过它,你可以使用一个简单的拖放界面来部署应用程序,真的很方便!

提示:如果你愿意,你也可以直接安装命令行,从zeit.co/download

开始后,输入你的电子邮件,Now会继续进行认证,给你发送一封验证邮件。

一旦你登录了,你就可以跟随快速教程。

在你滚动浏览了几个屏幕后,该应用程序被移到了菜单栏,当你点击它时,就会显示活动信息。

正如你在这张图片中看到的,我在几个月前用那个电子邮件账户安装了Now,但没有在上面做什么。

用桌面应用程序登录后,名为now 的命令行应用程序也会自动登录。

跳入终端,运行now

提示:如果你不需要/不想要桌面客户端,你也可以直接使用npm install -g now 命令安装now CLI 。然后,你将继续使用now login 进行登录。

在Now上部署一个应用程序

对于 "应用程序",我们可以只考虑一个简单的HTML文件,或者一个有许多构建步骤的复杂的应用程序。

不管你的应用程序是什么,你可以在

在一个文件夹中,该文件夹将被上传到云端。

只有一个注意事项:该文件夹必须包含一个now.json ,其中(至少)有这个内容。

以确保项目在Now 2上运行。

一旦你运行now 程序,该应用程序就会被部署到now.sh 域下的一个随机URL。在这种情况下,它是https://test-8h57iozp1.now.sh ,我只是部署了一个index.html 文件,其内容是<p>test</p>

部署之后,Now Desktop应用程序列出了这个活动

如果你现在改变那个index.html文件的内容并再次运行now ,你会得到一个不同的应用程序的URL

这可能是意想不到的,对吗?之前是test-8h57iozp1.now.sh ,现在是test-m2vcwrsc8.now.sh 。而且这两个URL都可以被访问。为什么呢?

预期的行为应该是旧的URL被更新为新的内容,但事实并非如此。

现在有了这个不变性的概念,它有很多优点,包括可以同时测试多个版本,多个开发人员在一个应用程序的不同部分工作,回滚,等等。

在生产中,或者当你想分享你的应用程序时,你需要一个固定的URL。它不能在你每次更新时都改变,对吗?要做到这一点,你要创建一个别名

now alias test-m2vcwrsc8.now.sh test-flavio

在你运行这个命令后,test-flavio.now.sh 将指向该部署。

每次你想更新这个别名所指向的部署时,你就再次运行这个命令。通过这种方式,你可以自由地测试新版本,当你同意将其作为官方版本时,你就可以更新这个别名。

同样的,要回滚到以前的部署,你只需将别名指向旧的部署的唯一URL。

要删除一个部署,运行now rm <URL>

now rm test-m2vcwrsc8.now.sh

配置一个lambda函数

我们可以在访问一个特定的URL时按需执行Node.js应用程序。

例如,添加一个带有此内容的test.js 文件。

module.exports = (req, res) => {
  res.end(`Hi!`)
}

为了使其可执行,我们必须在now.json 中添加一个构建步骤。

{
  "version": 2,
  "builds": [{ "src": "test.js", "use": "@now/node" }]
}

前往test-a0onzajf4.now.sh/test.js,看看结果("嗨!")。

奇怪的是,现在index.html 文件不再像以前那样加载了。这是因为默认的构建步骤被覆盖了,所以我们需要添加一个来解决这个问题。

在我们的构建中添加{ "src": "index.html", "use": "@now/static" } 这一行。

{
  "version": 2,
  "builds": [
    {
      "src": "test.js",
      "use": "@now/node"
    },
    {
      "src": "index.html",
      "use": "@now/static"
    }
  ]
}

今后的方向

关于Now,还有很多东西需要了解,但这个教程希望能让你在正确的方向上起步。

一些对你有用的资源是