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("写入文件成功")
        })
    }
})
posted @ 2024-06-12 15:15  河图s  阅读(89)  评论(0)    收藏  举报