now
**以下内容翻译自now
now
是一个实时的部署系统,使用now,可简单、快速、可靠地部署Node.js或者Docker驱动的网站,应用和服务。
实际上,任何包含一个package.json
或者Dockerfile
的目录都可以通过一条now
命令来传输到云端。
每次发布一个项目的时候,now
会给项目分配一个唯一的URL(在传输完成之前就会分配),生成的URL大概会是这个样子的:my-app-erkgfjtrna.now.sh
。
等到了项目正式上线的时候,指定合适的别名就行了。
我们可以把now
当做动态的代码(微服务和服务器端程序)内容分发网络。
安装
通过npm
安装now
:
1 | $ npm install -g now |
第一个项目
在终端中执行:
1 | $ mkdir my-project |
项目必要有一个package.json
或者Dockerfile
文件,并且必须在文件中执行一个start
的脚本命令:
1 | { |
本例中index.js
的内容如下:
1 | const app = require('express')(); |
注意: npm start
必须监听一个端口,可以是任意的端口(比如监听8080的,将8080传入到listen()中)。
使用now
可以发布引用:
1 | $ now |
第一次运行now
的时候,会让输入邮箱,然后在邮箱中点击链接就可以完成登陆。
如果需要更换邮箱或者重新或重新授权的话,执行:
1 | $ now --login |
部署开始后,就会产生一个链接(已经复制到了剪切板上),你可以把这个链接发给你的朋友,也可以在浏览器中打开查看。
特点
简单
now
的唯一要求是你电脑上安装了Node.js。
- 无需安装
git
- 无需设置keys
- 无需复杂的云服务设置或注册
无限制
每次执行npm
都会生成一个新的URL保存当前应用的状态。
- 无需删除以前的代码
- 无需配置应用或项目
- URL会永久保存
实时
每当执行now
的时候,都会获得一个URL,可以去查看,也可以分享给同事或者协作者。这个URL会显示部署的状态。你也许会看到文件上传的过程,然后是执行程序部署的过程。但是实际上,now
是相当快的,多数情况下是看不到这个过程的。
确保以后的运行
now
通过HTTP协议来实现服务器的运行的,并没有使用任何专门的云端API。运行应用通不通过now
都是可以的,也可以通过别的开源软件来运行。
除此以外:
- 所有的流量都是通过HTTP/2协议发送的
- 只有安全的链接才能发送流量
云端查看源码:
如果在URL后添加/_src
,就能看到其源码,你和你的团队可以迅速理解产品系统背后的工作原理。此外每个字符和行都是支持选中高亮的,这使得协同工作和查找BUG特别容易。
价格
(这么好的东西,自然不会免费的咯。不过个人用于学习和展示demo的话,neit公司提供了免费版的,每个月20次的发布,1GB的带宽,1GB的存储,这段就不再翻译了,去zeit了解详情)
next.js
**以下内容翻译自zeit的博文
next.js是一个轻量的js框架,在React,webpack和Babel的基础上开发,用来开发服务器端渲染的Universal JavaScript应用,本网站就是使用Next.js驱动的。
在一个包含package.json
(注意这个json文件不能为空,至少json的花括号)的目录下开始使用next.js
:
1 | $ npm install next --save |
在pages/index.js
中加入以下内容:
1 | import React from 'react'; |
在package.json
新加一条脚本命令:
1 | { |
然后执行
1 | $ npm run dev |
本文章会介绍项目的设计哲学和设计选择,如果你是想学习如何使用next.js
的话,参考README,在那里你可以在几分钟之内就能了解next.js
的全部功能。
首先我们会介绍这个项目的背景,然后具体阐述六条基本原则:
- 零配置,使用文件系统作为API。
- 只有JavaScript,所有的东西都是一个函数。
- 自动的服务器端渲染和代码分隔。
- 获取数据由开发者决定。
- Anticipation is the key to performance
- 开发简单
背景
多年以来我们一直在追求一个愿景:只用JavaScript就行的Universal JavaScript
的Web应用。Node.js的出现给我们带来了希望,它可以使我们在服务器端和浏览器端共享代码,使全世界的开发者都可以作出更多的贡献。人们做了大量的尝试,使得用Node开发成为现实,出现了一个接一个的模板语言和框架。但是前端和后端还是分离的局面。如果你选择Express和Jade,有一些HTML会由服务器来渲染,然后由另外的一个代码库(如jQuery之类的库)接管。其实这种模式并没有比其他的方法(如PHP)更好一些。总的来说,PHP其实更胜任做服务器端渲染HTML的工作。在async/await之前,用JS做查询数据服务是非常困难的,在reques/response中捕获预防错误也是异常的困难。然而后来出现的一些重要的思想使得我们可以在前后端架起桥梁,其中最重要的就是根据确定的数据返回展示型的界面的函数的引入,这个就是所说的渲染函数。这个模型(由React发扬光大)的意义很重大,但是光靠这种模型并不能事绝大多数的模板系统运转。所以另外一个重要的思想就是组件的生命周期。生命周期钩子使得我们可以处理服务器渲染的延续性,可以从静态的呈现数据开始,然后订阅服务器的实时更新,然后可能会因此更新视图,也有可能不发生任何变化。Next.js
使这种愿景更向前一步。