Express是个精炼的框架,但是充满的所有的可能性。
A. 结构
B. 路由
C. 中间件
D. 静态文件
结构
> project name
>bin
>www//程序入口
>middleware
>node_modules
>routers
>views
>app.js //路由配置,中间件配置
>package.json//modules配置文件
>public.zip
>routes.zip
同类文件多放在一个文件夹里,是个不会错的好习惯。
路由
router提供了put,delete,get,post等函数。
router/userRouter.js
var express = require('express');
var router = express.Router();
router.put('/',function(req,res){
req.session//获取session
req.body//获取body
//建议console.log(req)一下,就知道里面都有什么了,对应怎么取
//Multipart 需要配置好上篇文章里提到的 multiparty 库,
//...
var _jsonObject={};
res.status(statusCode).send(_jsonObject);
})
最后结尾
module.exports=router;
在app.js里
var userRouter=require('./routers/userRouter');
app.use('/user',userRouter);
完成路由配置。
中间件
这就是自带的一个小型中间件,利用next
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
小坑,记得解析cookies等中间件需要放在router前面,这样router来路由的时候才能正确取得cookies等数据。
静态文件
app.use(express.static(path.join(__dirname, 'public')));
其他
理解Express的框架以上就可以有个基础的概念了,Node的优势在此,劣势亦是如此,随意性很大。如何写出简介、模块化的JS,才是Node最难的部分。
将数据库读取封装成DAO,把业务逻辑封装成Service,最后路由引用Service,是我的一个做法。
多用编程模式,例如权限的判断,可以写一个小模块,使用工厂模式(可以加入,可以修改,可以退出等)。
等以后经验更足了,会开一篇文章来分享一下我对于美丽的代码的想想。