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环境中。
特性
- 使用ES6/7全部特性来开发项目;
- 支持多种项目结构和多种项目环境;
- 支持Mysql,MongoDB,SQLite等多种数据库;
- 代码自动更新,无需重启Node服务;
- 支持socket.io,SockJS等多种WebSocket库;
- 支持Memory,File,Db,Redis等多种Session;
- 支持Memory,File,Redis,Memcache等多种Cache;
- 支持ejs,jade,swig,numjucks等多种模版引擎;
- 支持切面编程,支持before,after等多种魔术方法;
- 支持自定义400,404,500,503等多种错误页面;
- 支持命令行调用和执行定时任务;
- 丰富的Hook和Middleware;
- 详细的日志,如:请求日志、错误日志、性能日志;
- 支持命令自动创建REST API;
- 支持国际化和多主题;
- 丰富的测试用例,1500+测试用里,代码覆盖率>95%。
安装
- npm install -g thinkjs
创建项目
- thinkjs new project_path --es6
http://www.thinkjs.org/doc/create_project.html
Watch Compile
- cd project_path;
- npm run watch-compile
启动项目
- cd project_path;
- npm start
文档
相关推荐
通过这个包,开发者能够在不离开Atom编辑器的环境下,轻松地进行代码现代化,从而充分利用ES6/7的语法糖,提高代码的可读性和维护性。这尤其适用于那些需要维护大量ES5代码,而又希望逐步过渡到现代JavaScript标准的...
vanilla-es6-jspm, 基于 es6/jspm的应用程序的种子项目,具有完整的生产工作流 vanilla-es6-jspm ES6 在这里,你不能回避它。 我们有很好的工具可以让它工作,其中之一是 jspm 。jspm很棒,但是all-in-one文字生成器...
babel-preset-node6, node 6.x的Babel预设( es6/ES2015 ) node-6.x-预设,用于 6.xnode 6.x 附带 V8 v5.x,它带来了 ~93% 本机 es6/ES2015覆盖。 Babel为 Babel preset尝试使用 Babel Plug-Ins 填补剩下的大部分。...
CMND是一个软件包,可让您使用惯用的ES6语法(节点4+)在Node.js中轻松创建CLI工具。 为每个命令创建关联的手册(帮助)页面也很简单。 该模块最初是为构建的,但可以在任何需要的地方使用。 用法 要使用CMND,请先...
angular2-babel-esnext-starter, 在 Javascript ( es6/ES7 ) 中,Angular 开发和测试示例 Angular ESNext Starter 这个库展示了使用 Angular 开发和测试技术。 应用程序是用现代的Javascript编写的。 这对于那些新的...
在现代前端开发中,Webpack 已经成为了不可或缺的一部分,尤其对于使用 ES6 语法和其他现代化特性的项目更是如此。本教程主要针对 JSDC meetup 设计,旨在帮助初学者理解并掌握 ES6 语言特性、Webpack 的配置与工作...
**Node.js与ES6的支持** ...以上就是Node.js支持ES6的一些核心特性,它们极大地提升了开发效率,减少了代码量,同时也使得Node.js项目更易于理解和维护。在实际开发中,熟练掌握这些特性将有助于提升项目质量。
用于UI开发的前端ES6 +类 这些服务为当今的现代Web应用程序提供了核心功能。 您可以自由使用自己喜欢的任何服务,使用一项或全部使用。 它们是轻量级的,但提供了很大的灵活性。 它们是为在浏览器上运行的前端...
英雄之旅-Vue.js 2.0版此仓库包含使用Vue.js 2.0的Angular 2“英雄之旅”教程应用程序的实现。 https:// angu Heroes Tour-Vue.js 2.0版本此仓库包含使用Vue.js 2.0的Angular 2'Tour of Heroes'教程应用程序的实现...
ES6 节点模块概述使用 ES6 模块符号描述节点模块的元库,带有 es6-es5 转译器。 解析本地导入(来自同一包的模块)和 npm 导入(来自 node 模块依赖项的模块,由 package.json 指定)。用法安装: npm install es6-...
Promise :: ES6-Perl中的ES6风格承诺 概要 use Promise::ES6; # OPTIONAL. And see below for other options. Promise::ES6::use_event('IO::Async', $loop); my $promise = Promise::ES6->new( sub { my ($resolve...
原文链接:...微信小程序支持绝大部分ES6的新增特性。 Co
原文链接:...Class是ES6引入的最重要特性之一。在没有Class之前,我们只能通过原型链来模拟类。 Class Definition(类的定义) class Shape {
虽然目前并不是所有浏览器都能兼容ES6全部特性,但越来越多的程序员在实际项目当中已经开始使用ES6了。所以就算你现在不打算使用ES6,但为了看懂别人的你也该懂点ES6的语法了… 在我们正式讲解ES6语法之前,我们得先...
原文链接:...ES6中的模板字符串(Template String)是一种能在字符串文本中内嵌表达式的字符串字面量(String Literal)。 除了使用反撇号字符 `
不要断网TC39 ES2015:是时候停止改变并发布一些东西了ES7+:标准流程并未反映 JS 的实际发布方式兼容性表: ://kangax.github.io/compat-table/es6/ 巴别塔: : 例子箭头解构默认参数传播对象简写计算属性模板字符...
### ES6从零开始基础+实战项目 #### 一、ES6简介与新特性 ECMAScript 2015(通常称为ES6)是JavaScript的一种标准版本,它引入了许多新特性和改进,使得JavaScript更加现代化和易于编写。在本章节中,我们将详细...
使用 ES6/7 特性来开发项目借助 Babel 编译,可以在项目中大胆使用 ES6/7 所有的特性,无需担心哪些特性当前版本不支持。尤其是使用 async/await 或者 */yield 来解决异步回调的问题。//user controller, home/...
6. **Babel**:由于项目涉及到 ES6/ES7,很可能使用了 Babel 这个转译器,将高级语法转换为浏览器支持的旧版 JavaScript。 7. **Git 版本控制**:项目名称中的 "master" 提示了项目使用 Git 进行版本控制,这对于...