關於angualr網站後台?

問題描述:

要做一個網站後台,功能略多,也有一些複雜的功能

需要用到:table(拖拽排序,編輯等), tree樹結構。

找了下關於angular的組件等資源,找到個angular-ui,提供angular-route angular-grid angular-bootstrap。但這些組件還遠遠不夠...

疑惑:

1. 感覺目前angular不太適合做複雜一點的東西,手機端的小項目用它感覺到還行。 那「angular開發下一代web應用」 指的是什麼呢?

2. jsp中&直接就能拿到後台的數據了,如果用angular,那數據不就需要一個請求了么?之前不是一直提倡,請求越少越好么?

3. 後台的action肯定是要的(界面必須是jsp並且放在web-inf下),後台的action會跳轉,而angular是通過錨點讓頁面不跳轉,然後把其他頁面載入到首頁的ui-view裡面顯示。怎麼協調工作呢?

小弟菜鳥,google了很久也沒有找到合適的答案,求大牛們賜教。謝謝!


看到題主那句

「感覺目前angular不太適合做複雜一點的東西」

我就笑了。angular特么就是用來做複雜的東西的好吧?!

我們現在做的一個項目,偏應用型的,我第一反應就是上angular的。但是等我辦完雜事要開工的時候,CTO已經上了ruby on rails了,MVC,把view丟給我寫js和css了。

我問:html.erb可以刪嗎?(這是ruby的html模板)

答曰:不可以。你就在上面改。

我問:後端沒有實現restfulApI?

答曰:還沒。

於是我痛痛快快地放棄了angular,用上了jquery。為什麼?因為angular不如jquery好用?不是的!是因為路由這一層被後端給霸佔了。CTO是後端出身的,對前端框架還沒有認識。熟悉的只有jquery,在他看來前端只有散亂的js腳本和css效果,所有業務需要後端來組織。在這種情況下,只有放棄angular。

題主提到的「angular開發下一代web應用」,說說我自己的理解。angular所提倡的web應用其實更近似手機app、PC桌面應用而非傳統意義上的網頁。它們的共同特徵在於一次載入或下載完基礎功能,然後應用各個頁面需要的內容以json的方式向後端restfulApI發起請求,即後端服務化,而不是頻繁切換網頁。

angular框架下的web應用與手機app的唯一區別在於它是運行在瀏覽器上的,需要載入的,僅此而已。它已經不是傳統意義上的網頁了,從這個角度來看,它只適合大的,複雜的項目,小的項目反而不合適!

如果是真正複雜的項目,我相信angular反倒節省流量和請求數。首先,它的模板文件被壓入templateCache,在你打開那個頁面之前,它是不會提前請求那個頁面所需要的圖片和內容的,你打開的時候文檔是由js生成的。而壓縮後的模板其實很小。並且如果你如果在一個web應用中頻繁切換頁面,單頁的請求數和流量優勢更加明顯,你可以很方便地開啟對請求的緩存。就算不開啟,請求到的只是json而已,而非整個文檔。

所以,如果你真的覺得內容組織放在前端來驅動更合適的話,就用angular,後端老老實實服務化,介面化,restfulAPI,不要還忍不住把手伸到模板層來對前端指手畫腳。只有這樣做,你才會發現angular做web應用是一把利器。


1. Angular的Directive和Provider(Service/Factory/Value)本來就是讓你自己寫的,預置的幾個當然只有基本功能。必要的時候甚至可能需要多個Module甚至多個NgApp。但就算是預置的那幾個也絕非不能做複雜應用。

如果你就只會寫寫數據綁定的話,掛Angular咯?

2. HTML的模版是可以被緩存的,也就是說可以認為除了第一次打開外後期的請求只有數據,這也就是HTML可以實現離線應用的基礎。倒是jsp每次都需要一個新的請求,而且重複了那麼多無關內容,而每次還要整體刷新,不論速度還是用戶體驗上都不好。

3. Angular的路由可以設成HTML5Mode,不用錨點直接使用純URL。後台一開始就不需要設界面直接用純WebApi就好。頁面全部直接寫好.html交給Nginx處理。


1. Angular適合做SPA程序,即single page application.

2. 在一個分層應用中,數據一般都是需要的時候才請求並非同步載入.

3. 建議弱化前端平台相關性技術,諸如Jsp等。 就angular而言,前端用html就足夠了。用angular框架開發的99%都選擇html5.


推薦閱讀:

如何看待 ECMAScript 2018 規範?
如何讓一個div裡面的div垂直居中?
facebook首頁的這個載入效果是怎麼實現的?
網站為什麼 JS 調用盡量放到網頁底部?
可否通過polyfill讓微軟的wscript能運行node.js腳本?

TAG:JavaScript | AngularJS |