亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Node.js和Backbone.js在應用場景上有什么區別?

Node.js和Backbone.js在應用場景上有什么區別?

溫溫醬 2019-02-14 15:11:11
Node.js和Backbone.js在應用場景上有什么區別
查看完整描述

2 回答

?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

  • NodeJS

  1. 定義

    一個Javascript運行環境(runtime),基于Chrome JavaScript運行時建立的平臺, 用于方便地搭建響應速度快、易于擴展的網絡應用。

  2. 作用

    Node.js 使用事件驅動, 非阻塞I/O 模型而得以輕量和高效,非常適合在分布式設備上運行數據密集型的實時應用。

  3. 特點

    事件驅動;

    非阻塞I/O;

    輕量、可伸縮,適于實時數據交互應用;

    單進程,單線程;

  • NodeJS的優缺點

  1. 優點

    高并發(最重要的優點);

    適合I/O密集型應用;

  2. 缺點

    不適合CPU密集型應用;

    CPU密集型應用給Node帶來的挑戰主要是:由于JavaScript單線程的原因,如果有長時間運行的計算(比如大循環),將會導致CPU時間片不能釋放,使得后續I/O無法發起;

  • Backbone.js

  1. 定義

    為復雜Javascript應用程序提供模型(models)、集合(collections)、視圖(views)的結構。

  2. 作用

    適合的應用場景是單頁面應用,并且頁面上有大量數據模型,模型之間需要進行復雜的信息溝通。Backbone 在這種場景下,能很好的實現模塊間松耦合和事件驅動。 

  3. 主要組成

    model:創建數據,進行數據驗證,銷毀或者保存到服務器上;

    collection:可以增加元素,刪除元素,獲取長度,排序,比較等一系列工具方法,說白了就是一個保存 models的集合類;

    view:綁定html模板,綁定界面元素的事件,初始的渲染,模型值改變后的重新渲染和界面元素的銷毀等;

  • Backbone.js優缺點

  1. 優點

    將數據和界面很好的分離開來;

    將事件的綁定很好的剝離出來,便于管理和迭代;

    使得Javascript程序的模塊化更加清晰、明了;

  2. 缺點

    Model 層比較簡單,如果要支持 One-To-One 或者 One-To-Many 等復雜數據關系時有些力不從心;

    Model 只能屬于一個 Collection 這個設計,頁面復雜的時候會很受局限;

    View 層沒有很強的 Page 管理機制;



查看完整回答
反對 回復 2019-03-07
?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

Backbone 最適合的應用場景是單頁面應用,并且頁面上有大量數據模型,模型之間需要進行復雜的信息溝通。Backbone 在這種場景下,能很好的實現模塊間松耦合和事件驅動。 其他適用產品還有微博,網易微博的前端設計也是和 Backbone 類似的一個結構。

Backbone 的優點和一些經驗 Tip:

View 的劃分將頁面上的視圖元素解耦,粒度細化。View 間通過事件和 Model 通訊,避免了 DOM 事件的濫用。

Model 和 Restful 的通訊方式對于后端人員非常友好。
MVC 架構清晰, 我有個常年寫 Java 沒寫過 JS 的同事看 Backbone 很快就了解了整體設計,雖然這時候他還是不會寫 JS。
Collection/Model 抽象了以前雜亂的 AJAX 請求,CRUD 請求變得非常非常方便。
強烈建議 View -> Model 單向依賴,世界會美好很多。
配上一個模塊化加載器例如 SeaJS 會很爽。
Backbone 的一些缺點,或者說一些尚未實現的 Feature:
Model 層比較簡單,如果要支持 One-To-One 或者 One-To-Many 等復雜數據關系時有些力不從心。還有 一個 Model 只能屬于一個 Collection 這個設計,頁面復雜的時候會很受局限。
Model 只有基本的 CRUD 操作,不能很好的擴展,Backbone.sync 方法寫的不太靈活,要想擴展就得重寫 sync 方法。
View 層沒有很強的 Page 管理機制,比如通過 URL 切換改變整個頁面時,頁面上尚存的 View 如何處理?直接銷毀的話,是否要銷毀關聯的 Model、Collection?Cache 住?如何管理 Cache?
內存管理需要比較小心,缺乏機制避免創建重復 Model。
extends override 父類方法的時候得寫一串的 SuperClass.prototype.someMethod.apply 什么的,就不能實現個 _super 方法么……
對調試非常不友好。
作者有代碼潔癖(也是加分項),this.$el 大家呼喚了這么久才加上,估計今生也看不到 this._super。
更新慢。
總體來說 Backbone 還很輕,框架很漂亮但是有些細節還比較粗糙。用之前要做好對 Backbone 進行大量擴展甚至 Hack 的準備。



查看完整回答
反對 回復 2019-03-07
  • 2 回答
  • 0 關注
  • 719 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號