Node.js--- JavaScript的后端语言
1. 概述
Node.js 是一个跨平台 JavaScript 运行环境,使开发者可以搭建服务器端的 JavaScript 应用程序,可以使用 Node.js 编写服务器端程序(编写数据接口,提供网页资源浏览功能等)
2. 安装指定版本
node-v16.19.0.msi 安装程序(指定版本: 兼容 vue-admin-template 模板)
3. 文件读写(fs模块)
3.1 加载模块
const fs = require('fs') // 导入 fs 模块
3.2 常用方法
1. 写入文件
const fs = require('fs')
const content = "123"
fs.writeFile("../files",content,err=>{
if (err) console.log(err)
else console.log("写入成功")
})
2. 读取文件
const fs = require('fs')
fs.readFile("../files",(err,data)=>{
if (err) console.log(err)
else console.log(data) // data 是文件内容的 Buffer 数据流对象(十六进制)
console.log(data.toString()) // 将数据流转成字符串
})
4. 路径处理(path模块)
4.1 加载模块
const path = require('path') // 导入 path 模块
4.2 常用方法
1. 当前路径(绝对路径)
const path = require('path')
console.log(__dirname) // 当前目录的绝对路径
2. 路径拼接
const path = require('path')
path.join(__dirname,"../test.txt")
5. http通信(http模块)
5.1 加载模块
const http = require('http') // 导入 http 模块
5.2 创建服务
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 创建的 web 服务') // 响应一条消息
})
server.listen(8080,()=>{ // 监听8080端口
console.log("启动成功")
})
5.3 案例
const fs = require('fs')
const path = require("path")
const filePath = path.join(__dirname, "../templates/upload.html")
const http = require('http')
const server = http.createServer() // 创建服务
server.on('request', (req, res) => {
if (req.url === '/index.html') {
fs.readFile(filePath, (err, data) => {
if (err) console.log(err)
else {
// 返回的是 html 超文本,需要设置响应头
res.setHeader('Content-Type', 'text/html;charset=utf-8')
res.end(data.toString())
}
})
}else {
// 返回的是 普通文本,需要设置响应头
res.setHeader('Content-Type', 'text/plain;charset=utf-8')
res.end("你访问的资源不存在")
}
})
server.listen(8980, () => { // 监听8080端口
console.log("启动成功")
})
6. 模块导出 / 导入
6.1 CommonJS 标准
Node.js 默认支持 CommonJS标准语法
1. 导出
const baseURL = 'http://www.baidu.com'
const getArraySum = arr => arr.reduce((sum,val) => sum += val,0)
module.exports = {
url: baseURL,
sum: getArraySum
}
2. 导入
// 内置的模块,直接写模块名,自定义的模块需要写路径
const obj = require("./utils.js")
console.log(obj.url)
console.log(obj.sum([8,6,34,2]))
6.2 ECMAScript 标准
1. 配置
Node.js 默认支持 CommonJS标准语法,如果需要使用 ECMAScript 标准,需要在运行模块所在文件夹新建 package.json 文件,并填写如下配置
{
"type": "module"
}
2. 默认导出
const baseURL = 'http://www.baidu.com'
const getArraySum = arr => arr.reduce((sum,val) => sum += val,0)
export default {
url: baseURL,
sum: getArraySum
}
3. 默认导入 (全部加载)
只要是被默认导出的对象,无论代码中是否使用到,当导入的时候都会加载
import obj from './utils.js'
console.log(obj.url)
console.log(obj.sum([8,6,34,2]))
4. 命名导出
export const baseURL = 'http://www.baidu.com'
export const getArraySum = arr => arr.reduce((sum,val) => sum += val,0)
export const printer = function () {
console.log(1)
}
5. 命名导入 (按需加载)
代码中导入的对象才会加载
import {baseURL,printer} from './utils.js'
console.log(baseURL)
printer()
9. 应用案例
9.1 压缩前端 html 文件
将文件中的内容读到内存,然后把 回车符(\r) 换行符(\n) 去掉,再写入新的 html 文件
const fs = require('fs')
const path = require("path")
const filePath = path.join(__dirname, "../templates/upload.html")
const newFilePath = path.join(__dirname, "../templates/upload2.html")
fs.readFile(filePath, (err, data) => {
if (err) console.log(err)
else {
const htmlStr = data.toString()
const resultStr = htmlStr.replace(/[\r\n]/g, '')
fs.writeFile(newFilePath, resultStr, err => {
if (err) console.log(err)
else console.log("写入文件成功")
})
}
})
python防脱发技巧

浙公网安备 33010602011771号