→ carylorrk: 让我想到前阵子有个蛮反对 angular 的,其实也是差不多 11/13 15:24
→ carylorrk: 理由。不过我认为 angular 在设计上比 PHP 一开始严谨 11/13 15:24
→ carylorrk: 就是了XD 尤其是看过约翰爸爸的 coding style 觉得写起 11/13 15:26
→ carylorrk: 蛮舒服的(? 11/13 15:26
不知道是不是说我
不过我记得前几天我是有躲在推文里说过一些话
那时说不太清楚
趁现在有空说清楚一点
我反对angular的地方只有他的template engine
我认为angular的directive为了与原有html标准整合牺牲了太多东西
整体尤其是逻辑与流程控制的部份脱离了"language"的范围
但html是一个很好的"资料表达"语言,而不是一个好的"程式"语言
看看下面几个例子就很清楚了
angular的directive:
<header ng-repeat-start="item in items">
Header {{ item }}
</header>
<div class="body">
Body {{ item }}
</div>
<footer ng-repeat-end>
Footer {{ item }}
</footer>
一般template engine的语法:
<%
for (item in items) {
%>
<header>
Header <%- item %>
</header>
<div class="body">
Body <%- item %>
</div>
<footer>
Footer <%- item %>
</footer>
<%
}
%>
angular的directive:
<div ng-show="someBooleanVariable"></div>
一般template engine的语法:
<%
if (someBooleanVariable) {
%>
<div></div>
<%
}
%>
乍看下angular比较省事
但当你把一堆重要的逻辑判断甚至是事件藏进一堆顺序不重要也不够明显的attr里时
至少对我而言,日后维护起来是非常辛苦的
作者:
carylorrk (carylorrk)
2014-11-13 17:46:00这的确是 DOM-based 的原罪,毕竟整套 Compiler 和核心概念就是以 DOM 为中心来思考的。不若 underscore 或 handlebar 这类更单纯的 templateengine... 太多 magic 的东西包含在里面了。
你应该用真实支援data binding的template语法来比才公平不然我也可以拿纯html比php然后说php真是不清晰
之前的推文讨论中我也说过了 我反对一切在html上动手脚做data binding的framework不过其他语言比angular.js好一点的地方在于你有机会不用在html上动手脚而用程式的方式去做 angular则是完全建立在directive的体制上*其他framework 不是其他语言 XD
作者:
carylorrk (carylorrk)
2014-11-15 15:17:00two-way data binding/MVVM 太方便了,离不开啊~(扭
要兼顾方便性跟可维护性的话 我满看好meteor的reactive机制 基本上可以从它的framework上剥离出来独立使用 有兴趣的人可以去看看只是我猜效能上会比two-way data binding可慢(没测)它内部的track方式可以说是只有javascript这种singlethead的语言才弄得出来的东西
维护性是什么意思?写end-to-end test不够吗?