express router
用express框架如何实现前后端分离?
此前学习node.js期间follow了这个github项目:N-blog
基于这个版本做了一些改进,
譬如:页面样式的美化、登录支持多种方式、更新文章同时支持更新多个字段等。
详情可以查看我这个版本:(https://github.com/huluoyang/N-blog)
写这个博客项目是我第一次实战node.js,中途也遇到一些坑。
有些是express版本升级导致api变动导致,有些是我对node.js不够熟悉导致。
学习时都是按照别人写好的方法来做,做完后却觉得此前的实现不优雅,有太多限制。
N-blog项目前后端耦合得很紧,但如果我想做的是一个单页应用呢?
之前一直都是用express的res.render()方法来渲染视图,虽然功能已实现,
但一直想前后端分离,想用ajax来访问后端接口,根据返回数据由前端来渲染视图。
当用router.post(“/login”)来接收form表单提交没问题,用ajax提交却遇到拒绝请求这个问题。
实在很不解,查阅资料后发现express4.0后router成了一个单独的组件,有自己独立而且强大的route方法。
表单页面访问用router.get(“/login”),
表单页面默认提交用router.post(“/login”),
表单页面ajax获取数据用router.route(“/login”).get()。
表单页面ajax提交数据用router.route(“/login”).post(),
简单理解:
router是express的一个单独组件,
route是router组件提供的方法,
这个方法的强大之处是可以自定义接口,实现前后端分离。