node js mvc construction
play

Node.js MVC Construction Rabbit.js MVC @ Rabbit.js a fast - PowerPoint PPT Presentation

Node.js MVC Construction Rabbit.js MVC @ Rabbit.js a fast and light mvc framework for Nodejs https://github.com/xinyu198736/Rabbit.js sudo npm install rabbitjs -g FAST LIGHT why use it light


  1. Node.js MVC Construction ⽤甩 Rabbit.js 快速构建 MVC 应⽤甩 @ 芋头君

  2. Rabbit.js a fast and light mvc framework for Nodejs https://github.com/xinyu198736/Rabbit.js sudo npm install rabbitjs -g

  3. FAST LIGHT

  4. why use it ? • light 轻量级,基于常⽤甩的库,快速学习 • fast development 约定⼤夨于配置 , 模式固定 • Multi-Layer Architecture 清晰的分层 • Database agnostic unified API for sql and nosql , base on ORM

  5. Multi-Layer View request Controller Service Model Filters

  6. Hello World sudo npm install rabbitjs -g rabbit create npm install node server.js visit http://localhost:8080

  7. Begin from Model Database 数据库定义 Operation 数据操作 数据定义 ORM BaseModel sequelize mongoose

  8. Mysql(teacher.js) MongoDB(teacher.js) module.exports = { module.exports = { name: String, id: { desc: String, type: "int", age: Number autoIncrement: true, } primaryKey: true }, name: "varchar(255)", desc: "text", age: "int" }; var Teacher = new BaseModel(‘teachers’); var Teacher = new BaseModel(‘teachers’,’mongo’);

  9. Promise 链式操作 var Teacher = new BaseModel('teachers'); where � getAll � // 查询所有,带着条件 offset � getById � Teacher.getAll() limit � getByField � .where({id:{lt:3}}) fields � .o fg set(0).limit(10) update � order .order({id:”desc”}) delete � .fields([‘id','name','age']) count � .done(function(error,teachers){ add � � }) addCount � 抽取原⽣甠 ORM 对象 Teacher.Model

  10. Then Service service 业务的抽象层 组合数据的访问 ⻋轧辆管理类 学⽣甠档案管理类 Keep controller clear 供不同的 controller 复⽤甩 教师管理类

  11. Controllers 请求分发 业务逻辑组合 渲染结果 Base on Express.js

  12. Restfull Auto Render Views Auto generate routes by file structure URL: http://localhost:8080/teacher/add File System: controllers/teacher/index.js module.exports = { ‘/add’:{ get:function(){ return function(req,res,next){ next(); } } } } rabbit controller -n teacher # 创建 controller 模板

  13. Filters 拆散的中间件 middleware preFilter 前置过滤,前置检查 afterFilter 数据格式化,渲染前处理, jsonp 兼容等 globalFilter 全局配置的 filter ,登录检查等

  14. var service_teacher = loadService(‘teacher’); module.exports = { ‘/add’:{ get:function(){ this.userFilter([‘checkLogin’]); this.userAfterFilter([‘jsonp’]); return function(req,res,next){ service_teacher.add(req.query) .done(function(error,teacher){ if(error) next(error); else next(); }); } } } 全局 filter 配置, filter.config.js } module.exports = { ‘/example/.*': { get: ['checkLogin'] } }

  15. Views • 默认 Jade 渲染 • res.render(“teacher/add.jade”) or auto render • 从 res.locals 中取数据。 • app.locals.moment = require(“moment”);

  16. Others Timing tasks 可配置的定时任务系统 ,crontab plugin ⽤甩命令⽣甠成常⽤甩的功能,例如⽤甩户系统,表单验证等 sca fg old 脚⼿扌架,根据 model ⾃臫动⽣甠成增删改查的代码和界⾯靣

  17. Other MVC frameworks Sails.js like ruby on rails ,realtime framework Geddy.js A simple, structured web framework for Node Express.js much more base library , network framework

  18. Thanks

  19. F2E 招聘 芋头君 @ 微博 mier963@ 微信

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend