0%

now和next简介

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
2
$ mkdir my-project
$ cd my-project

项目必要有一个package.json或者Dockerfile文件,并且必须在文件中执行一个start的脚本命令:

1
2
3
4
5
6
7
8
9
10
{
"name": "my-project",
"version": "0.1.0",
"dependencies": {
"express": "4.13.4"
},
"scripts": {
"start": "node index.js"
}
}

本例中index.js的内容如下:

1
2
3
4
5
const app = require('express')();
app.get('/', (req, res) => {
res.send('Welcome');
});
app.listen();

注意: 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
2
$ npm install next --save
$ mkdir pages

pages/index.js中加入以下内容:

1
2
import React from 'react';
export default () => <div>Hello world!</div>

package.json新加一条脚本命令:

1
2
3
4
5
{
"scripts": {
"dev": "next"
}
}

然后执行

1
$ npm run dev

本文章会介绍项目的设计哲学和设计选择,如果你是想学习如何使用next.js的话,参考README,在那里你可以在几分钟之内就能了解next.js的全部功能。
首先我们会介绍这个项目的背景,然后具体阐述六条基本原则:

  1. 零配置,使用文件系统作为API。
  2. 只有JavaScript,所有的东西都是一个函数。
  3. 自动的服务器端渲染和代码分隔。
  4. 获取数据由开发者决定。
  5. Anticipation is the key to performance
  6. 开发简单

背景

多年以来我们一直在追求一个愿景:只用JavaScript就行的Universal JavaScript的Web应用。Node.js的出现给我们带来了希望,它可以使我们在服务器端和浏览器端共享代码,使全世界的开发者都可以作出更多的贡献。人们做了大量的尝试,使得用Node开发成为现实,出现了一个接一个的模板语言和框架。但是前端和后端还是分离的局面。如果你选择Express和Jade,有一些HTML会由服务器来渲染,然后由另外的一个代码库(如jQuery之类的库)接管。其实这种模式并没有比其他的方法(如PHP)更好一些。总的来说,PHP其实更胜任做服务器端渲染HTML的工作。在async/await之前,用JS做查询数据服务是非常困难的,在reques/response中捕获预防错误也是异常的困难。然而后来出现的一些重要的思想使得我们可以在前后端架起桥梁,其中最重要的就是根据确定的数据返回展示型的界面的函数的引入,这个就是所说的渲染函数。这个模型(由React发扬光大)的意义很重大,但是光靠这种模型并不能事绝大多数的模板系统运转。所以另外一个重要的思想就是组件的生命周期。生命周期钩子使得我们可以处理服务器渲染的延续性,可以从静态的呈现数据开始,然后订阅服务器的实时更新,然后可能会因此更新视图,也有可能不发生任何变化。
Next.js使这种愿景更向前一步。

零配置,使用文件系统作为API