理由很简单,EmberJs 必须把整个页面都用EmberJs写,不能自己写内容在Body中。看个最简单的例子:
<!doctype html>
<html>
<head>
<meta charset='UTF-8'/>
</head>
<body>
<h1>页头</h1>
<script type="text/x-handlebars" data-template-name='index'>
Hello
</script>
<div>页尾</div>
<script src="../js/libs/jquery-1.11.0.js"></script>
<script src="../js/libs/handlebars-v1.3.0.js"></script>
<script src="../js/libs/ember.js"></script>
<script src="../js/libs/ember-data.js"></script>
<script src="../js/libs/localstorage_adapter.js"></script>
<script type="text/javascript">
window.MyApp=Ember.Application.create();
MyApp.ApplicationController=Ember.Controller.extend({
})
</script>
</body>
</html>
这个例子显示结果就是:
页头
页尾
hello
啥?hello 不是在页头和页尾之间?是的,因为EmberJS用的是script方式的模板方式,emberJs没有一种方式把模板插入到传统的html的指定的位置。
这样就带来极大的不便: 所有以前做的html内容,都得改写成EmberJS的模板方式。假如现有的项目想用emberjs ,那简直就是灾难,要改所有的文件!!!!因为,一般的项目都会自己有一个HTML的布局文件,这个布局文件影响到整个项目的页面,如果要用emberjs,首先就要改这个布局文件,带来的连锁反应就是各个内容的页面也得跟着改成emberjs 的,而且还得一次性都改完才能发布,而不能渐进式的改动。这点与backbone,AngularJs 比,简直就是致命的缺点。
记得看过一篇评测文章,说emberJs 最好。@#@¥@$.....我想,写这个评测的人,不是脑子进水了,就是emberJS的人自己吹的。害我多费了一个星期去研究。。。画个圈圈,咒几句。。。