新版管理后台主要以Twitter的Bootstrap框架为基础,结合MVVM框架avalonJS,实现模块化,组件化,频道单页,数据双向绑定等功能。此次框架的改进主要有以几点作用:
更新日期:2016年02月18日
维护:Aitter
版本:v1.0.0
UI框架
UI框架使用Bootstrap的改进版 UBOLD
qk.common.css
公共组件库相关样式- bootstrap.min.css 源主框架样式库
- core.min.css 框架自定义样式库
- dialog.css 弹出层样式
- toastr.css 消息框样式
- uiLoading.css 加载指示器样式
- select2.css 下拉框样式
JS框架
avalon.js
MVVM框架 主文件
qk.config.js
AMD加载配置 与 全局变量配置文件
qk.common.js
公共组件库(依赖于 jquery)1. dialog 对话框
2. toastr 消息提示
3. uiLoading 加载提示
4. artTemplate 模板
5. bootstrap 框架基础组件
6. pagination 分页组件
7. select2 下拉组件
8. core.js 框架初始化相关
qk.utils.js
工具库(依赖于 qk.common.js)- Utils 工具库
- Filters 框架过滤器
- Components Config 组件的全局配置
使用方式
频道页中引用如下
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="chrome=1;IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>管理平台</title>
<link href="http://static.qiakr.com/source/qk.common.min.css" rel="stylesheet" type="text/css" />
<body>
<div id="wrapper" ms-controller="rootCtr"> <!-- Your Code --> </div>
<script src="../js/avalon.min.js"></script>
<script src="../js/qk.config.js"></script>
<script>
require(['./pro/main'],function(main){
main.init();
})
</script>
</body>
</html>
main.js 页面主模块中的示例代码/**
* [频道 主模块]
*/
define(['utils','mmRouter'],function(){
var mainVM;
mainVM = avalon.define({
$id: "rootCtr",
oldPage: '',
currPage: 'childPage',
subPage:'',
params: {}, //Url参数
renderedFn: function(){
if(mainVM.$model.oldPage!= mainVM.$model.currPage ){
mainVM.$model.oldPage = mainVM.$model.currPage;
// 加载相应的模块
require(['./qiakr/'+mainVM.$model.currPage], function(pageModel){
pageModel && pageModel['init'] && pageModel['init']();
});
//选中对应的菜单
// $('#sidebar-menu').find('[href*='+mainVM.$model.currPage+']').addClass('click');
}
}
});
var p_main = {
init:function(){
toastr.success('引用成功!');
this.initRouter();
},
initRouter:function(){
function callback() {
this.params.page && (mainVM.currPage = this.params.page);
mainVM.params = this.query;
mainVM.subPage = this.query.subPage || '';
}
avalon.router.get('/:page', callback);
avalon.history.start({ basepath: "/"});
avalon.scan();
}
};
return {
init:function(){
p_main.init();
}
}
});
注意
- 如果是单页则引用 mmRouter 模块,并在mainVM中添加renderFn函数,p_main中初始化路由
- 模块必须返回一个init函数
子频道 childPage.html 代码示例<h2>
子频道A 页面
</h2>
子频道 childPage.js 模块示例/**
* [账务结算 模块]
*/
define(['domReady!'],function(){
var childVM;
var p_child = {
init:function(){
console.log('子频道A init!');
}
}
return {
init:function(){
p_child.init();
}
}
});