基于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 相关文章推荐
JavaScript 加号(+)运算符号
Dec 06 Javascript
javascript两种function的定义介绍及区别说明
May 02 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
May 11 Javascript
加载列表时jquery获取ul中第一个li的属性
Nov 02 Javascript
Javascript中的getUTCHours()方法使用详解
Jun 10 Javascript
JS脚本实现动态给标签控件添加事件的方法
Jun 02 Javascript
JavaScript手风琴页面制作
May 17 Javascript
Vue 组件封装 并使用 NPM 发布的教程
Sep 30 Javascript
详解vuex之store源码简单解析
Jun 13 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
Nov 06 Javascript
JavaScript队列结构Queue实现过程解析
Mar 07 Javascript
vue-cli3自动消除console.log()的调试信息方式
Oct 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
PHP 动态生成静态HTML页面示例代码
2014/01/15 PHP
PHP打开和关闭文件操作函数总结
2014/11/18 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
IE php关于强制下载文件的代码
2008/08/23 Javascript
学习面向对象之面向对象的基本概念:对象和其他基本要素
2010/11/30 Javascript
window.event.keyCode兼容IE和Firefox实现js代码
2013/05/30 Javascript
通过url查找a元素并点击
2014/04/09 Javascript
基于javascript实现的搜索时自动提示功能
2014/12/26 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
jquery实现图片预加载
2015/12/25 Javascript
jqGrid用法汇总(全经典)
2016/06/28 Javascript
jQuery Raty 一款不错的星级评分插件
2016/08/24 Javascript
微信小程序 网络请求(post请求,get请求)
2017/01/17 Javascript
layui选项卡效果实现代码
2017/05/19 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
2017/06/16 Javascript
使用jQuery实现页面定时弹出广告效果
2017/08/24 jQuery
[44:40]Serenity vs Pain 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python中的类学习笔记
2014/09/23 Python
使用Python的Zato发送AMQP消息的教程
2015/04/16 Python
Python中获取对象信息的方法
2015/04/27 Python
Python利用openpyxl库遍历Sheet的实例
2018/05/03 Python
Pycharm更换python解释器的方法
2018/10/29 Python
详解python中的hashlib模块的使用
2019/04/22 Python
python pycharm的安装及其使用
2019/10/11 Python
关于Python3 lambda函数的深入浅出
2019/11/27 Python
python_mask_array的用法
2020/02/18 Python
采用冷却技术的超自然舒适度:GhostBed床垫
2018/09/18 全球购物
荷兰浴室和卫浴网上商店:Badkamerxxl.nl
2020/10/06 全球购物
小学英语教学反思案例
2014/02/04 职场文书
目标责任书范文
2014/04/14 职场文书
同志主要表现材料
2014/08/21 职场文书
2016八一建军节慰问信
2015/11/30 职场文书
Redis延迟队列和分布式延迟队列的简答实现
2021/05/13 Redis
MYSQL 无法识别中文的永久解决方法
2021/06/03 MySQL
MySQL和Oracle批量插入SQL的通用写法示例
2021/11/17 MySQL