node
node的一些基本使用
fs文件系统
在使用fs操作文件时,如果操作路径是以./或../开头的相对路径时,很容易出现路径动态拼接错误的问题。
原因:代码在运行时,会以node命令时所在的目录动态拼接出被操作文件的完整路径。
解决方法:写入完整路径或者__dirname(当前文件所在的目录)
fs.readFile(path[, options], callback )
第一个参数:必选,字符串,表示文件路径
第二个参数:可选,表示以声明编码格式读取文件
第三个参数:必选,文件读取完成后,通过回调函数拿到读取结果
fs.writeFile(file, data[, options], callback) 可创建一个文件,不能创建文件夹,新写入的内容会覆盖之前的内容
第一个参数:必选,需要指定一个文件路径的字符串,表示文件的存放路径
第二个参数:必选,表示要写入的内容
第三个参数:可选,表示以什么格式写入文件内容,默认utf8
第四个参数:必选,文件写入完成后的回调函数
path路径
path.join( ) 可以把多个路径片段拼接为完整路径字符串
path.basename( ) 可以从文件路径中获取文件的名称部分
第一个参数:必选,文件存放的路径
第二个参数:可选,去掉文件后面的部分,可去掉文件的扩展名
path.extname( ) 可以获取路径中的扩展名部分
http
创建基本的web服务
const http = require( ‘http ‘ ) 导入http模块
const server = createServer( ) 创建http服务
server.on(‘request’, (req, res) => { } ) 绑定request事件,监听客户端的请求。req.url是客户端请求的url地址,req.method是客户端的请求类型
res.end( )向客户端发送指定的内容,并结束这次请求的处理过程
解决中文乱码的问题:设置响应头res.setHeader(‘Content-Type’, ‘text/html; charset=utf-8’)
server.listen(端口号, callback ) 启动服务器
module
- 使用require( )方法导入模块时,导入的结果永远以module.exports指向的对象为准
npm 和包
+ npm config get registry 查看当前的下包镜像源
+ npm config set registry=https://registry.npm.taobao.org/ 将下包的镜像源切换为淘宝镜像源
+ nrm ls 查看所有可用的镜像源
+ nrm use taobao 将下包的镜像源切换为taobao镜像
+ npm i i5ting_toc -g
+ I5ting_toc -f 要转化demd文件路径 -o 将md文档转化为html页面
+ npm login 登录发布包
+ npm publish 发布包
+ npm unpublish 包名 --force 可删除已经发布的包
nvm 切换包
express
- app.use(express.json( ))可以解析表单json格式的数据
- app.use(epxress.urlencoded({ extended: false})) 可以解析表单中url-encoded格式的数据
- app.use(express.static( )) 可以快速托管静态资源的内置中间件
- app.use((req, res, next) => { next( ) }) 中间件
web开发模式
服务端渲染的优缺点:
优点:1. 前端耗时少,服务端直接动态生成html内容,浏览器直接渲染页面
2有利于seo,服务端响应的是完整的html页面,爬虫更容易获取信息
缺点:1. 占用服务端资源,服务端完成html页面的拼接,请求过多对服务器造成一 定的访问压力。
2. 不利于前后端分离,开发效率低
前后端分离: 前端用ajax调用接口,后端提供api接口
优点:1. 开发体验好
2.用户体验好,ajax的应用提高了用户的体验,可以轻松实现页面的局部 刷新
3.减轻了服务端的渲染压力
缺点: 不利于seo
cookie
+ 是存储在用户浏览器中的一段不超过4kb的字符串,由name和value和其他几个控制cookie有效期、安全期、使用范围的可选属性组成
+ 不同域名下的cookie各自独立,每当客户端发起请求时,会自动把当前域名所有未过期的cookie一同发送到服务器
+ 特性:1.自动发送 2.域名独立 3.过期时限 4.4kb限制 5.不具有安全性
session(非跨域)
+ app.use( session({secret: '任意字符', resave: false, saveUninitialized: true }))
token(跨域) (JWT认证机制)
+ 由Header、Payload、Signature组成,Payload是真正的用户信息,Header和Signature是安全性相关部分,为了保证Token的安全性
+ jsonwebtoken生成JWT字符串 express-jwt 用于解析JSON对象