前言
- node.js 是一个 JS 的服务端运行环境,是在 JS 语言规范的基础上,封装了一些服务端的运行时对象,让我们能够简单实现非常多的业务功能。
- 如果我们只使用 JS 的话,实际上只是能进行一些简单的 逻辑运算。node.js 就是基于 JS 语法增加与操作系统之间的交互
版本管理、
- npm 是 node.js 内置的一款工具,目的在于安装和发布符合 node.js 标准的模块,从而实现社区共建的目的繁荣整个社区
- npx 是高版本npm@5 之后新增的一个命令,它使得我们可以在不安装模块到当前环境的前提下,使用一些 cli 功能
npm i -g webpack
//缩写命令 安装全局 webpack
npx webpack
//以上为运行命令,但在依赖或者全局内不存在,会先安装后执行
底层依赖
- V8 引擎: 主要是 JS 语法的解析,有了它才能识别 JS 语法
- libuv: c 语言实现的一个高性能异步非阻塞 IO 库,用 来实现 node.js 的事件循环
- http-parser/llhttp: 底层处理 http 请求,处理报文, 解析请求包等内容
- openssl: 处理加密算法,各种框架运用广泛
- zlib: 处理压缩等内容
常见内置模块
node.js 中最主要的内容,就是实现了一套 CommonJS 的模块化规范,以及内置了一些常⻅的模块
- fs: 文件系统,能够读取写入当前安装系统环境中硬盘的数据
- path: 路径系统,能够处理路径之间的问题
- crypto: 加密相关模块,能够以标准的加密方式对我们的内容进行加解密
- dns: 处理 dns 相关内容,例如我们可以设置 dns 服务器等
- http: 设置一个 http 服务器,发送 http 请求,监听响应等
- readline: 读取 stdin 的一行内容,可以读取、增加、删除我们命令行中的内容
- os: 操作系统层面的一些 api,例如告诉你当前系统类型及一些参数
- vm: 一个专⻔处理沙箱的虚拟机模块,底层主要来调 用 v8 相关 api 进行代码解析
以下搭建本地服务
静态html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>nodeDemo</title>
</head>
<body> <h1>nodeDemo界面</h1> </body>
</html>
在html当前目录创建 serve.js,以下为内容
const http = require('http')
const fs = require('fs')
const url = require('url')
const homeName = '127.0.0.1'
const port = '333'
const server = http.createServer((req,res)=>{
// res.statusCode = 200
// res.setHeader('Content-type','text/plain')
var pathname = url.parse(req.url).pathname;
// 从文件系统中读取请求的文件内容
fs.readFile(pathname.substr(1), function (err, data) {
if (err) {
console.log(err);
// HTTP 状态码: 404 : NOT FOUND
// Content Type: text/html
res.writeHead(404, {'Content-Type': 'text/html'});
}else{
// HTTP 状态码: 200 : OK
// Content Type: text/html
res.writeHead(200, {'Content-Type': 'text/html'});
// 响应文件内容
res.write(data.toString());
}
// 发送响应数据
res.end();
});
// res.end('结束访问')
})
server.listen(port,homeName,_=>{
console.log(`http://${homeName}:${port}`)
})