Skip to content

mcdongWang/thrush

 
 

Repository files navigation

thrush

#基于node的简单mvc框架

##轻量

thrush部署方便,架构轻量,适合简单的前端架构者使用。

##快捷

只需要解压项目,就拥有所有的东西,不需安装其它服务。

##扩展性强

代码简单,可扩展性强。

##前端

nodejs语法,前后端协同。

##用法

###首先

在www下创建tmp文件夹,不过其实可以直接通过cmd文件夹下的restart脚本自动创建

###controller写法

在www/controller目录下,建立相对应路由
路由规则如下:
host:8124/a/b/c
a文件夹/b文件夹/c.js/index规则
or a文件夹/b.js/c规则
or a.js/b规则/参数为c

以a.js为例
	var a = function() {
		return this;
	};
	var conf = {
		'index' : function(){
			var data = {
				'value' : '/welcome',
				'ddd' : '/fuck'
			},
				self = this;
			this.setData(data);
			this.listen(function(data){
				self.cssLink = ['welcome'];
				data.value = data.value[0];
				return self.render('welcome', data);
			});
		}
	};
	exports.__create = controller.__create(a, conf);
data的键为别名,值为相对应的model接口
cssLink里面是对应的statics/css/路径
render里是www/view/路径
this.listen的回调会在所有model响应结束后,进行数据渲染
如果是ajax请求,那么controller的写法为:
'insert' : function(){
	var data = {'list' : '/insert'};
	this.ajaxTo(data);
}	

###model写法

以a.js(model)为例:
var dbThis = function(cbk){
	var _self = this;
	this.stack = {};
	this.count = 0;

	db.dbFind(this, 'find', {
		'table' : 'MYTABLE',
		'list' : {
	        name : {type: 'text'},
	        sex : {type: 'text'}
	    },
		'findList' : {'name': 'yaoyao'}
	});
	
	db.dbResult(this, function(_self){
		return cbk(null ,_self.stack.find);
	});

}
exports.dbThis = dbThis;
分别封装了dbFind、dbUpdate、dbInsert、dbRemove等方法。方法使用具体看www/model/welcome.js
dbResult的回调会统一获得所有的操作返回值,a.js里的'find'就是此时的别名,都会以键值对的方式存在_self.stack中

###view写法

以a.html为例:
<%# header.html #%>
	<div><label>姓名:</label><span><%= this.value.name%></span></div>
	<div><label>id:</label><span><%= this.value.id%></span></div>
	<div><label>性别:</label><span><%= this.value.sex%></span></div>
<%
	fml.use('page/welcome');
%>
<%# footer.html #%>
	
<%# header.html #%>为模板引入写法
<%= this.value.name%>进行模板渲染
<%  %>内可以以node语法写相应处理,比如:
<%
	fml.use('page/welcome');
%>
就会执行fml.use('page/welcome')

###js加载方式

fml.use('page/welcome',function(require, exports){
//do sth
});
fml.define('page/pc', ['jquery'], function(require, exports) {
//do sth
});
具体使用方式,类似sea.js,懒得写详细文档,想具体了解请call me

###启动方式

在cmd文件夹下,./restart start
在最后会输出一行类似/tmp/log/thrush/2015/02/12的路径
这个路径就是日志输出地点

###参数

get => this.req.__get
post => this.req.__post

##感谢

感谢以下的支持:

荣威威(js模块加载、模板引擎等)
李彩菲(demo书写)
代琴(lark 4 pc)

##修改点 支持了异步数据拉取 加入了post、get请求参数捆绑

##TODO 插入demo

About

简单mvc框架

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 73.0%
  • HTML 25.6%
  • CSS 1.4%