thinkjs初试
背景
- 支持http、命令行、Websocket、Restful等多种访问方式
- C(Core)+B(Behavior)+D(Driver)架构
- 高度封装的Model,无需手工写sql语句
- 封装了Db、Session、Cache等功能
- 开发模式下,修改立即生效
npm install -g thinkjs-cmd //可以全局使用thinkjs命令
thinkjs -v //测试是否正确安装
mkdir takeit //创建项目目录
cd takeit //进入项目目录
thinkjs . //初始化项目
- 端口配置,使用不长被占用的端口;安装过程中,存在端口被占用无法正常启动服务的情况;(App/Conf/config.js)
- 数据库配置,配置数据库主机、用户名、密码、数据库以及前缀(App/Conf/config.js)
- 路由配置,由于所创建的项目要求随机生成单一页面,所以需要对路由进行配置(App/Conf/route.js)
- 全局变量配置(www/index.js)
module.exports = {
//配置项: 配置值
port: 1314, //监听的端口
app_group_list: ['Home', 'Admin'], //分组列表 db_type: 'mysql', // 数据库类型
db_host: 'localhost', // 服务器地址
db_port: '3306', // 端口
db_name: 'takeit', // 数据库名
db_user: 'root', // 用户名
db_pwd: '123456', // 密码
db_prefix: '', // 数据库表前缀
};
module.exports = [
[/^\/?(index\/download\/)fileid\/(.*)/, ":1?fileid=:2"],
[/^\/?(index\/download\/)pageid\/(.*)/, ":1?pageid=:2"],
[/^\/?(index\/downloadtext\/)pageid\/(.*)/, ":1?pageid=:2"],
[/^\/?(index\/uploadtext\/)pageid\/(.*)/, ":1?pageid=:2"],
[/^\/?(index\/uploadfiles\/)pageid\/(.*)/, ":1?pageid=:2"],
[/^\/?(index\/delfiles\/)pageid\/(.*)/, ":1?pageid=:2"],
[/^\/?(index\/lock\/)pageid\/(.*)/, ":1?pageid=:2"],
[/^\/?(index\/unlock\/)pageid\/(.*)/, ":1?pageid=:2"],
[/^\/?(.*)$/, "index/index/?pageId=:1"]
]
//定义APP的根目录
global.APP_PATH = __dirname + '/../App';
//静态资源根目录
global.RESOURCE_PATH = __dirname;
global.ROOT_PATH = __dirname;
global.FILES_DIR = __dirname + '/files/';
global.APP_DEBUG = true;
require('thinkjs');
- 由于thinkjs多为异步接口,在使用this.display();的时候需要注意
- this.end()返回的数据为字符串,在返回json数据时,可以使用较为方便的this.sucess()或this.fail(),也可以直接使用this.json();返回想要返回的数据
- 可以使用this.get()或者this.post()或者this.file()接收传递的数据,也可以使用this.download()下载文件等等Controller相关函数(http://thinkjs.org/api/controller.html),也可以使用md5()等全局方法,当然也可以自己在App/Common/common.js进行自定义全局函数(http://thinkjs.org/api/global.html)
- 操作数据库时,可以使用D函数实例化操作数据,具体的操作方法可以参照文档关于数据操作API(http://thinkjs.org/api/model.html)
thinkjs初试的更多相关文章
- thinkjs与Fine Uploader的邂逅
最近在做一个内部系统,需要一个无刷新的上传功能,找了许久,发现了一个好用的上传工具-Fine Uploader,网上也有不少关于它的介绍,对我有不少的启发,结合我的使用场景简单的介绍一下它与t ...
- caffe初试(一)happynear的caffe-windows版本的配置及遇到的问题
之前已经配置过一次caffe环境了: Caffe初试(一)win7_64bit+VS2013+Opencv2.4.10+CUDA6.5配置Caffe环境 但其中也提到,编译时,用到了cuda6.5,但 ...
- thinkjs——session
工作中又遇到了session问题,于是整理一下有关thinkjs中的session使用小方法: 需要用户登录的网站基本上都离不开 Session,ThinkJS 里默认支持多种类型的 Session, ...
- thinkjs中自定义sql语句
一直以为在使用thinkjs时,只能是它自带的sql语句查询,当遇到类似于这样的sql语句时,却不知道这该怎样来写程序,殊不知原来thinkjs可以执行自定义sql语句 SELECT * from a ...
- 初试Nodejs——使用keystonejs创建博客网站2(修改模板)
上一篇(初试Nodejs——使用keystonejs创建博客网站1(安装keystonejs))讲了keystonejs的安装.安装完成后,已经具备了基本的功能,我们需要对页面进行初步修改,比如,增加 ...
- 项目中初试PHP单元测试
只能叫初试,前面虽然做了一些PHPUnit与团队所用框架的整合,但在整个团队还没有人可以主动推动这个事情,而作为Leader最重要的一种能力应该是"让正确的事情发生",所以今天开始 ...
- VPS -Digital Ocean -初试以及VPN的搭建
首先恭喜你找到这篇博客,它会带你走出困境. 题外话(请忽略):一直以来想搞一个VPS,终于在自己的刺激下试了一下Digital Ocean,还没有使用很长时间不做太多评论,唯一给我的感觉是各种操作还算 ...
- 初试微信小程序
2016年11月3日,微信小程序终于公测了,大家可以正式开发了.早在这之前,应公司要求,和同事就早早的试了一下微信小程序的开发,特此记录一下: 微信官方小程序文档:https://mp.weixin. ...
- ThinkJS 项目用 WebStorm 来设置断点与调试
1. 前置条件.已按ThinkJS 2.0 文档 之 <创建项目> 建好项目. 说明a: 本示例创建项目名为wagang,使用es6配置: thinkjs new wagang --es6 ...
随机推荐
- Display number of replies in disscussion board
how to display number of replies in disscussion board I have a require about display the replies' nu ...
- WPF - 为什么不能往Library的工程中添加WPF window
项目中添加一个Library 工程,但是却无法加入WPF window, WPF customize control. 调查了一下,发现这一切都由于Library工程中没有:ProjectTypeGu ...
- stardict词典(星际译王)
sudo apt-get install stardict 下载词库: http://abloz.com/huzheng/stardict-dic/zh_CN/ 把下载的压缩包解压,以a为例cd /u ...
- MyBatis配置解析
MyBatis配置文件解析(概要) 1.configuration:根元素 1.1 properties:定义配置外在化 1.2 settings:一些全局性的配置 1.3 typeAliases:为 ...
- (转)iOS Wow体验 - 第二章 - iOS用户体验解析(1)
本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第二章译文精选的第一部分,其余章节将陆续放出.上一 ...
- Wikioi 1080一维树状数组
半个月时间最终把那些杂七杂八的学完了,尽管学完也,也仅仅是有了个模板,自己手敲还是不太行.所以如今開始要疯狂刷题了! ! .!!! 这题裸的树状数组.曾经写那道<敌兵布阵>的时候写过,所以 ...
- Understanding Abstractions of Secure Channels 的研读
- VMware vSphere 5.5的12个更新亮点(2)
ACPI支持 以前版本的VMware虚拟机的局限性之一,是支持的虚拟设备数量甚少.vSphere 5.5引入了Virtual Hardware 10,这增加了基于SATA的虚拟设备节点,通过AHCI( ...
- Android自定义控件(一)——开关控件
Google 在 API 14 开始才新增了Switch 控件. 因此,我们可以选择自己封装一个Switch . 效果如图: View主要代码: public class SwitchView ext ...
- android AsyncTask 详细例子
一个典型AsyncTask的. 01 public class DialogTestActivity extends Activity { 02 private Button button1; ...