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 一般与 文件路径 一致, 一般会自动拼接文件路径响应返回
静态资源服务器 : 自动响应返回页面每一个静态资源请求