express—使用总结
参考文档:
1、express教程及api : http://www.runoob.com/nodejs/nodejs-express-framework.html
2、express自动生成项目框架-2016 : https://blog.csdn.net/zzwwjjdj1/article/details/51886402 (默认页面模板引擎是jade,想用ejs,使用: express -e xxx)
2、设置 静态文件 路径 : https://blog.csdn.net/qq_34309305/article/details/71552543
var express = require('express'); var app = express(); app.use(express.static('public'));
3、路由:决定由谁(指定脚本)去响应客户端请求
// 主页输出 "Hello World" app.get('/', function (req, res) { console.log("主页 GET 请求"); res.send('Hello GET'); }) // POST 请求 app.post('/', function (req, res) { console.log("主页 POST 请求"); res.send('Hello POST'); }) // /del_user 页面响应 app.get('/del_user', function (req, res) { console.log("/del_user 响应 DELETE 请求"); res.send('删除页面'); }) // /list_user 页面 GET 请求 app.get('/list_user', function (req, res) { console.log("/list_user GET 请求"); res.send('用户列表页面'); }) // 对页面 abcd, abxcd, ab123cd, 等响应 GET 请求 app.get('/ab*cd', function(req, res) { console.log("/ab*cd GET 请求"); res.send('正则匹配'); })
4、创建服务器:
var express = require('express'); var app = express(); var server = app.listen(3000, function() { console.log('Express is listening to http://localhost:3000'); });
5、express脚手架搭建的框架,使用html的设置(默认jade或ejs): 就是加一句改一句。 https://www.cnblogs.com/Leo_wl/p/4361289.html
var app = express(); // view engine setup app.set('views', path.join(__dirname, 'views')); app.engine("html",require("ejs").__express); // or app.engine("html",require("ejs").renderFile); 注:加一句 //app.set("view engine","ejs"); 注:改一句 app.set('view engine', 'html');
6、express中,静态文件的相对路径,是以public 文件夹作为相对路径的。https://segmentfault.com/q/1010000008758245 或 https://blog.csdn.net/MPFLY/article/details/78134980
NodeJS+Express+mySQL服务端开发详解:https://www.cnblogs.com/jj-notes/p/6670310.html 或 https://blog.csdn.net/ppx2017/article/details/80809375(推荐)
1、nodeJS的主流模板----jade和ejs的使用: https://blog.csdn.net/zhanghuiqi205/article/details/78570946
2、express中路由请求的 GET请求 分两种,一种页面的请求(url输入地址)、另一种是ajax请求。
//浏览器url上的请求 router.get('/', function(req, res, next) { res.render('index', { title: 'Express' }); });
// 页面内 ajax 的请求 router.get('/', function(req, res, next) { res.send('respond with a resource'); });
3、如果模板页面,不用渲染(服务器解析模板代码)的话,应该是可以直接使用 res.send()进行发送的。
4、express中路由很重要,因为不管是页面进入,还是api接口都是通过路由和前端进行交互的。(可以说 服务器和前端交互的入口就是路由了)
5、vscode调试 express: https://www.cnblogs.com/klsw/p/7765427.html
6、express中获取url上的参数:
router.get('/token', function(req, res, next) { var signature = req.query.signature,//微信加密签名 echostr = req.query.echostr;//随机字符串 res.send(echostr); });
node+express 后端 架构设计【分层】:
https://blog.csdn.net/lizhen_software/article/details/82744269 或 https://www.cnblogs.com/ficohu/p/5608996.html 或
https://blog.csdn.net/qq_36347686/article/details/84930915 或 https://juejin.cn/post/6844903939293331469【MVC模式构建 l纯后端项目】
一、参考上面的文章,个人使用的 后端分层设计,切片设计,架构设计简要介绍如下:
1、routers文件夹:包含所有的路由数据请求
2、controller文件夹:业务逻辑层,也就是处理好数据。
3、model文件夹:数据访问层也就是从数据库中查数据
4、utils文件夹:包含所有的公共方法和数据返回统一控制方法
二、具体说明:
1、controller文件夹:https://www.jianshu.com/p/67115796ede5
具体处理逻辑应放到 controller 中,然后 router 中设置路径和 controller 的对应关系。
2、DAO层、Service层和Controller层的区别:
https://blog.csdn.net/qq_22771739/article/details/82344336【里面讲的虽然是java的,但是架构思想是一样的】或 其他 或
https://www.imooc.com/wenda/detail/548165
1、Controller层:controller层是做数据格式处理的。对输入的参数 或 service层输出的参数 进行 格式 处理。【接口返回数据格式就是在这里,按约定格式处理好的】
2、Service层:Service层 就是处理业务的。通过dao去访问数据库,查询多张表的数据,合并数据。都是在这里完成的。
3、DAO层: DAO层就是 和数据库打交道的。建议Dao只做原子操作,增删改查。某个dao 和 数据库的某张表一一对应,其中封装了增删改查的操作。