Node.js
作为网工人怎么能不会搭后端呢?
今天就拿 Node.js 下的 Express 搭一个后端
Node.js 是什么东西
你可能没听说过 Node.js
,但是应该听说过 JavaScript
,你也应该知道 Chrome
(谷歌浏览器) 吧
Node.js
是一个基于Chrome V8
引擎的JavaScript
运行环境(Runtime,即运行时)。Node.js
使用了一个事件驱动、非阻塞式I/O
的模型,使其轻量又高效。
简介
Node
是一个让 JavaScript
运行在服务端的开发平台,它让 JavaScript
成为与PHP
、Python
、Perl
、Ruby
等服务端语言平起平坐的脚本语言。它发布于 2009 年 5 月,由 Ryan Dahl 开发,实质是对 Chrome V8 引擎进行了封装(底层调用 C/C++的相关库)。
Node 对一些特殊用例进行优化,提供替代的 API,使得 V8 在非浏览器环境下运行得更好。V8 引擎执行 Javascript 的速度非常快,性能非常好。常用于用于方便地搭建响应速度快、易于扩展的网络应用。Node 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。
Express.js
这是一个基于 Node.js
平台,快速、开放、极简的 Web 开发框架,为 Web 和移动应用程序提供一组强大的功能。其实就是一个 node 下很完善的一个后端框架,在众多 js 后端框架中 Express 是做到大而全的。
为什么选择 Express
首先是因为node
相比 java
下的 spring
,python
下的 django
之类开发效率高。node
平台编程语言还是 js
,对于前端也很友好,即使想要面向对象也有 ECMA6
和 Typescript
可选;还有完善的包管理工具 npm
或者 yarn
;
express 框架非常易于使用,即使没有使用经验也能很快上手。而且其大而全的特性也是功能强大的表现,相关需求的插件很多,使用文档和教程也是不计其数,可以说是各种流行后端框架中最高效最轻量的一个了。
安装
首先假定你已经安装了 Node.js
,接下来为你的应用创建一个目录,然后进入此目录并将其作为当前工作目录。
1 | mkdir myapp |
通过 npm init
命令为你的应用创建一个 package.json
文件。 欲了解 package.json
是如何起作用的,请参考 Specifics of npm’s package.json handling.
1 | npm init |
此命令将要求你输入几个参数,例如此应用的名称和版本。 你可以直接按“回车”键接受大部分默认设置即可,下面这个除外:
1 | entry point: (index.js) |
键入 app.js 或者你所希望的名称,这是当前应用的入口文件。如果你希望采用默认的 index.js 文件名,只需按“回车”键即可。
接下来在 myapp 目录下安装 Express 并将其保存到依赖列表中。如下:
1 | npm install express --save |
如果只是临时安装 Express,不想将它添加到依赖列表中,可执行如下命令:
1 | npm install express --no-save |
npm 5.0+ 版本在默认情况下会将安装的模块添加到
package.json
文件中的dependencies
列表中。对于较老的 npm 版本,你就必须指定--save
参数。然后,照旧执行npm install
命令即可自动安装依赖列表中所列出的所有模块。
示例
最简单的示例
helloworld
1 | var express = require('express') |
甚至可以这样写(ES 6)
1 | // ECMAScript 6 支持了 let, const 关键字、类 class、lambda 表达式、字符串模板(`${}`)、异步关键字async, await、解构赋值、模块的导入(import)和导出(export default/export)、Promise (异步的同步代码)、set和map的实现等好多特性,有时间我会更一期文章讲这个 |
通过 npm 文件名
就可以启动。
请求和响应
Express
应用使用回调函数的参数: request
和 response
对象来处理请求和响应的数据。
处理 GET 请求示例
1 | app.get('/', function(req, res) { |
处理 POST 请求示例
1 | app.post('/', (req, res) => { |
使用命令行生成器
通过应用生成器工具 express-generator
可以快速创建一个应用的基本框架。
1 | # 要求 node.js 版本在 8.2.0 及以上 |
详细信息请看教程