ThinkJS 是一款使用 ES6/7 特性全新开发的 Node.js MVC 框架,使用 ES7 中async/await
,或者 ES6 中的 Generator Function
特性彻底解决了 Node.js 中异步嵌套的问题。同时吸收了国内外众多框架的设计理念和思想,让开发 Node.js 项目更加简单、高效。
使用 ES6/7 特性来开发项目可以大大提高开发效率,是趋势所在。并且新版的 Node.js 对 ES6 特性也有了较好的支持,即使有些特性还没有支持,也可以借助 Babel 编译来支持。
//控制器代码示例, home/controller/user.js
export default class extends think.controller.base {
//login action
async loginAction(self){
//如果是get请求,直接显示登录页面
if(this.isGet()){
return this.display();
}
//这里可以通过post方法获取所有的数据,数据已经在logic里做了校验
let data = this.post();
let md5 = think.md5('think_' + data.pwd);
//用户名和加密后的密码去匹配数据库中对于的条目
let result = await this.model('user').where({name: data.name, pwd: md5}).find();
//如果未匹配到任何数据,表示用户名或者密码错误
if(think.isEmpty(result)){
return this.fail('login fail');
}
//获取到用户信息后,将用户信息写入session
await this.session('userInfo', result);
return this.success();
}
}
项目中可以大胆使用 ES6/7 里的所有特性,借助 Babel 编译,可以稳定运行在 >=0.12.0
的 Node.js 环境中。
npm install -g thinkjs
thinkjs new project_path --es6
http://www.thinkjs.org/doc/create_project.html
cd project_path;
npm run watch-compile
cd project_path;
npm start
扫码关注w3ctech微信公众号
运行 thinkjs new project_path --es6 时报错,提示找不到文件 no such file or directory, open 'C:\Users\MS-WIN10\AppData\Roaming\npm\node_modules\thinkjs\template\nginx.conf'
@zh33gl 刚发布的版本有点小问题,已经更新了。需要更新下 ThinkJS
Node.js v5.0.0 稳定版今天发布,ThinkJS 2.0 也是今天发布,今天是个大喜的日子啊。
支持一下!
自己太渣了,一上午没搞明白,没以前版本的好上手。
@老六 请问用sqlite数据库的话,是每个表都建一个数据库吗? 文件方式需要设置存储 SQLite 数据的目录,默认为 src/common/runtime/sqlite。
export default { type: "sqlite", path: "/path/to/store/sqlite" //设置存储数据文件的目录 } 对应的数据表文件路径为 path + /[name].sqlite,默认情况下 think_user 表对应的文件路径为 src/common/runtime/sqlite/think_user.sqlite。
@zh33gl 文档有问题,已经修改了。
麻烦老大了。明明有这个表的。死活报错 Connect sqlite with sqlite://E:\Project\nms/app/data/nms.sqlite [2015-10-30 16:31:55] [SQL] PRAGMA table_info( devices ) 2ms [2015-10-30 16:31:55] [SQL] SELECT * FROM devices WHERE ( name = 'thinkjs' ) 1ms [2015-10-30 16:31:55] [Error] Error: SQLITE_ERROR: no such table: devices
已找到错误,路径问题。整一天这个了。
请问,rest里如何将资源的id配置为非数字型的(比如guid)?
@zh33gl 你用的是 MongoDB ?
@老六 用的sqlite,要把thinkjs放到ARM上用
@zh33gl 可以直接非数字型的。有问题的话,可以到 Github 上提 issue
赞
支持!!赞!!
牛逼
@卢林 赶紧使用,然后写博客
是否有适配typescript的thinkjs.d.ts文件?
请问支持 Microsoft SQL Server 数据库吗?
试用了下 为什么在controller 定义变量后 在view页面已经引用 但是并不会实时更新?
@jiel 你具体是怎么使用的呢? 加 QQ 群吧: 339337680
@老六 真是不喜欢ThinkPHP式的模块/控件器/方法
路由,太长了
@老六 如果是Laravel式的路由就好了
@weiheli 可以自定义路由呢
@weiheli Laravel 的路由其实就是 ThinkJS 里的自定义路由
@老六 就是view页面(html)有改动不会自动更新,难道是我自己哪里设置的有问题
能不能写个2.0版本的demo看看 新人小白 表示完全不懂啊
thinkjs new project_path --es6 创建目录后 npm install --registry=https://registry.npm.taobao.org --verbose 且安装了依赖
[2016-01-13 15:48:30] [BABEL] compile file common\config\env\production.js error [2016-01-13 15:48:30] [Error] Error: EISDIR: illegal operation on a directory, at Error (native) at Object.fs.readSync (fs.js:603:19)
BABEL 编译失败是什么回事呢?
共收到28条回复