如上图,一一对应的view和model构成了一个组件(component),组件的最大作用就是提高代码的可复用性,组件本身可以直接实例化或者被其他view、model继承(严格意义上Trunk和Trunk.Model是一个最基础的组件)。
跨模块通信由事件驱动,典型的观察者模式。
// Register event
view1.listen(model2, 'save', function() {
// Do something
})
// Fire event
model2.trigger('save')
Trunk.js依赖 jQuery
<script src="lib/jquery.js"></script>
<script src="lib/Trunk.js"></script>
<script src="js/page.js"></script>
page.js
$(function() {
var app = new Trunk({
el: 'body'
})
// Do...
})
<script src="lib/require.min.js"></script>
<script src="js/require.config.js"></script>
<script src="js/page.js"></script>
require.config.js
require.config({
paths: {
'jquery': 'lib/jquery',
'Trunk': 'lib/Trunk'
}
})
page.js
require(['Trunk'], function(Trunk) {
var app = new Trunk({
el: 'body'
})
// Do...
})