基于node.js express mvc轻量级框架实践


Posted in Javascript onSeptember 14, 2017

本文记录的是笔者最近抽私下时间给朋友做的一个时时彩自动下注系统,比较简单,主要也是为了学习一下node.js。

其实逻辑没什么可以深谈的,主要是想说说这套代码结构。结构如下图:

基于node.js express mvc轻量级框架实践

js的代码比较难以维护,不清楚大家对于这点是否认同,但这里笔者只说自己的感受,笔者的朋友一开始找到笔者,说玩时时彩,一直盯着玩,会因为贪心会乱来,想做个自动下注系统, 让程序自己玩。一开始,笔者也只想敷衍了事,直接拿node.js+express整了下面这套结构。

基于node.js express mvc轻量级框架实践

基本和express 示例代码没啥两样。但是随着需求的变更,觉得维护起来越来越吃力, 无奈,只能重新来一遍。

这套node.js express mvc代码结构我是学习nodeclub开源项目得来,有兴趣的朋友可以去学习下。简要说明下代码中各部分的意义:

api-------------------> api 逻辑处理层, 一般就是数据的CURD等操作

controllers--------> c端站点,没什么可说的

jobs-----------------> 定时任务工作, 结合node-schedule

logs-----------------> 文件日志

models ------------> mongoose 数据库链接及各实体定义

proxy --------------> 数据库访问方法封装,比如说insert、update

util------------------> 工具js封装,如 DateFormat

views--------------> 页面层,ejs 页面渲染引擎

api_router.js-----> api路由

web_router.js---> web页面路由

app.js-------------> 玩express的都知道这个文件干啥。

笔者为什么这么做? MVC代码分层,虽然代码量无形的增加了,但目的是为了更好的管理,意味着大幅度降低维护成本,利大于弊。

这里顺便提一下 node-schedule pm2 进程管理器 在多进程模式下,会出现重复执行问题,笔者的解决方案是 将web 和 jobs 分多个进程管理器管理。

以上这篇基于node.js express mvc轻量级框架实践就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
子窗口、父窗口和Silverlight之间的相互调用
Aug 16 Javascript
js 动态文字滚动的例子
Jan 17 Javascript
jQuery中对节点进行操作的相关介绍
Apr 16 Javascript
动态加载dtree.js树treeview(示例代码)
Dec 17 Javascript
js上下视差滚动简单实现代码
Mar 07 Javascript
将angular-ui的分页组件封装成指令的方法详解
May 10 Javascript
webpack教程之webpack.config.js配置文件
Jul 05 Javascript
关于Angularjs中跨域设置白名单问题
Apr 17 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
Jun 22 Javascript
微信小程序之onLaunch与onload异步问题详解
Mar 28 Javascript
微信小程序canvas绘制圆角base64图片的实现
Aug 18 Javascript
结合axios对项目中的api请求进行封装操作
Sep 21 Javascript
gulp教程_从入门到项目中快速上手使用方法
Sep 14 #Javascript
利用jsonp与代理服务器方案解决跨域问题
Sep 14 #Javascript
基于js中document.cookie全面解析
Sep 14 #Javascript
基于Vue过渡状态实例讲解
Sep 14 #Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
Sep 14 #Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
Sep 14 #Javascript
Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)
Sep 14 #Javascript
You might like
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
使用PHP生成二维码的方法汇总
2015/07/22 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
2016/10/29 PHP
laravel 获取当前url的别名方法
2019/10/11 PHP
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
关于Javascript与iframe的那些事儿
2013/07/04 Javascript
获取3个数组不重复的值的具体实现
2013/12/30 Javascript
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
2014/08/03 NodeJs
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
2014/09/19 Javascript
实用框架(iframe)操作代码
2014/10/23 Javascript
node.js中的fs.chown方法使用说明
2014/12/16 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
jQuery实现图片上传和裁剪插件Croppie
2015/11/29 Javascript
浅谈bootstrap源码分析之tab(选项卡)
2016/06/06 Javascript
微信小程序tabbar不显示解决办法
2017/06/08 Javascript
mpvue+vant app搭建微信小程序的方法步骤
2019/02/11 Javascript
在VUE中使用lodash的debounce和throttle操作
2020/11/09 Javascript
vue单元格多列合并的实现
2020/11/26 Vue.js
[03:11]不朽宝藏三外观展示
2020/09/18 DOTA
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
Python实现查看系统启动项功能示例
2018/05/10 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
2021/02/22 Python
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
Nixon手表英国官网:美国尼克松手表品牌
2020/02/10 全球购物
delegate与普通函数的区别
2014/01/22 面试题
企业治理工作自我评价
2013/09/26 职场文书
校园奶茶店创业计划书
2014/01/23 职场文书
入党推优材料
2014/06/02 职场文书
应届大学生自荐书
2014/06/17 职场文书
2015年学校禁毒工作总结
2015/05/27 职场文书
红色影片观后感
2015/06/18 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书
Spring Boot mybatis-config 和 log4j 输出sql 日志的方式
2021/07/26 Java/Android
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS
python中mongodb包操作数据库
2022/04/19 Python