node.js是一个基于Chrome V8引擎的Js代码运行环境
Node.js运行环境安装
- 选择系统对应的LTS稳定版 双击安装包,安装目录不能有中文
- 打开系统命令行工具,输入node -v,若显示版本信息则安装成功
Node.js组成
js由ECMAScript DOM BOM组成
Node.js由ECMAScript及Node环境提供的一些附加API组成的,包括文件、网络、路径等一些更强大的API
Node.js基础语法
所有ECMAScript语法在Node.js中都可以使用
Niode.js模块化开发
node.js规定一个js文件就是一个模块,模块内部定义的变量和函数默认情况下在外部无法得到,模块内部可以使用exports对象进行成员导出,使用require导入其他模块
1.我们新建一个a.js
const add = (n1, n2) => n1 + n2;
// exports.add = add;
module.exports.add = add;
2.再创建一个b.js
const b = require("./a.js");
console.log(b.add(1, 2));
3.通过在b.js文件夹下打开命令行工具,输入node ./b.js
结果输出3
exports是module.exports的别名(地址引用关系),导出对象最终以module.exports为准
系统模块
Node运行环境提供的API为系统模块
文件模块fs
const fs=require(‘fs’);
1.读取文件
fs.readFile(‘文件路径/文件名称’[,‘文件编码’],callback);
[]表示可选参数
实例:
const fs = require('fs');
fs.readFile("./a.js", 'utf-8', (err, doc) => {
//如果文件读取发生错误,参数err的值为错误对象,否则err的值为null
//doc参数为文件内容
if (err == null) {
console.log(doc);
}else{
console.log(err);
return;
}
});
2.写入文件
fs.writeFile(‘文件路径/文件名称’,‘数据’,callback);
实例:
const fs = require('fs');
fs.writeFile("./a.txt", "abcdefg", err => {
if (err != null) {
console.log(err);
return;
} else {
console.log('文件写入成功');
}
});
路径模块path
1.路径拼接
不同操作系统的路径分隔符不统一
windows上是\ /
linux是/
path.join(‘路径’,‘路径’,……)
实例:
const path = require('path');
let finialPath = path.join('c:', 'public', 'a', 'a.js');
console.log(finialPath);
结果:c:\public\a\a.js
相对路径和绝对路径问题
大多数情况下使用绝对路径,因为相对路径有时候相对的是命令行工具的当前工作目录,在读取文件或者设置文件路径时都会选择绝对路径
使用__dir__获取当前文件所在的绝对路径
第三方模块
1.以js文件形式存在,提供实现项目具体功能的API接口
2.以命令行工具形式存在,辅助项目开发
全局安装与本地安装
命令行工具:全局安装
库文件:本地安装
npm(node package manager):node第三方模块管理工具
下载 :npm install 模块名称
下载的模块被放到当前命令行工作目录的node_modules文件夹下
删除:npm uninstall 模块名称
nodemon(命令行工具)
监控到保存文件后重新执行该文件
使用步骤:
- npm install nodemon -g
- 在命令行工具中使用nodemon命令代替node命令
nrm(下载地址切换工具)
使用步骤:
- 下载nrm:npm install nrm -g
- 查询可用的下载地址列表:nrm ls
- 切换下载地址:nrm use 下载地址名称
Gulp(前端构建工具)
将机械化操作编写成任务,想要执行机械化操作时执行一个命令行命令任务就能自动执行
作用:
项目上线,HTML\CSS\JS文件压缩合并
语法转换(ES6、less)
公共文件抽离
修改文件浏览器自动刷新
使用:
- npm install gulp 在项目下建立gulpfile.js文件
- 重构项目的文件夹结构src目录放置源代码文件
- dist目录放置构建后的文件
- 在gulpfile.js文件中编写任务
- 在命令行工具中执行gulp任务
package.json(项目描述文件)
记录了当前项目信息,例如项目名称、版本、作者、github地址、当前项目依赖了哪些第三方模块等,使用npm init -y命令生成。
使用npm install下载项目所需模块
开发依赖使用 npm install 包名–save-dev下载,将其添加到package.json文件的devDependencies字段中
创建web服务器
//引用系统模块
const http = require('http');
//创建web服务器
const app = http.createServer();
//当客户端发送请求的时候
app.on('request', (req, res) => {
//响应
res.end('<h1>Hello World!</h1>');
});
//监听4000端口
app.listen(4000);
console.log('服务器启动成功,请访问localhost:4000');