Node.js
1. Node.js安装
安装成功后cmd命令:node -v检测Node.js版本
打开.js文件命令,node 文件名
2. fs模块-读写文件
模块:类似插件,封装了方法/属性
fs模块:封装了与本机文件系统进行交互的,方法/属性
语法:
1.加载fs模块对象
const fs = require('fs') //fs是模块标识符,模块的名字
2.写入文件内容
fs.writeFile('文件路径', '写入内容', err => {
// 写入后的回调函数
})
3.读取文件内容
fs.readFile('文件路径', (err, data) => {
// 读取后的回调函数
// data是文件内容 Buffer 数据流
})
案例:
const fs = require('fs') //fs是模块标识符,模块的名字
fs.writeFile('./tx.txt', '我是Node.js', (err) => {
// 写入后的回调函数
if (err) {
console.log(err);
} else {
console.log('写入成功');
}
})
fs.readFile('./tx.txt', (err, data) => {
// 读取后的回调函数
// data是文件内容 Buffer 数据流
if (err) {
console.log(err);
} else {
console.log(data.toString());
}
})
3. Path路径
解决路径问题:
const path = require('path')
fs.readFile(path.join(__dirname, '../tx.txt'), (err, data) => {
// 读取后的回调函数
// data是文件内容 Buffer 数据流
if (err) {
console.log(err);
} else {
console.log(data.toString());
}
})
4.压缩前端html
步骤:
1.读取源html文件内容
2.正则替换字符串
3.写入到新的html文件中
5. http模块-创建Web服务
需求:创建Web服务并响应内容给浏览器
步骤:
1.加载http模块,创建Web服务对象
2.监听request请求事件,设置响应头和响应体
3.配置端口号并启动Web服务
4.浏览器请求http://localhost:3000测试
const http = require('http')
const server = http.createServer()
server.on('request', (req, res) => {
// 设置响应头:内容类型,普通文本:编码格式为utf-8
res.setHeader('Content-type', 'text/plain;charset-utf-8')
res.end('您好,Node.js')
})
server.listen(3000, () => {
console.log('启动');
})
6.模块化开发
定义:CommonJS模块是为Node.js打包JavaScript代码的原始方式。Node.js还支持浏览器和其他JavaScript运行时使用的ECMAScirpt模块标准。
在Node.js中,每个文件都被视为一个单独的模块。
概念:项目是由多个模块文件组成的
好处:提高代码复用性,按需加载,独立作用域
使用:需要标准语法导出和导入进行使用
6.1 CommonJS标准
需求:定义util.js模块,封装基地址和求总数组和的函数
使用:
1.导出:module.exports={}
const baseURL = 'http://hmajax.itheima.net'
const getArraySum = arr => arr.reduce((sum, val) => sum += val, 0)
module.exports = {
对外属性名1: baseURL,
对外属性名2: getArraySum
}
2.导入:require('模块名或路径')
const obj = reuqire('模块名或路径')
// obj就等于module.exports 导出的对象
6.2 ECMAScript标准-默认导出和导入
默认标准使用:
1.导出exprot default{}
const baseURL = 'http://hmajax.itheima.net'
const getArraySum = arr => arr.reduce((sum, val) => sum += val, 0)
export default = {
对外属性名1: baseURL,
对外属性名2: getArraySum
}
2.导入:import 变量名 from '模块名或路径'
import obj from '模块名或路径'
//obj 就等于export default导出的对象
注意:Node.js默认支持CommonJS标准语法
如需使用ECMAScript标准语法,在运行模块所在文件夹新建package.json文件,并设置{"type":"module"}
7. 包
包的概念
包:将模块,代码,其他资料聚合成一个文件夹
包分类:
项目包:主要用于编写项目和业务逻辑
软件包:封装工具和方法进行使用
要求:根目录中,必须要package.json文件(记录包的清单)
注意:导入软件包时,引入的默认是Index.js模块文件/main属性指定的模块文件
7.1 npm-软件管理包
npm是Node.js标准的软件包管理器。
使用:
1.初始化清单文件:npm init -y
(得到package.json文件,有则略过此命令)
2.下载软件包:npm i 软件包名称
3.使用软件包
7.2 npm-全局软件包nodemon
软件包区别:
本地软件包:当前项目内使用,封装属性和方法,存在于node_modules
全局软件包:本机所有项目使用,封装命令和工具,存在于系统设置的位置
nodemon作用:替代node命令,检测代码更改,自动重启程序
使用:
1.安装:npm i nodemon -g
(-g代表安装到全局环境中)
2运行:nodemon待执行的目标js文件
删除软件包命令:npm uni 软件全名