前言碎语
今天为大家带来一款基于node的mvc开发框架Think.js,这是由奇虎360奇舞团团队打造的一款轻量的node mvc框架。think的设计借鉴了大部分的thinkphp的思想,开发的时候看项目目录结构以及层次就可以看到thinkphp的影子,所以,如果你有thinkphp的开发经验,使用think开发node应用是so easy的上手。同时,基于think的轻量易用性,作为学习node的入门框架来说,无可挑剔啊。好了,废话不多说,下面补充,think相关的地址,以及简单实例(基于官方)。
推荐get指南===>把用think写的博客源码clong下来(地址如下),跑起来(运行遇坑请在下面评论区留言),然后跟着流程结合官方文档从 页面请求到数据库数据返回跟踪一下,接着消化下node的编码方式,入门开发就差不多了,想要深入的可以看下think的源码以及node的特性
相关地址
think.js源码:https://github.com/75team/thinkjs
think官方文档:https://thinkjs.org/zh-cn/doc/index.html
基于think的博客firekylin源码:https://github.com/75team/firekylin
360奇舞团官方博客:http://www.75team.com/about
Think特性
支持多种项目结构和多种项目环境
项目支持单模块模式、普通模式、分模块模式等多种项目结构,可以满足各种项目复杂度的开发。
默认支持 development,testing 和 prodution 3 种项目环境,可以在不同的项目环境下进行不同的配置,满足在不同环境下的配置需求,同时还可以基于项目需要进行扩展。
支持丰富的数据库
ThinkJS 支持 mysql,mongodb,sqlite 等常见的数据库,并且封装了很多操作数据库的接口,无需手动拼接 SQL 语句,还可以自动防止 SQL 注入等安全漏洞。同时支持事务、关联模型等高级功能。
代码自动更新
ThinkJS 内置了一套代码自动更新的机制,文件修改后立即生效,不用重启 Node.js 服务,也不用借助第三方模块。
自动创建 REST 接口
使用 thinkjs 命令可以自动创建 REST 接口,不用写任何的代码即可完成 REST API 的开发。如果想在 REST 接口中过滤字段或者进行权限校验,也很方便处理。
支持多种 WebSocket 库
ThinkJS 支持 socket.io,sockjs 等常见的 WebSocket 库,并且对这些库进行包装,抹平各个库之间接口调用上的差异,给开发者一致的体验。
丰富的测试用例
ThinkJS 含有 1500+ 的测试用例,代码覆盖率达到 95% ,每一次修改都有对应的测试用例来保障框架功能的稳定。
支持命令行调用执行定时任务
ThinkJS 里的 Action 除了可以响应用户的请求,同时支持在命令行下访问,借助这套机制就可以很方便的执行定时任务。
Hook 和 Middleware
ThinkJS 使用 Hook 和 Middleware 机制,可以灵活的对访问请求进行拦截处理。
详细的日志
ThinkJS 内置了详细的日志功能,可以很方便的查看各种日志,方便追查问题。
快速上手(详情请见官方文档)
安装 ThinkJS,前提是已经有node的环境
通过下面的命令即可安装 ThinkJS:
npm install thinkjs@2 -g --verbose
如果安装很慢的话,可以尝试使用 taobao 的源进行安装。具体如下:
npm install thinkjs@2 -g --registry=https://registry.npm.taobao.org --verbose
安装完成后,可以通过 thinkjs --version 或 thinkjs -V 命令查看安装的版本。
注:如果之前安装过 ThinkJS 1.x 的版本,可能需要将之前的版本删除掉,可以通过 npm uninstall -g thinkjs-cmd 命令删除。
更新 ThinkJS
更新全局的 ThinkJS
执行下面的命令即可更新全局的 ThinkJS:
npm install -g thinkjs@2
更新项目里的 ThinkJS
在项目目录下,执行下面的命令即可更新当前项目的 ThinkJS:
npm install thinkjs@2
使用命令创建项目
ThinkJS 安装完成后,就可以通过下面的命令创建项目:
thinkjs new project_path; #project_path为项目存放的目录
如果想用 ES6 特性来开发项目的话,可以创建一个 ES6 模式的项目,具体如下:
thinkjs new project_path --es; #project_path为项目存放的目录
如果能看见类似下面的输出,表示项目创建成功了:
create : demo/
create : demo/package.json
create : demo/.thinkjsrc
create : demo/nginx.conf
create : demo/README.md
create : demo/www/
create : demo/www/index.js
create : demo/app
create : demo/app/common/runtime
create : demo/app/common/config
create : demo/app/common/config/config.js
create : demo/app/common/config/view.js
create : demo/app/common/config/db.js
...
create : demo/app/home/logic
create : demo/app/home/logic/index.js
create : demo/app/home/view
create : demo/app/home/view/index_index.html
enter path:
$ cd demo/
install dependencies:
$ npm install
run the app:
$ npm start
关于创建项目命令的更多信息,请见 扩展功能 -> ThinkJS 命令。
安装依赖
项目安装后,进入项目目录,执行 npm install 安装依赖,可以使用 taobao 源进行安装。
npm install --registry=https://registry.npm.taobao.org --verbose
编译项目
如果创建项目时加上了 --es6 参数,代码需要编译后才能运行。那么需要先在项目下执行命令 npm run watch-compile ,这样文件有修改后就会自动编译了。
执行命令后会挂起一个进程,注意不要结束这个进程,其他命令可以再新开一个标签页里执行。
注:2.0.6 版本开始内置了自动编译的功能,无需再执行该命令,直接启动服务即可。如果是老项目可以将 ThinkJS 升级到最新版本,然后在文件 www/index.js 加入代码 instance.compile(); 即可(放在 instance.run() 之前)。
启动项目
在项目目录下执行命令 npm start,如果能看到类似下面的内容,表示服务启动成功。
[2015-09-21 20:21:09] [THINK] Server running at http://127.0.0.1:8360/
[2015-09-21 20:21:09] [THINK] ThinkJS Version: 2.0.0
[2015-09-21 20:21:09] [THINK] Cluster Status: closed
[2015-09-21 20:21:09] [THINK] WebSocket Status: closed
[2015-09-21 20:21:09] [THINK] File Auto Reload: true
[2015-09-21 20:21:09] [THINK] App Enviroment: development
访问项目
打开浏览器,访问http://127.0.0.1:8360/即可。
如果是在远程机器,需要通过远程机器的 IP 访问,同时要保证 8360 端口可访问。