ThinkJS

基于Promise的Node.js MVC框架
授权协议 MIT
开发语言 JavaScript HTML/CSS
所属分类 Web应用开发、 Node.js 扩展
软件类型 开源软件
地区 国产
投 递 者 薄伟彦
操作系统 跨平台
开源组织 360
适用人群 未知
 软件概览

ThinkJS 是一个快速、简单的基于MVC和面向对象的轻量级Node.js开发框架,遵循MIT协议发布。秉承简洁易用的设计原则,在保持出色的性能和至简的代码同时,注重开发体验和易用性,为WEB应用开发提供强有力的支持。

thinkjs里面很多特性来源于ThinkPHP,同时根据Node.js的特点,使用了Promise, WebSocket等特性,让代码更简洁、优雅。

使用 ES6/7 特性来开发项目

借助 Babel 编译,可以在项目中大胆使用 ES6/7 所有的特性,无需担心哪些特性当前版本不支持。尤其是使用 async/await 或者 */yield 来解决异步回调的问题。

//user controller, 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();
  }
}
  • 系列文章目录 Python搭建自己的基金查看管理Web项目(一) Python搭建自己的基金查看管理Web项目(二) Python搭建自己的基金查看管理Web项目(添加预览历史数据功能) Python搭建自己的基金查看管理Web项目(实现前后端分离) Python搭建自己的基金查看管理Web项目(实现高低点提醒) 前言 之前用python作为后台API的提供语言使用了一段时间之后开发起来不是很舒服

  • thinkjs 入门 安装 npm install -g thinkjs-cmd 查看是否安装成功 thinkjs -v 新建项目 mkdir new_dir_name; cd new_dir_name; thinkjs . //正常到这里会自动打开浏览器页面访问项目 手动启动 node www\index.js 配置 thinkjs的配置有很多,系统默认配置 -> 应用配置 -> 调试配置 ->

  • thinkjs 命令 以全局模式安装 thinkjs 模块后,系统下就会有 thinkjs 命令,在终端执行 thinkjs -h 可以看到详细介绍。 Usage: thinkjs [command] Commands: new create project module add module controller add controller service add service model

  • 一.简介 这个个人博客网站最初制作的目的就是练习使用thinkJs,这一篇就主要讲一下thinkJs的一些特性和注意事项。涉及到了文件上传,thinkJs的插件机制,model层建立以及CURD的编写方式等。本项目github地址在这里。 项目thinkJs端主要参考了知乎上大佬Ischo的文章,链接在这。 二.thinkJs model层写法 这里主要讲两个部分,一是表对应的js文件,二是CRU

  • 此文介绍使用 thinkjs 如何获取前端的请求参数。 笔者使用环境: 服务端:thinkjs 前端:react 请求:umi-request 服务端对前端请求进行校验 文件目录: src/logic/user.js 请确保logic的目录和controller目录结构一致 module.exports = class extends think.Logic { checkTools(rules

  • 注:如果安装npm后执行命令发现很慢,可以用下面这行改为国内镜像 npm config set registry http://registry.npm.taobao.org 根据官网直接执行安装命令 npm install -g think-cli 报以下错误 -bash: node: command not found 执行下面两句安装nodejs udo yum install epel-

  • Node 端使用 $ npm install nunjucks 0 $npminstallnunjucks 下载后可直接 require('nunjucks') 使用 浏览器端使用 可直接使用 nunjucks.js (min),如果针对编译后的模板可使用 nunjucks-slim.js (min)。 你应该使用哪个文件 nunjucks.js 可用于动态加载模板,当模板变化时重新加载,也可以用

  • 前言 我们的项目是基于 ThinkJS + Vue 开发的,最近实现了一个多端实时同步数据的功能,所以想写一篇文章来介绍下如何在 ThinkJS 的项目中利用 WebSocket 实现多端的实时通信。ThinkJS 是基于 Koa 2 开发的企业级 Node.js 服务端框架,文章中会从零开始实现一个简单的聊天室,希望读者们能有所收获。 WebSocket WebSocket 是 HTML5 中提

  •         很多朋友喜欢用nodejs语言编写服务器程序,因此国产thinkjs架构应用也比较广泛,使用 Docker 部署 ThinkJS 相关的项目,因此仍是拿出来讲说吧。须要提早说明的是本文并非 Docker 的基础教程,默认你们都是了解 Docker 的。为 ThinkJS 项目构建和部署过程当中可能须要注意的点,咱们先说说如何构建镜像,而后再说一下可能出现的问题。 构建镜像 基础镜像

 相关资料
  • pbgo是我们专门针对本节内容设计的较为完整的迷你框架,它基于Protobuf的扩展语法,通过插件自动生成rpc和rest相关代码。在本章第二节我们已经展示过如何定制一个Protobuf代码生成插件,并生成了rpc部分的代码。在本节我们将重点讲述pbgo中和Protobuf扩展语法相关的rest部分的工作原理。 4.7.1 Protobuf扩展语法 目前Protobuf相关的很多开源项目都使用到了

  • 问题内容: 在运行基于新项目的项目后,我无法清理它-生成的人员仍在下面, 我如何成功清理它? 问题答案: 参见http://www.playframework.org/documentation/2.0/PlayConsole

  • 本文向大家介绍基于NIO的Netty网络框架(详解),包括了基于NIO的Netty网络框架(详解)的使用技巧和注意事项,需要的朋友参考一下 Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。 Netty的优点有: a、功

  • 本文向大家介绍基于Spring框架的Shiro配置方法,包括了基于Spring框架的Shiro配置方法的使用技巧和注意事项,需要的朋友参考一下 一、在web.xml中添加shiro过滤器 二、在Spring的applicationContext.xml中添加shiro配置 1、添加shiroFilter定义 2、添加securityManager定义 3、添加realm定义 三、实现MyRealm

  • (1). 创建数据库 shopdb 进入MySQL数据库中,创建一个数据库名为:shopdb 将上节《项目的数据库设计》中准备好的shopdb.sql脚本导入到shopdb数据库中 (2). 创建项目 myobject 框架和应用 myamdin、web和common。 # 创建项目框架 `myobject` $ django-admin startproject myobject

  • 本文向大家介绍基于Layer+jQuery的自定义弹框,包括了基于Layer+jQuery的自定义弹框的使用技巧和注意事项,需要的朋友参考一下 目的:XXXX项目中,很多的弹窗是利用freemarker的网页标签追加的形式实现的,网页弹框只是将隐藏的div显示出来,这样会使网页在预加载时速度变慢,增加页面加载和响应时间 解决方法如下:<已分中心管理的添加分中心弹框实现机制为例> 1.弹框页面部分的