Use full ES2015+ features to develop Node.js applications, Support TypeScript.

Overview

ThinkJS

Use full ES2015+ features to develop Node.js applications, Support TypeScript.

简体中文文档

Installation

npm install -g think-cli

Create Application

thinkjs new demo

Install dependencies

npm install

Start Application

npm start

You will see some messages on console like :

[2017-05-22 15:54:58.281] [INFO] - Server running at http://127.0.0.1:8360
[2017-05-22 15:54:58.283] [INFO] - ThinkJS version: 3.0.0-alpha1
[2017-05-22 15:54:58.283] [INFO] - Environment: development
[2017-05-22 15:54:58.284] [INFO] - Workers: 1

Documentation

https://thinkjs.org/en

License

MIT

Comments
  • Discuss for next ThinkJS Version

    Discuss for next ThinkJS Version

    Need discuss

    • Next big version is 2.3 or 3.0?
    • Deprecate multi module?
    • Deprecate generator function, use async/await directly?
    • Deprecate support TypeScript?
    • Convert http object to context?
    • Based on KoaJS 2.x(can use KoaJS middleware)?
    • Node.js version need >= 4.0 or >= 6.0?

    Confirmed

    • Use ava + nyc to test
    • Remove init method in class, use constructor directly
    • Optimize auto update
    • Refactoring config
    • Remove Support ES5 mode
    • Seperate Adapter from framework, only give a interface in ThinkJS
    • Remove dynamic install package(think.npm)

    Expect your advice

    question 3.x 
    opened by welefen 52
  • ThinkJS 3.0 断点调试

    ThinkJS 3.0 断点调试

    DESC

    thinkjs3.0 beta3 用thinkjs new demo 生成的项目,在webstorm里面点击 调试 development.js 不能启动

    ENV

    development Platform: mac Node.js Version: 8.1.4 ThinkJS Version: 3.0 beta

    bug 3.x 
    opened by guangzhoujason 48
  • 日志配置layouts设置无效

    日志配置layouts设置无效

    DESC

    我设置日志配置layouts,但没有达到预期结果。 按照官网配置 pattern: '%[[%d] [%z] [%p]%] - %m' ,期望的输出应该是:时间 进程id 日志等级 -内容 从打印结果来看我这个配置是没有生效的。 conf log

    ENV

    Platform: Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.43-2+deb8u2 (2017-06-26) x86_64 GNU/Linux

    Node.js Version: v6.11.2

    ThinkJS Version: 3.0

    opened by zhobby 33
  • Sun, 29 Apr 2018 12:20:55 GMT logic deprecated logic's __after method is deprecated, it will be discarded in the next version  at node_modules\_bluebird@3.3.5@bluebird\js\release\util.js:16:23

    Sun, 29 Apr 2018 12:20:55 GMT logic deprecated logic's __after method is deprecated, it will be discarded in the next version at node_modules\[email protected]@bluebird\js\release\util.js:16:23

    DESC

    ENV

    OS Platform:

    Node.js Version: 10.0

    ThinkJS Version:3.2.7

    code

    // your code here
    

    error message

    // your error message here
    

    more description

    // your detail description

    opened by newcomein 28
  • mysql开启连接池后事务操作会被中断,用单连接又有串事务的问题

    mysql开启连接池后事务操作会被中断,用单连接又有串事务的问题

    DESC

    上次发现开启多连接 mysql事务会乱掉之后改用单连接,最近又发现一个硬伤,单连接情况下如果并发请求的话多个事务貌似会串在一起,症状是select for update失效 事务中的查询排他锁用不了 具体操作为事务中 查询某条记录后修改 前面的请求还没commit 后面的请求的查询就开始了

    ENV

    Platform:

    Node.js Version:

    ThinkJS Version:

    bug 
    opened by zengyuhang 23
  • Error: ER_BAD_FIELD_ERROR 字段为空报错

    Error: ER_BAD_FIELD_ERROR 字段为空报错

    1, 我在logic/rule.js 里面都设定了 sort 不是必填项, 代码如下:

    module.exports = class extends think.Logic {
        updateAction() {
            //  只允许 POST 请求类型
            this.allowMethods = 'post';
            // 定义规则
            const rules = {
                sort: {
                    required: false
                }
            };
            // 校验规则
            const flag = this.validate(rules);
            if (!flag) {
                // 通过 this.fail 把错误信息以 JSON 格式输出
                return this.fail('validate error', this.validateErrors);
                // 如果出错,返回
                // {"errno":1000,"errmsg":"validate error","data":{"name":"name can not be blank"}}
            }
        }
    };
    

    2, 但是提交编辑的时候 依然提示错误如下:

    Error: ER_BAD_FIELD_ERROR: Unknown column 'NaN' in 'field list'
    

    3, 我把sort填写上值之后,报错消失!

    4, 请问这是啥情况?

    think-model 
    opened by junmaqiang 22
  • think-model v1.2.2 this.relation 无效

    think-model v1.2.2 this.relation 无效

    DESC

    在Model类的构造函数中加入

    this.relation = {
          chargeStrategy: {
            type: think.Model.BELONG_TO,
            model: 'charge_strategy',
            key: 'chargeStrategyId',
            fKey: 'id',
            relation: false // 不查询关联表的关联关系
          }
        }
    

    然后进行find查询

    let info = await this.where({pileNO}).where({pileIndex}).find()
    

    查询出来的数据并没有关联查询 chargeStrategy

    开发模块开启sql显示,sql也没有做join查询等

    ENV

    OS Platform: deepin linux

    Node.js Version: v9.8.0

    ThinkJS Version: v3.0.0

    think-model Version: v1.2.2

    think-model-mysql Version: v1.0.6

    code

     constructor(...args) {
        super(...args)
    
        this.relation = {
          chargeStrategy: {
            type: think.Model.BELONG_TO,
            model: 'charge_strategy',
            key: 'chargeStrategyId',
            fKey: 'id',
            // relation: false // 不查询关联表的关联关系
          }
        }
    
        // 将端口数据JSON格式化
        this.afterFind = data => {
          data.ports = JSON.parse(data.ports)
    
          return data
        }
    
    
        // 将端口数据JSON格式化
        this.afterSelect = data => {
          for (let item of data) {
            item.ports = JSON.parse(item.ports)
          }
    
          return data
        }
      }
    
    opened by grapewheel 17
  • [利用Mocha测试]如何用Mocha对ThinkJS 3.0进行单元测试

    [利用Mocha测试]如何用Mocha对ThinkJS 3.0进行单元测试

    DESC

    在Thinkjs项目中引入了Mocha进行单元测试。例如对Model的某个方法进行测试,但是启动后提示think is not defined。全部错误如下:

    (function (exports, require, module, __filename, __dirname) { module.exports = class extends think.Model {
                                                                                                 ^
    
    ReferenceError: think is not defined
        at Object.<anonymous> (/***/WebStormPRO/work-day/src/model/record.js:1:94)
        at Module._compile (module.js:569:30)
        at Object.Module._extensions..js (module.js:580:10)
        at Module.load (module.js:503:32)
        at tryModuleLoad (module.js:466:12)
        at Function.Module._load (module.js:458:3)
        at Module.require (module.js:513:17)
        at require (internal/module.js:11:18)
        at Object.<anonymous> (/***/WebStormPRO/work-day/test/model.test.js:5:19)
        at Module._compile (module.js:569:30)
        at Object.Module._extensions..js (module.js:580:10)
        at Module.load (module.js:503:32)
        at tryModuleLoad (module.js:466:12)
        at Function.Module._load (module.js:458:3)
        at Module.require (module.js:513:17)
        at require (internal/module.js:11:18)
        at /***/WebStormPRO/work-day/node_modules/mocha/lib/mocha.js:231:27
        at Array.forEach (native)
        at Mocha.loadFiles (/***/WebStormPRO/work-day/node_modules/mocha/lib/mocha.js:228:14)
        at Mocha.run (/***/WebStormPRO/work-day/node_modules/mocha/lib/mocha.js:514:10)
        at Object.<anonymous> (/***/WebStormPRO/work-day/node_modules/mocha/bin/_mocha:480:18)
        at Module._compile (module.js:569:30)
        at Object.Module._extensions..js (module.js:580:10)
        at Module.load (module.js:503:32)
        at tryModuleLoad (module.js:466:12)
        at Function.Module._load (module.js:458:3)
        at Function.Module.runMain (module.js:605:10)
        at startup (bootstrap_node.js:158:16)
        at bootstrap_node.js:575:3
    

    ENV

    Platform: Mac OS 10.12.3 Node.js Version: 8.2.1 ThinkJS Version: 3.0.0

    testing 
    opened by wurining 17
  • think-mysql 升级到 1.4.0 线上经常卡死

    think-mysql 升级到 1.4.0 线上经常卡死

    DESC

    think-mysql 升级到 1.4.0 线上经常卡死,

    ENV

    OS Platform:

    Node.js Version:

    ThinkJS Version:

    code

    // your code here
    
    

    error message

    // your error message here
    [2019-05-08T00:29:04.997] [ERROR] default - unhandledRejection, times: 1, pid: 31765
    [2019-05-08T00:29:04.997] [ERROR] default - Error: cannot create more connection in transation, use db() to reuse connection!
        at ThinkMysql.getConnection (/www/wwwroot/yyfzx/node_modules/think-mysql/index.js:78:29)
        at debounceInstance.debounce (/www/wwwroot/yyfzx/node_modules/think-mysql/index.js:225:21)
        at Promise.resolve.then (/www/wwwroot/yyfzx/node_modules/think-debounce/index.js:19:16)
    [2019-05-08T00:29:04.997] [ERROR] default - Error: cannot create more connection in transation, use db() to reuse connection!
        at ThinkMysql.getConnection (/www/wwwroot/yyfzx/node_modules/think-mysql/index.js:78:29)
        at debounceInstance.debounce (/www/wwwroot/yyfzx/node_modules/think-mysql/index.js:225:21)
        at Promise.resolve.then (/www/wwwroot/yyfzx/node_modules/think-debounce/index.js:19:16)
    [2019-05-08T00:34:45.043] [ERROR] default - unhandledRejection, times: 2, pid: 31765
    [2019-05-08T00:34:45.043] [ERROR] default - Error: cannot create more connection in transation, use db() to reuse connection!
        at ThinkMysql.getConnection (/www/wwwroot/yyfzx/node_modules/think-mysql/index.js:78:29)
        at debounceInstance.debounce (/www/wwwroot/yyfzx/node_modules/think-mysql/index.js:225:21)
        at Promise.resolve.then (/www/wwwroot/yyfzx/node_modules/think-debounce/index.js:19:16)
    [2019-05-08T00:34:45.043] [ERROR] default - Error: cannot create more connection in transation, use db() to reuse connection!
        at ThinkMysql.getConnection (/www/wwwroot/yyfzx/node_modules/think-mysql/index.js:78:29)
        at debounceInstance.debounce (/www/wwwroot/yyfzx/node_modules/think-mysql/index.js:225:21)
        at Promise.resolve.then (/www/wwwroot/yyfzx/node_modules/think-debounce/index.js:19:16)
    

    more description

    // your detail description

    opened by arterli 16
  • think-session-redis 连接池没有释放?

    think-session-redis 连接池没有释放?

    DESC

    用的 think-session-redis , 当访问数多的时候,redis连接数会持续增长,没有释放,导致连接数超限。

    ENV

    OS Platform: centOs

    Node.js Version: 6.9.1

    ThinkJS Version: 3.1.2

    code

    const redisSession = require('think-session-redis');
    const redisConfig = {
      port: 6379,
      host: xxx,
      password: xxx
    };
    /**
     * session adapter config
     * @type {Object}
     */
    exports.session = {
      type: 'redis',
      common: {
        cookie: {
          name: 'auth'
        },
        ...redisConfig
      },
      redis: {
        handle: redisSession,
        maxAge: 15 * 60 * 1000, //15min
        autoUpdate: true
      }
    };
    

    error message

    # REDIS INFO Clients
    connected_clients:1281 // 一直增加
    client_longest_output_list:0
    client_biggest_input_buf:0
    blocked_clients:0
    

    more description

    // your detail description

    opened by lizhiyang1 15
  • Thinkjs3.x如何写单元测试?

    Thinkjs3.x如何写单元测试?

    DESC

    我在给thinkjs搭建的项目写单元测试的过程中遇到了一些问题:

    1. 使用think.controller提示“think.controller is not a function”
    thinkjs版本:3.2.10
    单元测试工具:ava(参考https://github.com/thinkjs/thinkjs/issues/841 这个issue里面你的回答)
    表现:执行think.controller(‘a/b’)测试该controller是否存在的时候,提示“think.controller is not a function”
    
    2. 使用think.model获取model模块,调用该model下函数的时候提示“model.xxx is not a function”
    thinkjs版本:3.2.10
    单元测试工具:ava(参考https://github.com/thinkjs/thinkjs/issues/841 这个issue里面你的回答)
    表现:调用该model下函数的时候提示“model.xxx is not a function”
    

    ENV

    OS Platform: MacOS Node.js Version: v10.16.0 ThinkJS Version: 3.2.10

    code

    const { expect } = require('chai');
    const it = require('ava');
    const path = require('path');
    
    require(path.join(process.cwd(), 'development.js'));
    
    it('first test', () => {
      const indexController = think.controller('ajax/index');
      expect(indexController).to.be.an('object');
    });
    
    

    error message

    Error: think.controller is not a function
    

    more description

    1. think.model("xxx").fn()方式调用model模块里面函数的时候,提示think.model("xxx").fn is not a function
    2. 只能使用ava来写测试,可否使用mocha或者jest来写thinkjs的单元测试呢?
    3. 使用cli初始化的demo是用mocha写的单元测试,但是thinkjs版本是v2.x,升级到v3.x之后就报错了TypeError: thinkjs.load is not a function
    opened by fanker 14
  • think-logger 最新的1.3.1版本只能保存今天和昨天的日志两个文件

    think-logger 最新的1.3.1版本只能保存今天和昨天的日志两个文件

    DESC

    think-logger 最新的1.3.1版本只能保存今天和昨天的日志两个文件,换成秒级的也是一样的,只能保存最近2个日志文件。1.2.1版没有问题。 请问一下能修复吗?

    ENV

    OS Platform:

    Node.js Version:

    ThinkJS Version:

    code

    // your code here
    

    error message

    // your error message here
    

    more description

    // your detail description

    opened by chylygh 0
  • thinkjs 2.2 websocket无法连接成功

    thinkjs 2.2 websocket无法连接成功

    DESC

    ENV

    OS Platform:win10

    Node.js Version:18.12.0

    ThinkJS Version:2.2.9 错误信息: test.html:1 Access to XMLHttpRequest at 'http://127.0.0.1:8360/socket.io/?EIO=3&transport=polling&t=OH8mmgq' from origin 'http://localhost:63342' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

    sever端配置: export default { on: true, //是否开启 WebSocket type: 'socket.io', //使用的 WebSocket 库类型,默认为 socket.io allow_origin: 'http://127.0.0.1', //允许的 origin adp: undefined, // socket 存储的 adapter,socket.io 下使用 path: '', //url path for websocket messages: { open: 'home/socketio/open', }, }; 客户端:代码: import io from "socket.io-client" const socket = io('http://127.0.0.1:8360');

    function sendOpen(){ //发送事件 socket.emit('open', 'data'); //监听事件 socket.on('open', function(data){ console.log("open call back") }) console.log("open") }

    opened by tanliang2 0
  • 找不到命名空间“think”。

    找不到命名空间“think”。

    DESC

    think找不到命名空间

    ENV

    OS Platform:win10

    Node.js Version:14.0.0

    ThinkJS Version:3.2.11

    code

    import { Context, think } from 'thinkjs';
    
    export default class extends think.Controller {
      constructor(ctx: Context) {
        super(ctx); // 调用父级的 constructor 方法,并把 ctx 传递进去
      }
      __before() {
        // 头部数据处理
        const method = this.method.toLowerCase();
        this.header('Access-Control-Allow-Origin', this.header('origin') || '*');
        this.header(
          'Access-Control-Allow-Headers',
          'Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, Authorization'
        );
        this.header('Access-Control-Allow-Methods', 'GET,POST,OPTIONS,PUT,DELETE');
        this.header('Access-Control-Allow-Credentials', true);
        if (method === 'options') {
          return this.success();
        }
      }
    }
    

    error message

    ![Snipaste_2022-10-18_10-32-44](https://user-images.githubusercontent.com/57247313/196364803-f7cfacbf-6d8f-45f9-9787-0e15ac38e546.png)
    
    

    more description

    // your detail description

    opened by guoqirong 0
  • think-model-mysql jsonFormat 不能去掉双引号

    think-model-mysql jsonFormat 不能去掉双引号

    const field = "name, JSON_EXTRACT(info, '$.age') AS age"; 在我这里这样写不行,必须是下面才行 const field = "name, JSON_EXTRACT(info, '$.age') AS info";

    select(options, cache) { if (!this.config.jsonFormat) { return super.select(options, cache); }

    return Promise.all([
      super.select(options, cache),
      this.schema.getSchema()
    ]).then(([data, schema]) => {
      const keys = Object.keys(schema).filter(key => schema[key].tinyType === 'json');
      (Array.isArray(data) ? data : [data]).forEach(row => {
        keys.filter(key => row[key] !== undefined).forEach(key => {
          row[key] = JSON.parse(row[key]);
        });
      });
      return data;
    });
    

    }

    keys 返回的是 [info] 而 row 里返回的 age:{} keys.filter(key => row[key] !== undefined) row[info] 必然是 undefined。

    opened by studyinhub 1
  • thinkjs3.0 数据库返回字段只有下划线问题,能否设置映射

    thinkjs3.0 数据库返回字段只有下划线问题,能否设置映射

    DESC

    ENV

    OS Platform: mac

    Node.js Version: v14.15.5

    ThinkJS Version: 3.2.10

    code

    // your code here
    

    error message

    // your error message here
    

    more description

    // your detail description

    https://github.com/thinkjs/thinkjs/issues/529

    help wanted 
    opened by handoudou 1
Releases(v3.2.13)
  • v3.2.13(Dec 16, 2020)

  • 2.1.3(Jan 22, 2016)

    Added think.isMaster property. Service class added method model. think.base added method parseModuleFromPath. Fix bug with parsing model default value incorrect. Fix bug when model where condition is string, add another condition will cause error.

    Source code(tar.gz)
    Source code(zip)
  • 2.1.2(Jan 22, 2016)

    Add --allowSyntheticDefaultImports parameters for TypeScript compiling. Fix bug with creating TypeScript project error if file name suffix is not .ts.

    Source code(tar.gz)
    Source code(zip)
  • 2.1.1(Jan 22, 2016)

    Fix bug with database prefix not working. Added support Babel set presets and plugins. Fix bug with multiple hierachy controller can't be found. Added deprected method getTableFields to compatible with former version. Fix bug with baseAssign overrides custom settings. Fix bug with missing think.RUNTIME_PATH cause path incorrect.

    Source code(tar.gz)
    Source code(zip)
  • 2.1.0(Jan 22, 2016)

    Support TypeScript, see details here. Performance increase 90%, better than Koa and express, see benchmark here. Added support Controller sub-folder. Added support PostgreSQL database. Added support set default value in Model schema. Change Hook middleware return null will block the rest middleware. Added alias method render for http and controller display. Added synchronous method think.waterfall. Added support Validate with Regex. Added support transmit data with fetch. Added support Logic to get request type. Added support timed task can directly invoke action. Upgrade Babel to 6. Locale name is not case sensiive. Change to asynchronous fetch template file content. http object no longer inherit from EventEmitter. Drop think.mode_mini mode, controller support sub-folder. Rename name to database in database setting. Rename fields to schema. Rename pwd to password in database setting. Optimize http object creation, no need to copy each time. Filtered hidden file types like .svn, .git etc. Move bin/index.js to src/command.js. Move runtime folder to project root, added think.RUNTIME_PATH constant. Added support to auto lower case adapter type, with prompt. Added thinkData, for frequently-used data caching. Combine think.locale and controller.locale. Fix bug with nunjucks inherit file can't be found. Fix bug with escaped / in pathname cause parsing error. Fix bug with modifying data response by http.file will cause source data being modified. Add support path / no need to change to \ in windows. Fix bug resulting in nunjucks can place template files not only in root folder. Added on production mode, prevent the page from outputting sensitive data. Added on development mode, JSON parse failed message will be logged for debugging. Fix bug resulting in on view root_path changed will also update the view path. Fix bug with incorect required|int rule validation. Fix bug with redis cache parsing settings. Fix bug resulting in REST API can support logic. Fix bug with count method failed when parameter name is keyword.

    Source code(tar.gz)
    Source code(zip)
  • 2.0.16(Jan 22, 2016)

  • 2.0.15(Jan 22, 2016)

  • 2.0.14(Jan 22, 2016)

    Added support MongoDB with multiple host configures. Fix bug with nunjucks root_path setting. Added support on development mode, print the payload parsing error message. Added support when failed to parse payload by JSON, use querystring parsing.

    Source code(tar.gz)
    Source code(zip)
  • 2.0.13(Jan 22, 2016)

    Fix bug with think.parseConfig contains adapter. Fix bug resulting in update relation model also update files relative. Fix use alias in countSelect reports error. Fix bootstrap not being clean and reload on file changed. nunjucks enable autoescape by default.

    Source code(tar.gz)
    Source code(zip)
  • 2.0.12(Jan 16, 2016)

  • 2.0.11(Jan 16, 2016)

    No longer change name to lowercase on parsing configuration Fix save model mapping reports error Fix use SQLite mapping without unique field reports error Fix set cache resulting in incorrect countSelect result Fix validation logic to handle empty conent Fix Session return without completing resulting in not saving Fix think.parallelLimit has memory leak on single task operation

    Source code(tar.gz)
    Source code(zip)
  • 2.0.10(Jan 16, 2016)

    Support Object type data validation format Fix create controller in normal mode reports file content errors Support thinkjs -v to show version number Replace think.co.wrap with think.co Now when calling another action in action, it will auto modify module/controller/action Support entry file to set retainsFile configure Support jade template compile cache in production

    Source code(tar.gz)
    Source code(zip)
  • 2.0.9(Jan 16, 2016)

    Fix change route not refreshing Move think.npm installation path to root, and support --save option Fix when count is 0, countSelect reports an error Fix can't use db session Fix socket start too many connections

    Source code(tar.gz)
    Source code(zip)
  • 2.0.8(Jan 16, 2016)

    Fix tempalte file not refreshing Fix missing dependencies in package.json during set up Fix auto-compile failed to get project env Fix nunjucks template can't set root folder Fix using Babel resulting in errors in module._load on certain platforms

    Source code(tar.gz)
    Source code(zip)
  • 2.0.7(Jan 16, 2016)

    Drop options from view configuration, and should use adapter from now Suppress loading of non-js bootstrap files Add option to install dependencies during set up No longer keep static resource accessing logs Add think.camelCase method Support custom parsing configuration file, add think.parseConfig method Display error page when output Promise Fix Babel occasionally failed Display page compiled errors on current URL Remove source file will also remove the compiled file Fix mini and normal module can't load bootstrap files Fix file session occasionally errors Fix some children file not refreshing on its parent being modified

    Source code(tar.gz)
    Source code(zip)
  • 2.0.6(Jan 16, 2016)

    URL parsed Action name support '-' character Add think.mergeConfig method, auto-merged adapter parameters Configuration like Cache,Session accept adapter config Add think.pallelLimit mehotd,to limit the concorrency number Add auto-compile mechanism, remove 'npm run watch-compile' command Add detection for 'common' module only configuration. Config support parser, Redis、Memcache support distributed config Add think.adapter.base, all 'Adapter' are inherit from this base class Remove options config in view, and use 'adapter' as a substitution Fix change the bae file the parent will not update iit self Fix third party middleware parse payload cause stop execution. Fix if file name contains special character cause the error message could not use uppercase. Fix Session sometimes reports an error Fix can not access resource wihich URL contains Chinese Character Fix static resource Range head not handle properly

    Source code(tar.gz)
    Source code(zip)
  • 2.0.5(Jan 16, 2016)

    Fix Logic rule contains space produces error Improve object structure of Logic rule validation result Rename bootstrap/hook.js to bootstrap/middleware.js during project creation Add config/hook.js during projec creation Babel compile add --retain-lines option, to keep the same code line number after compilation Add auto convert MongoID query string to MongoID object Fix new files not being reloaded Fix think.cache failed to assign object type update module add validation on where query Remove the buildin deny_ip middleware, now it is a seperate module named think-ip-filter middleware Add prerender hook thinkjs add plugin creation command into CLI Fix when environemnt setting is producition or testing, the command can not end itself Add view_filter hook Fix file Session sometimes reports error Note:fix small issues are found during publishment of 2.0

    Source code(tar.gz)
    Source code(zip)
  • 2.0.0(Jan 16, 2016)

    Can use full features of ES6/7 to develop Support different project structure and environment Support rich database like Mysql,MongoDB,SQLite Code auto reload without restarting Node service Support multiple WebSocket library, like socket.io and sockjs Support multiple Session types, like Memory, like File, Db, Redis etc Support multiple Cache, like MemoryFile, Redis,Memcache etc Support multiple template engine, like ejs,jade,swig,numjucks etc Support Aspect Oriented Programming, support methods like __before, __after etc Support error page customization, like 400,404,500,503 etc CLI support invoking action and timer task Rich Hook and Middleware Support detailed logging of all kinds, like request, error and performance logging REST API auto-generated Support internationalization and theming Comprehensive test cases 1500+, with code coverage > 95%

    Source code(tar.gz)
    Source code(zip)
Marble.js - functional reactive Node.js framework for building server-side applications, based on TypeScript and RxJS.

Functional reactive Node.js framework for building server-side applications, based on TypeScript and RxJS. Ecosystem Name Description @marblejs/core F

Marble.js 2.1k Dec 16, 2022
A framework for real-time applications and REST APIs with JavaScript and TypeScript

A framework for real-time applications and REST APIs with JavaScript and TypeScript Feathers is a lightweight web-framework for creating real-time app

Feathers 14.3k Jan 1, 2023
🍔 A Node.js Serverless Framework for front-end/full-stack developers. Build the application for next decade. Works on AWS, Alibaba Cloud, Tencent Cloud and traditional VM/Container. Super easy integrate with React and Vue. 🌈

Midway - 一个面向未来的云端一体 Node.js 框架 English | 简体中文 ?? 欢迎观看 Midway Serverless 2.0 发布会回放: https://www.bilibili.com/video/BV17A411T7Md 《Midway Serverless 发布

Midway.js 6.3k Jan 8, 2023
MVC framework making it easy to write realtime, collaborative applications that run in both Node.js and browsers

Derby The Derby MVC framework makes it easy to write realtime, collaborative applications that run in both Node.js and browsers. Derby includes a powe

DerbyJS 4.7k Dec 23, 2022
A well documented set of tools for building node web applications.

Perk Framework Perk is a well documented set of tools for building node web applications. The goal of Perk is first and foremost to provide a well doc

Aaron Larner 179 Oct 26, 2022
LoopBack makes it easy to build modern API applications that require complex integrations.

LoopBack makes it easy to build modern applications that require complex integrations. Fast, small, powerful, extensible core Generate real APIs with

StrongLoop and IBM API Connect 4.4k Jan 4, 2023
Build Amazon Simple Queue Service (SQS) based applications without the boilerplate

sqs-consumer Build SQS-based applications without the boilerplate. Just define an async function that handles the SQS message processing. Installation

BBC 1.4k Dec 26, 2022
Simple scaffolding for applications that produce SQS messages

sqs-producer Enqueues messages onto a given SQS queue Installation npm install sqs-producer Usage const { Producer } = require('sqs-producer'); // c

BBC 160 Dec 23, 2022
Create GraphQL schema and resolvers with TypeScript, using classes and decorators!

TypeGraphQL Create GraphQL schema and resolvers with TypeScript, using classes and decorators! https://typegraphql.com/ Introduction TypeGraphQL makes

Michał Lytek 7.6k Jan 9, 2023
Fast, unopinionated, minimalist web framework for node.

Fast, unopinionated, minimalist web framework for node. const express = require('express') const app = express() app.get('/', function (req, res) {

null 59.5k Jan 5, 2023
Expressive middleware for node.js using ES2017 async functions

Expressive HTTP middleware framework for node.js to make web applications and APIs more enjoyable to write. Koa's middleware stack flows in a stack-li

Koa.js 33.5k Jan 4, 2023
Realtime MVC Framework for Node.js

Website Get Started Docs News Submit Issue Sails.js is a web framework that makes it easy to build custom, enterprise-grade Node.js apps. It is design

Balderdash 22.4k Dec 31, 2022
🥚 Born to build better enterprise frameworks and apps with Node.js & Koa

Features Built-in Process Management Plugin System Framework Customization Lots of plugins Quickstart Follow the commands listed below. $ mkdir showca

egg 18.3k Dec 29, 2022
Fast and low overhead web framework, for Node.js

An efficient server implies a lower cost of the infrastructure, a better responsiveness under load and happy users. How can you efficiently handle the

Fastify 26k Jan 2, 2023
📦🔐A lightweight private proxy registry build in Node.js

Version 6 (Development branch) Looking for Verdaccio 5? Check branch 5.x. Verdaccio is a simple, zero-config-required local private npm registry. No n

Verdaccio 14.3k Dec 31, 2022
The future of Node.js REST development

restify is a framework, utilizing connect style middleware for building REST APIs. For full details, see http://restify.com Follow restify on Usage Se

restify 10.6k Jan 2, 2023
🚀 The Node.js Framework highly focused on developer ergonomics, stability and confidence

Sponsored by FOSS United is a non-profit foundation that aims at promoting and strengthening the Free and Open Source Software (FOSS) ecosystem in Ind

AdonisJS Framework 13.4k Dec 31, 2022
:rocket: Progressive microservices framework for Node.js

Moleculer Moleculer is a fast, modern and powerful microservices framework for Node.js. It helps you to build efficient, reliable & scalable services.

MoleculerJS 5.5k Jan 4, 2023
Node.js framework

Node.js framework Total.js framework is a framework for Node.js platfrom written in pure JavaScript similar to PHP's Laravel or Python's Django or ASP

Total.js 4.2k Jan 2, 2023