问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

设置 Node 开发环境

创作时间:
作者:
@小白创作中心

设置 Node 开发环境

引用
1
来源
1.
https://developer.mozilla.org/zh-CN/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/development_environment

本文将详细介绍如何在Windows、Linux(Ubuntu)和Mac OS X下搭建Node/Express开发环境。Express是一个流行的Web应用框架,使用Node.js作为运行环境。通过本文,你将学习到如何安装Node.js、使用NPM包管理器、以及如何创建和运行一个基本的Express应用。

Express开发环境概述

使用Node和Express搭建Web应用程序开发环境非常简便。这一章节将简述所需的工具,在主流操作系统(Ubuntu、macOS和Windows)上安装Node的步骤,以及测试安装是否成功的方法。

什么是Express开发环境?

完整的Express本地开发环境包括Nodejs、NPM包管理器和Express应用生成器(可选)。

Node和NPM包管理器可以用二进制包、安装程序或系统包管理器一并安装(下文将介绍)。然后在开发每个Express Web应用时,由NPM针对当前应用将Express(以及模板引擎、数据库驱动程序、身份验证中间件、静态文件托管中间件等其他库)作为依赖项进行安装。

NPM也可以安装(全局的)Express应用生成器,可用于创建遵循MVC模式的Express应用框架。它不是必备的,因为无需这个工具就可以创建Express应用(或相同架构布局或依赖的Express应用)。但我们还是会使用它,因为它更容易上手,还有助于应用结构的模块化管理。

备注:与某些其他Web框架不同,开发环境不包含单独的开发Web服务器。在Node/Express中,Web应用程序将创建并运行自己的Web服务器!

典型的开发环境中还需要一些外围工具,包括用于编写代码的文本编辑器或IDE,用于代码控制管理的工具(比如代码版本控制工具Git)。这里假定你已经安装了这些工具(尤其是文本编辑器)。

支持哪些操作系统?

Node可以在Windows、macOS、Linux的诸多发行版本或Docker等环境运行(完整列表见Node下载页面)。几乎所有的个人电脑都具备Node开发所需性能。Express运行在Node环境中,因此可运行Node的平台均可运行Express。

本文将介绍Windows、macOS和Ubuntu Linux上的安装步骤。

应该选择Node/Express的哪个版本?

Node有许多发行版本,新版包含bug修复、对最新版本ECMAScript标准的支持,以及API的改进。

通常应该选择最新的LTS(Long-term supported,长期支持版)发行版,因为它比当前发布版(current)更稳定。当前发布版包含最新的特性(维护中),如果需要LTS版本中没有提供的特征,那么可以选择它。

Express应选用最新版本。

数据库和其他依赖该如何选择?

其他依赖(例如数据库驱动程序、模板引擎、身份认证引擎等)是应用的一部分,使用NPM将其引入到应用环境中。稍后进行讨论。

安装Node

先在操作系统上安装Node.js和NPM后才可使用Express。接下来将介绍如何最简便地在Ubuntu 18.04、macOS Mojave以及Windows 10上安装Node.js最新的LTS版本。

备注:以下内容将介绍在上述三种OS上安装Node和NPM的最简便方法。对于其他操作系统,以及更多的安装方法,可以参考通过包管理器方式安装Node.js(nodejs.org).

Windows和macOS

在Windows和macOS上安装Node和NPM非常简单明了,使用现成的安装包就行了:

  1. 访问https://nodejs.org/zh-cn/
  2. 点击左侧按钮上写着“推荐多数用户使用(LTS)”进行下载。
  3. 双击下载的安装包,按照提示即可安装。

Ubuntu 18.04

安装Node最新的LTS版本的最简便方法就是使用包管理器,可以直接从Ubuntu二进制发行仓库中下载。通过在终端运行以下两行简单的命令就可以做到:

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs

警告:直接从Ubuntu默认仓库中下载的Node是8.x版本的。

测试Node.js和NPM是否安装成功

检查Node是否成功安装的最简单方法就是在终端(或命令行)中运行"version"命令,看是否返回版本号字符串:

$ node -v
v10.15.0

NPM应该与Node.js一同成功安装,可以使用同样的方法来测试一下:

$ npm -v
6.7.0

下面的测试也许会带来小小激动:创建一个非常基础的“纯Node”服务器,在浏览器中访问正确的URL地址时将直接打印“Hello world”:

  1. 以下代码使用了纯Node的特性和一些ES6的语法,把它复制到hellonode.js文件中:
// 加载HTTP模块
const http = require("http");
const hostname = "127.0.0.1";
const port = 3000;

// 创建HTTP服务器
const server = http.createServer((req, res) => {
  // 用HTTP状态码和内容类型(Content-Type)设置HTTP响应头
  res.statusCode = 200;
  res.setHeader("Content-Type", "text/plain");

  // 发送响应体
  res.end("Hello World\n");
});

// 监听3000端口的请求,注册一个回调函数记录监听开始
server.listen(port, hostname, () => {
  console.log(`服务器运行于 http://${hostname}:${port}/`);
});

代码导入了"http"模块,并用它(createServer())创建了一个服务器来监听3000端口的HTTP请求。随后在控制台打印一条信息,提示测试服务器的正确URL。createServer()函数接受一个回调函数作为参数,并在接收HTTP请求后进行回调。直接返回了HTTP状态码200("OK"),以及纯文本信息“Hello World”。

备注:现在看不懂这些代码请不要担心,开始使用Express后候会进行更加详细的解释。

  1. 在命令行工具中进入hellonode.js文件所在的目录,输入“node + 文件名”并运行,服务器就启动了:
node hellonode.js

服务器启动后,你将看到控制台输出,指示服务器正在运行的IP地址:

服务器运行于 http://127.0.0.1:3000/
  1. 在浏览器中访问URLhttp://127.0.0.1:3000,如果一切正常,浏览器会直接显示出“Hello world”字符串。

使用NPM

构建Node应用过程中,NPM是除了Node本身之外最重要的工具。可用于获取应用开发、测试以及生产所需的所有包(JavaScript库)。也可运行开发过程中使用的测试单元和工具。

备注:以Node的角度来看,Express只是一个用NPM安装、供人使用的包而已。

可以用NPM手动逐个安装所需包。但通常可用package.json文件来管理依赖。把每个依赖以一个JavaScript“包”的形式(其中包括名称、版本、描述,初始执行文件、生产依赖,开发依赖、支持的Node版本,等等)罗列在这个文件中。package.json文件包含NPM获取和运行应用程序所需的所有内容(在编写可重用的库时,可以用它把包上传到NPM仓库中供其他用户使用)。

添加依赖项

下面介绍用NPM下载包、将包保存进工程依赖树,以及在Node应用中调用包的方法和步骤。

备注:现在来讲解获取和安装Express包的步骤。稍后解释为什么可以直接对Express包(乃至其他包)使用Express应用生成器。这段对理解NPM的工作原理和应用生成器的工作机制有一定的帮助。

  1. 首先为新应用创建一个目录,并进入它:
mkdir myapp
cd myapp
  1. 然后,使用NPM的init命令为应用创建一个package.json文件。这个命令将请求一系列的信息,包括应用的名称和版本,程序初始进入点的文件名(默认为index.js)。现在先接受默认信息即可:
npm init

package.json文件中保存了所接受的默认信息,最后一条是许可证信息:

{
  "name": "myapp",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}
  1. 接下来在myapp目录中安装Express,用下面的命令将Express保存在package.json文件中的依赖表里:
npm install express

此时package.json文件的底部会出现依赖列表(dependency),其中包含Express:

{
  "name": "myapp",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.16.4"
  }
}
  1. 可以调用require()函数来使用库:
const express = require("express");
const app = express();
const port = 3000;

app.get("/", (req, res) => {
  res.send("Hello World!");
});

app.listen(port, () => {
  console.log(`示例程序正在监听 ${port} 端口!`);
});

以上代码展示了一个最简单的“HelloWorld”Express应用。它导入了“express”模块并用它创建了一个服务器(app)来监听3000端口,并且在控制台打印了一条信息以提示测试服务器的正确URL。app.get()函数只响应对特定路径('/')的HTTPGET请求,此处的响应就是发送“Hello World!”。

在myapp应用的根目录下新建一个index.js文件,将上述代码粘贴进来并保存。

  1. 你可以通过在命令提示符中使用脚本调用node来启动服务器:
node index.js

你将会看到以下控制台输出:

示例程序正在监听3000端口!
  1. 在浏览器中访问这个URLhttp://127.0.0.1:3000,如果一切正常,浏览器会直接显示出“Hello world!”字符串。

开发依赖

如果一个依赖只在开发过程中用到,应该将其保存为“开发依赖”(这样,包的用户便无需在生产环境中安装它们)。比如,如果要使用eslint(一款流行的JavaScript lint工具)可以这样调用NPM:

npm install eslint --save-dev

当前应用的package.json文件中将自动添加以下项目:

  "devDependencies": {
    "eslint": "^5.12.0"
  }

备注:“lint”是用于对软件进行静态分析的工具,可以发现并报告软件是否遵循某些最佳编程惯例。

运行任务

package.json中,除了定义和获取依赖,还可以定义脚本,然后通过NPM的run-script命令来运行。这个用法普遍用于自动运行测试单元或部分应用,也可用于构建工具链(比如运行工具来压缩JavaScript文件或图片,lint或分析代码,等等)。

备注:Gulp和Grunt等任务运行器可用于运行测试单元或其他外部工具。

比如,可以在package.json文件中添加以下内容来定义一个脚本,从而对上文的代码运行eslint(假设应用代码在/src/js文件夹下):

"scripts": {
  ...
  "lint": "eslint src/js"
  ...
}

深入解释一下,eslint src/js命令可以在终端/命令行对应用目录下的src/js目录中的JavaScript文件运行eslint。把上面一段脚本添加进应用的package.json中还可以为此命令提供一个快捷方式——lint。

然后就可以用NPM这样运行eslint了:

npm run-script lint

或使用别名:

npm run lint

这个示例看上去并没有让原始命令简洁多少,但在NPM脚本中可以加入更长的命令,甚至是多命令链。比如可以让单一的NPM脚本来一次运行所有的测试单元。

安装Express应用生成器

Express应用生成器工具可以生成一个Express应用的“框架”。可以用NPM这样安装它(-g参数可以把该工具全局安装,那样就可以在任意应用中使用了):

npm install express-generator -g

进入应用目录,运行以下命令,即可创建一个名为"helloworld"的Express应用:

express helloworld

备注:也可以指定模板库来使用其他丰富的设置。可通过help命令来查看所有选项:

express --help

NPM将在当前位置的子目录中创建新的Express应用,可以在控制台看到构建的过程。在完成时,NPM会提示你需要安装哪些Node依赖,以及如何开启应用。

备注:新应用的根目录有一个package.json文件。可以打开它看看都安装了哪些依赖,其中可以看到Express和Jade模板库:

{
  "name": "helloworld",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.3",
    "debug": "~2.6.9",
    "express": "~4.16.0",
    "http-errors": "~1.6.2",
    "jade": "~1.11.0",
    "morgan": "~1.9.0"
  }
}

用下列命令可为helloworld应用安装所有依赖:

cd helloworld
npm install

然后运行这个应用(Windows环境):

> SET DEBUG=helloworld:* & npm start

(Linux/macOS环境):

DEBUG=helloworld:* npm start

DEBUG命令可以展示应用运行时返回的有用的日志信息,如下所示:

打开浏览器并访问http://127.0.0.1:3000将看到Express的默认欢迎页面。

稍后在创建应用框架一节中将讨论生成应用的具体细节。

小结

现在Node开发环境已经配置好了,可以用于创建Express应用了。你还了解了用NPM导入Express的步骤,以及如何创建(使用Express应用生成器)和运行Web应用。

下一节将开始用上述的环境和工具通过实战逐步搭建一个完整的Web应用。

参见

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号