如何使用thinkjs开发一个小系统
thinkjs是一个简单易用,上手迅速的node.js MVC框架。方便的api, 开发起来简单又好用。
##安装thinkjs
npm install thinkjs
更详细信息见thinkjs官网
##修改配置
数据库配置:
修改文件: Conf/config.jswindows下如果使用mysql数据库,推荐使用navicat,可视化数据管理工具
- 引入其他模块,如q框架
www目录下的index.js文件中,require(‘q’);
创建文件夹
Lib下创建:Controller,Model, Service, Dao; View文件夹与Lib并列
- 创建Controller文件夹,Model文件夹,View文件(php常用)
- 创建Controller文件夹,Service文件夹,Dao文件夹(java常用)
全局变量,通用函数
修改文件:App/Common/common.js
变量和函数都挂在global下,如global.strTonJson = function(list){};
, 或者某个对象的原型下,如Date.prototype.format = function(format){};
##注意事项
文件夹名的大小写
windows下不区分文件夹名的大小写,linux下严格区分.比如在controller里有这样一个引用
var accService = require('../../service/AccService');
, 如果service文件夹的命名是Service
,那么在windows下并不会报错,但是在linux环境中会找不到AccService这个文件
部署上线
- 更改配置
- 关闭debug,在www/index.js中(很耗内存,导致app卡死,再重启)
- 连接数据库
- 在Conf/config.js中,将 数据库配置改为线上配置
- 涉及到session,多个服务器之间的一致性
##调试代码
- 安装inspector:
npm install node-inspector -g
- 之后输入命令:
node-debug index.js
,系统会自动打开浏览器,并且到达断点时屏幕右下方会弹出提示,在使用thinkjs时,刚刚启动程序时也会断点一次。
关于Promise
使用promise.all
当需要提前完成二个已上异步操作之后再进行下一步操作时,并且这几个操作之间又无顺序可言,此时,就可以用promise.all来管理。事务,startTrans,commit,rollback
比如需要同时向两张关联表插入数据,如组件表和组件版本表,为了保持数据的一致性,任意一张表插入失败都应判定这次操作是失败的。所以应回滚操作。而用事务就可以很好的解决。api不能满足需求时,自己写sql
要return,就需要从最外层就开始return
否则,拿到的最外层的promise得到的是undefined
可以将经常使用到的一类方法(但不是Action),写在一个类中,之后有需要用到的就继承它即可。
给promise的function一个返回值,reject或resolve的
使用catche捕捉错误。
无论是正确还是错误都给一个返回值,用来提示用户或为下一步的处理程序提供方便