thinkjs是一个简单易用,上手迅速的node.js MVC框架。方便的api, 开发起来简单又好用。

##安装thinkjs
npm install thinkjs
更详细信息见thinkjs官网

##修改配置

  • 数据库配置:
    修改文件: Conf/config.js

    windows下如果使用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

  1. 使用promise.all
    当需要提前完成二个已上异步操作之后再进行下一步操作时,并且这几个操作之间又无顺序可言,此时,就可以用promise.all来管理。

  2. 事务,startTrans,commit,rollback
    比如需要同时向两张关联表插入数据,如组件表和组件版本表,为了保持数据的一致性,任意一张表插入失败都应判定这次操作是失败的。所以应回滚操作。而用事务就可以很好的解决。

  3. api不能满足需求时,自己写sql

  4. 要return,就需要从最外层就开始return
    否则,拿到的最外层的promise得到的是undefined

  5. 可以将经常使用到的一类方法(但不是Action),写在一个类中,之后有需要用到的就继承它即可。

  6. 给promise的function一个返回值,reject或resolve的

  7. 使用catche捕捉错误。

  8. 无论是正确还是错误都给一个返回值,用来提示用户或为下一步的处理程序提供方便

参考

  1. thinkjs官网
  2. We have a problem with promises