凡是可以用 JavaScript 来写的应用,终将都会用 JavaScript 来写。—— Atwood 定律
Node.js 简称"服务端 JavaScript ",是基于谷歌 v8 引擎的 js 运行环境,可以让 JavaScript 在服务器端执行。相比于后端人员,JavaScript 对于前端来说再熟悉不过了,入门还是相对简单的。这章包含的内容如下:
- 安装 Node.js 及相关配置
- 常用的应用模块
- 简易 HTTP 服务器和自定义模块
- 事件驱动
- 常见的状态码
# 安装 Node.js 及相关配置
可从 Node.js 官网,下载对应平台的 Node 版本进行安装,一路完成即可。
完成后在命令行界面输入以下两个命令,检验是否安装成功:
# node -v //查看node版本
# npm -v //查看npm版本
使用 npm 命令安装模块
npm install <Module Name>
你也可以使用 yarn 命令安装模块
yarn add <Module Name>
关于如何安装 Node.js,这里就不赘述了,如果打印报错,请自行百度谷歌。
# 常用的应用模块
Node.js 提供了各种丰富的 JavaScript 模块库(自带的+第三方),极大简化了使用 Node.js 来扩展Web应用程序的开发。
Node Package Manager,简称 npm,是一个基于 Node.js 的包管理器,也是整个 Node.js 社区最流行、支持的第三方模块最多的包管理器。通过 npm,方便直接下载引用第三方发布模块,提高开发效率。
常用内置模块有:
- http
- path
- url
- events
- fs
- crypto加密
- os
- process
# 简易HTTP服务器和自定义模块
Node.js 基于 CommonJS 规范,主要分为模块定义、模块引用和模块标识,但 Node.js 在实现中并非完全按照 CommonJS 规范实现,而是对模块规范进行了一定的取舍。简单记住就是:引入模块用 require,输出模块用 module.exports。
网上有很多教程都会教你把所有的逻辑都放进一个用 Node.js 写的基础 HTTP 服务器里。但是如果我想加入更多的内容,同时还想保持代码的可读性呢?
实际上,只要把不同功能的代码放入不同的模块中,保持代码分离还是相当简单的。
让我们先从服务器模块开始。在项目的根目录下创建一个叫 app.js 的文件,并写入以下代码(记得动手敲起来哦):
const http = require('http');
const url = require('url'); //引用内置模块url
http.createServer(function(req, res) {
res.writeHead(200, {
'Content-Type': 'text/plain'
}); //设置头信息
let pathname = url.parse(req.url).pathname; //把请求网址交给url 对象处理
let bodyStr = ""; //定义一个变量,用来存储要输出的内容
if (pathname === "/") { //如果是首页
bodyStr = 'Hello Uniapp\n';
} else {
bodyStr = 'Happy Uniapp\n'; //如果是其他路径
}
res.end(bodyStr); //输出内容
}).listen(3000); //绑定端口
console.log('Server running at http://localhost:3000/'); //控制台输出提示
