node.js项目改进之分离控制器
来源:互联网 发布:java中类与对象的关系 编辑:程序博客网 时间:2024/06/04 19:48
分类控制器
控制器的作用
其实最初接触控制器是学习thinkphp的时候,一开始只知道,只要在固定php里面assign,diplay,就能够自动定位到模板渲染,然后输出。控制器的作用就是如此,路由定位到对应的控制器之后,开始走控制器,控制器内写业务逻辑(大程序为了便于维护会单独组织其他model层来处理业务逻辑),处理完所有数据之后渲染视图模板或者直接输出固定格式数据(接口)。
控制器目录
外层新建controller文件夹,存放所有控制器,只有两层或者一层目录层级下只需要把所有控制器放到这里就好了,超过两层可能就要分门别类在控制器内部多创建几层目录以满足需求。
编写控制器文件
这里只写一个小demo,之后会再扩展
controller目录下
controller/index.php
'use strict';const db_users = require('../mobel/db_model/users');const view = require('../app_need/view');var index = {};index.getUsers = async function (ctx, next) { var users = JSON.parse(JSON.stringify(await db_users.findAll())); console.log(users); var v = view.render('index.html', { users:users }); ctx.body = v;}module.exports = index;
对应路由文件
routes/index.js
const router = require('koa-router')();const index=require('../controller/index');router.prefix('/index');router.get('/', index.getUsers);router.get('/haha', function (ctx, next) { ctx.body = '/index/haha';});module.exports = router;
对应模板文件
views/index.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body>{% for user in users %}{{user.name}}:{{user.password}}<br/>{% endfor%}</body></html>
对于模板模块编译符的使用还是看文档比较好,我这写的肯定比不上文档。
这一套流程下来我们就实现了控制器的基本作用,由路由导入开始执行,调度数据库,处理数据,渲染视图,输出。
规范化
- 控制器的名字需要对应路由模块的名字(除了_root和_index)
- 控制器对应方法输出的路径需要加上对应控制器名称的路径(之前一个demo出于方便并没有应该改成index/index.html)
- 相对应的模板也要放到对应的目录下。
最终项目地址:https://github.com/jijuxie/koa2_all.git
0 0
- node.js项目改进之分离控制器
- node.js项目改进之分离logic层确立数据中枢
- node.js项目改进之环境配置
- node.js项目改进之日志系统
- node.js项目改进之View模块改进
- node.js项目改进之改进mysql模块(2)
- node.js项目改进之更新重启nodemon
- node.js项目改进之路由分发系统
- node.js项目改进之restful API接口支持
- node.js项目改进之添加mysql模块驱动(1)
- node.js项目改进之路由分发系统下路由命名
- Node.js项目--流程控制器、控制异步回调利器
- 控制器减负之分离数据源
- node.js之快速搭建koa2项目
- node.js debug模块浅析及改进
- Swift之控制器与业务逻辑分离
- js之轮播再改进
- Node.js 优秀项目
- 每天一个Linux命令(35):cal
- C/C++内存分配与内存分区
- mysql一些总结
- session中Integer cannot be cast to java.lang.String
- 【译】2017年要学习的三个CSS新特性
- node.js项目改进之分离控制器
- 机器学习实战-决策树
- Markdown Test
- 前端开发小技巧
- Hadoop的WordCount实现
- 逻辑思维题
- IntelliJ IDEA——新建项目(模块)或导入项目(模块)
- POJ
- 为什么说全栈工程师是未来?| 长文多图