Mix解决方案初探
Created by 渚薰
如果你女友饿了,你会怎么做?
上述方法都可以解决核心问题,只是面对的用户不同
如果是你
你
还有你
通常专注于某个领域的问题。VS
针对WebApp的统一解决方案。
提供自由的API,可以做任何事情。VS
快速开发,集中精力于业务逻辑。
保有自己的生态圈。VS
可以低耦合的来使用其它框架。
<link type="text/css" rel="styleSheet" href="mixsln.css"/>
<script src="zepto.js" type="text/javascript"></script><!-- 可选 -->
<script src="mustache.js" type="text/javascript"></script><!-- 可选 -->
<script src="mixsln.js" type="text/javascript"></script>
<div class="viewport">
<header class="navbar"></header>
<section class="content"></section>
<footer class="toolbar"></footer>
</div>
app.config.enableNavbar = true; // 导航栏开关
app.config.enableToolbar = true; // 工具栏开关
app.config.enableScroll = true; // 页面滚动开关
app.config.enableTransition = true; // 转场动画开关
app.config.templateEngine = { // 模板引擎配置
load: function(url, callback) {
$.get(url, callback);
},
compile : function(text) {
return Mustache.compile(text);
},
render : function(compiled, data) {
return compiled(data);
}
}
<h1>Hello World!</h1>
<div><input type="text" id="name"><button>say</button></div>
app.definePage({
name: 'helloworld',
title: '你好',
template: './helloworld.tpl', // 需要加载的模版,路径相对于HTML文件
startup: function() {
var that = this,
html = this.template({}); //经编译后,template字段会变成一个可渲染的函数
this.html(html);
// 通过this.el来获取页面中的元素
this.el.querySelector('button').addEventListener('click', function(e) {
var name = that.el.querySelector('#name').value;
if (name) {
app.navigation.push('hello/' + name); // 改变Hash值
}
});
}
});
<h1>Hello, <em>{{name}}</em></h1>
app.definePage({
name : 'hellobuddy',
title : '你好啊',
template : './hellobuddy.tpl',
route : 'hello\\/(P[^\\/]+)\\/?', // 设置路由(Perl风格),name为参数名
startup : function() {
var name = app.navigation.getParameter('name'),// 获取路由中的`name`参数值
html = this.template({name:name})
;
this.html(html);
}
})