node.js


node.js

这篇总结了node.js的基本概念与使用,如果公司需要,建议去查相关文档

介绍

是什么?是一个基于谷歌V8引擎的开源的,跨平台的JS运行时环境
作用:让js可以做后端功能
如何运行?打开终端,输入 node js文件路径

前端js与后端js的区别

前端js三部分 ECMAScript ,DOM , BOM
后端js一个部分: ECMAScript

node.js模块化开发

是什么?把一个大文件按照功能拆分为小文件,,再使用特定的语法(模块化语法)组合在一起

优点
1.按需导入,节省内存资源
2.避免全局变量污染,每个模块都是一个独立的作用域
3.业务分离:每个模块只负责某一个功能,便于维护

语法:CommonJS
导出:module.exports = { }
导入:const 对象名 = require(‘文件路径’)

fs模块

作用:读写文件
语法1:读取文件
第一步:导入:const 对象 = require(‘fs’)
第二步:使用:对象.readFile(‘文件路径’,’文件编码’,回调函数)
读取文件的文件编码默认是二进制

const 对象名 = require('fs')  //fs是模块名
对象名.readFile('文件路径','文件编码',(err,data)=>{ //失败与成功
    err?throw error:console.log(data)
})
const fd = require('fs')
fd.readFile('./data/aaa.txt','utf8',(err,data)=>{
    if(err) {
        throw error
    }else {
        console.log(data)
    }
})

语法2:写入文件
第一步:导入:const 对象 = require(‘fs’)
第二步:使用:对象.writeFile(‘文件路径’,’要写入的数据’,’文件编码’,回调函数)
写入文件的文件编码默认是数据编码

//1.导入模块
const fs = require('fs')
//2.使用模块
fs.writeFile('./data/ddd.txt','肾虚哥肾虚了',err=>{
    if(err) {
        throw err
    }else {
        console.log('写入成功')
    }
})

注意

decodeURL() 将乱码转换为原本的样子

path模块

作用:处理路径
导入:const 对象名 = require(‘path’)

常用语法:
拼接绝对路径:path.resolve(‘文件名’) 需要导入path模块
文件夹绝对路径:_ _dirname 不需要导入path模块

http模块

作用:搭建服务器

语法:

//1.导入http模块
const http = require('http')
//2.创建服务器
const app = http.createServer()
//3.开启服务器
app.listen('端口号','主机名(ip地址)',成功的回调)

端口号:识别具体软件的编号
ip地址:每一个电脑在网络中都有一个唯一的身份标识
res.writeHeader(响应码,对象) 改变请求头
res.end(‘显示页面的内容’) 显示页面的内容

示例:

//导入http模块
const http = require('http')
//创建服务器
const app = http.createServer((req,res)=>{
    console.log(req.url)
    if(req.url==='/') {
        res.writeHeader(200,{
            'Content-Type':'text/html;charset=utf8'
        })
        res.end('我是首页')
    }else if(req.url === '/list') {
        res.writeHeader(200,{
            'Content-Type':'text/html;charset=utf8'
        })
        res.end(JSON.stringify({name:'李小2'}))
    }else {
        res.writeHeader(302,{
            'Content-type':'text/html;charset=utf8',
            'location':'http://127.0.0.1:3000'
        })
        res.end()
    }
})
//开启服务器
app.listen(3000,()=>{
    console.log('服务器已开启')
})

综合代码

const http = require('http')
const fs = require('fs')
const app = http.createServer((req,res)=>{
    if(req.url==='/') {
        fs.readFile(
          `${__dirname}/www/index.html`
          ,(err,data)=>{
            if(err) {
                throw err
            } else {
                res.end(data)
            }
        })
    }else{
        fs.readFile(
          `${__dirname}/www/${decodeURI(req.url)}`
          ,(err,data)=>{
            if(err) {
                throw err
            } else {
                res.end(data)
            }
        })
    }
})
app.listen(3000,()=>{
    console.log('服务器已开启')
})

注意

WEB特点01 : html中所有的外部资源(src href)都会变成网络请求
要想HTML页面可以加载静态资源(css、图片、音视频),服务器就需要响应这些文件

WEB特点02 : 静态资源网络请求url 一般与 文件路径 一致, 一般会自动拼接文件路径响应返回
静态资源服务器 : 自动响应返回页面每一个静态资源请求


文章作者: 冷杨威
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 冷杨威 !
  目录
-->