模块化
模块分类:
内置模块,自定义模块 (须要补全门路),第三方模块
require(‘ 加载模块时会执行被加载的代码 ’)
nodejs 模块化具备模块作用域,不能间接拜访被引入模块内的变量
自定义模块中有 module 对象, 可通过 module.exports 能够向外共享成员
自定义模块中有 exports 对象,默认和 module.exports 指向同一对象,
require() 失去的永远是 module.exports
commonjs 标准:
每个模块外部,module 变量代表以后模块
module 变量是一个对象,它的 expor 属性(即 module.exports) 是对外的接口。
require 一个模块,其实是加载该模块的 module.expoorts 属性。
三个内置模块
file 模块
载入模块
let fs=require('fs')
用来读取指定文件中的内容
fs.readFile('./test.text1','utf8',(err,satastr)=>{console.log(satastr)})
用来向指定的文件中写入内容
fs.wirteFile('./file.txt','要写入的 str','能够省略,默认 utf8',(err)=>{})
path 模块
载入模块
let path=requeire('path')
文件所在的门路
console.log(__dirname)
门路拼接
path.join('url 片段 1','URL 片段 2...')
残缺的文件名
path.basename(fpath)
去掉扩展名的文件名
path.basename(fpath,'.html')
文件的扩展名
path.extname(fpath)
http 模块
载入模块
let http=require('http')
创立实例
let server=http.createServer()
为服务器实例绑定 request 事件,监听客户端的申请
server.on('request',function(req,res){
// 客户端申请的 url 地址
console.log(req.url)
// 客户端申请的类型
console.log(req.method)
// 设置响应头: 示例为解决返回中文编码问题
res.setHeader('Content-Type','text/html:charset=utf-8')
// 向客户端返回一些内容并完结本次申请
res.end('欢送拜访')
})
启动服务器
server.listen(80,()=>{console.log('服务器启动了:http://127.0.0.1')})
nodemon
主动重启服务,开发期间批改了代码不须要手动重启
npm install -gnodemon
应用 nodemon filename.js
命令代替 node File.js
命令来启动服务
express
基于 nodejs,疾速,凋谢,极简的 web 开发框架(基于 http 模块)
npm i express@4.17.1
创立并启动一个服务
导入 express
const express = require('express')
创立服务器实例
const app = express()
监听 get 申请
app.get('/user/:id',(req,res)=>{})
监听 post 申请
app.post('/user',(req,res)=>{})
调用 app.listen(端口号,启动胜利后的回调函数)启动服务
app.listen(80,()=>{})
req 申请体与 res 响应体
获取 url 前面用问号拼接的参数,默认是个空对象
console.log(req.query)
获取 url 前面的动静参数(冒号占位),如:127.0.0.1//user/22145
console.log(req.params)
常见申请体内容格局,可间接通过已有中间件后获取
json 格局要通过中间件app.use(express.json())
url-encoded 格局要通过中间件app.use(ecpress.urlexcoded({extended:false}))
console.log(req.body)
可通过 data,end 事件获取其余类型数据,数据量大时可能会触发屡次 data,每次获取残缺数据的一部分
req.on('data',(chunk)=>{console.log('chunk 是本次承受的数据')})
req.on('end',()=>{console.log('数据接管实现了')})
内置 querystring 模块,用来解决查问字符串,通过这个模块的 parse()函数,能够把查问字符串解析成对象格局
const body=require('querystring').parse('str')
响应内容
res.send({name:'悟空',age:18,gender:'男'})
来活了,今天持续码。。。。。