thinkjs 确实做得还是很到位,总体很好用,虽然是包装框架,但是各方面都考虑到了。这个比较好的工具可以快速让前台人员做后台服务,但是大部分人使用的时候都是用mysql,对于一个demo安装部署来说,再建立mysql的环境只有一个问题:太慢,如果想立刻使用,就是先要抛弃部署数据库的事件。
打开git command , 输入
npm install -g think-cli
创建一个demo
thinkjs new demo; cd demo; npm install; npm start; npm install think-model-sqlite
注意不要使用cnpm,这个安装很多东西会出问题,例如不调用编译
2 、thinkjs增加再在adapter.js中增加
const sqlite = require('think-model-sqlite');
exports.model = {
type: 'sqlite',
sqlite: {
handle: sqlite, // Adapter handle
path: path.join(think.ROOT_PATH, 'db'), // sqlite 保存的目录
database: 'test', // 数据库名
connectionLimit: 1, // 连接池的连接个数,默认为 1
prefix: '', // 数据表前缀,如果一个数据库里有多个项目,那项目之间的数据表可以通过前缀来区分
}
}
使用sqlite administrator 等创建两个表,放在db下面 user rtspinfo 两个表,如下图所示
model里面创建一个user.js,一个rtspinfo.js,什么都不做,写入代码
module.exports = class extends think.Model {};
3、thinkjs controller
controller 里面创建两个文件 user.js rtspinfo.js rtpinfo.js 里面写入代码
const Base = require('./base.js');
module.exports = class extends Base {
async indexAction() {
const rtspinfo = this.model('rtspinfo'); // controller
const data = await rtspinfo.select();
//this.assign('title', data /*{ "name": "qianbo" }*/);
//return this.display();
return this.success(data);
}
test2Action() {
return this.success("rtspinfotest2");
}
};
写完thinkjs会自动编译到app里面,到浏览器里面访问
http://127.0.0.1:8360/rtspinfo/ http://127.0.0.1:8360/rtspinfo/test2 分别会返回数据库里的数据和自己写入的数据
这种方式是界面和代码分离的方式,如果想使用view视图和数据绑定,也是可以的 建立一个view视图rtspinfo_address.html
摄像头地址
ID号码地址
{{title[0].ID}}
{{title[0].address}}
在controller里面加入一个函数
async addressAction() {
const rtspinfo = this.model('rtspinfo'); // controller
const data = await rtspinfo.select();
this.assign('title', data);
return this.display();
}
访问浏览器
http://127.0.0.1:8360/rtspinfo/address
该表格不过是没有样式,但是数据已经显示,这样,一个前台人员既可以做后台,也可以做前台。这是nodejs的优点
4、把循环加上
摄像头地址
{{title[0].ID}},{{title[0].address}}
ID号码地址
{% for item in title %}
{{item.ID}}
{{item.address}}
{% endfor %}
结果就是所有数据都出来了。
其实这个同样适用于mysql,甚至可以使用多种数据库
const rtspinfo = this.model(‘rtspinfo’,‘sqlite’); // controller const rtspinfo = this.model(‘rtspinfo’); // controller
在控制器里是可以切换的,而model层不用大的变化,控制层添加,删除等等都很方便
const Base = require(’…/base.js’); module.exports = class extends Base { modifyAction() { this.model(‘rtspinfo’).where({ID:“1”}).update({memo:“1号公路上”}) this.success(“修改成功”) } }; 再次访问,html中增加一列memo,发现已经修改了数据,非常简单方便,在架设demo的过程中,不用架设mysql数据库,等需要的时候,再修改成mysql就行,如果您搞不清楚,请在下面下载: thinkjs使用sqlite demo