【Node】---- 项目相关
1、准备工作
- npm init -y 初始化,生成package.js
- express -e 生成文件夹
- npm install 依赖加载,让所有模块自动下载
- npm start 服务器挂起
2、前端搭建
- html结构
- css样式
- js基本操作 + ajax请求数据,连接接口(app,js和routes)
3、后端搭建
- bin/www定义端口号以及边界条件的处理;
- app,js创建服务器,使用中间件,定义访问路径,通过app.use返回给前端路径,并连接路由router文件;
- routes:路由,通过router.post/get返回给前端路径,并连接逻辑controller文件;
- controller:逻辑实现,通过req.body/req.query获取前端post/get方式传的值,再通过res.json返回给客户端结果,通过调用model文件数据库增删改查的方法实现逻辑判断;
- model:增删改查操作,需要访问util工具夹连接数据库;
- util:连接数据库
4、MVC模式:架构思想
- M:model层,数据库的增删改查操作;
- V:view层,视图的展示;
- C:controller层,实现业务逻辑;
5、信息加密(md5能解密,sha256不能解密)
- 引入加密模块:const crypto = require("crypto");
- 创建sha256算法:const hash = crypto.createHash("sha256");
- 需要加密的字符串:hash.update(password);
- 对字符串进行加密/加盐:hash.digest("hex");
6、token:实现默认登录
- 安装:npm install jsonwebtoken -S
- 引入:const jwt = require("jsonwebtoken ");
- 设置:let token = jwt.sign({payload 相关信息}, "密钥随机字符", {'expiresln':'1h'}过期时间);
- 种cookie:res.cookie("token", token);
7、图片上传问题
- 思想:ajax只能提交非文件/图片数据,因此可以通过FormData模拟表单提交数据;
- var formData = new formData();
- append: key val; [服务器接受的key值]
- formData.append(key.val); [formData.get()、formData.set()、formData.getAll()]
- 注:node接受formData依赖formidable模块 -- cnpm install formidable -D;
8、路径问题
- 以require所在文件为参照物,则使用相对路径;
- 以其他node路径为参照物,则使用绝对路径;
9、中间层:即一个服务,服务器参照物与服务器之间的调取没有跨域问题
- 解决跨域
- 进行一些逻辑处理,以及数据过滤
- 依赖request
- 安装:cnpm install request -D
- 使用:const requset = require("request");
request("访问地址", (err, responseText, body) {})