[討論] angular的缺點

作者: mrbigmouth (大嘴先生)   2014-11-13 16:52:50
→ 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 的東西包含在裡面了。
作者: superpai (超級白)   2014-11-15 09:46:00
你應該用真實支援data binding的template語法來比才公平不然我也可以拿純html比php然後說php真是不清晰
作者: mrbigmouth (大嘴先生)   2014-11-15 10:57:00
之前的推文討論中我也說過了 我反對一切在html上動手腳做data binding的framework不過其他語言比angular.js好一點的地方在於你有機會不用在html上動手腳而用程式的方式去做 angular則是完全建立在directive的體制上*其他framework 不是其他語言 XD
作者: carylorrk (carylorrk)   2014-11-15 15:17:00
two-way data binding/MVVM 太方便了,離不開啊~(扭
作者: mrbigmouth (大嘴先生)   2014-11-15 17:24:00
要兼顧方便性跟可維護性的話 我滿看好meteor的reactive機制 基本上可以從它的framework上剝離出來獨立使用 有興趣的人可以去看看只是我猜效能上會比two-way data binding可慢(沒測)它內部的track方式可以說是只有javascript這種singlethead的語言才弄得出來的東西
作者: turtleknight (turtle)   2014-11-23 06:05:00
維護性是什麼意思?寫end-to-end test不夠嗎?

Links booklink

Contact Us: admin [ a t ] ucptt.com