→ 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裡時
至少對我而言,日後維護起來是非常辛苦的