2013-11-26 26 views
2

我很想知道其他團隊如何在他們的項目中使用JavaScript。目前我有一個MVC .Net應用程序 - 使用面向服務的體系結構與實體框架..等等等等 - 不是我想要問的,但有用的知道。對於客戶端來說,我正在使用signalr和knockout。 Knockout需要綁定一個視圖模型,然後SignalR才能參與其中,並獲得樂趣。Javascript與較大的項目與SignalR和KnockoutJS

要拆分這件事(和讓所有的依賴淘汰賽,jQuery的,等等),我決定使用RequireJS和結構像這樣:

|- \Js 
    |- app.js (This actually creates a connection with signalr) 
    |- config.js (requirejs.config - lists all the js libraries and then lists their dependancies) 
    | - \App 
     |- SomeFunction.js (Initialises the viewmodel and binds to the view) 
     |- \ViewModel 
      |- SomeViewModel.js (Consists of the view model) 
      |- SomeOtherViewModel.ks (You get the idea...) 

(我沒有列出的圖書館,但他們列在Js文件夾內的供應商文件夾中)

我之所以將文件分成這麼多,是因爲1000多行javascript真的很難讀取,加上它讓我的團隊更容易處理不同的元素該項目。但這確實帶來了一個缺點 - 當我看到每個請求的流量數量時,它的1.5mb這聽起來並不壞,但隨着javascript文件的增長,它正在成爲一個越來越大的問題(特別是我承諾的應用程序會更快!)

我試圖使用縮小版本的供應商庫,但這真的沒有太大的影響。有沒有人遇到過這個問題,你是如何克服這個問題的?我不知道我如何可以minfiy的JavaScript(沒有手動這樣做),仍然使用requirejs來管理依賴關係。

感謝

回答

0

您可以通過使用RequireJS」 r.jsoptimizer優化代碼。優化器知道如何優化RequireJS模塊。它可以被配置爲保持供應商的東西完好無損。查看r.js的文檔,嘗試一下,如果遇到特定問題,請提出更多問題。關於如何使用它,沒有一個通用的答案。

通過使用優化器,您可以顯着減少網絡請求的數量和傳輸的數據的大小。在我開發的其中一個應用程序中,在使用優化程序之前,我在遠程服務器場上運行Selenium測試時遇到了測試超時,這已經足夠了。優化後超時消失。

+0

我曾考慮過這一點,但我不確定我將如何在構建過程中包含此內容。你是否從你的項目構建過程中分離出了JavaScript構建過程? – Matt

+0

我不確定你的意思。您的問題與.Net項目的結構和構建緊密相關嗎?我使用''make''來構建我的東西,而我只在Linux中構建它。從第1天開始,我有一個名爲'build/standalone'的目標,將我的代碼和外部代碼結合到一個JS代碼樹中。爲了優化目的,我添加了一個''build/standalone-optimized''目標來在''build/standalone''文件中運行''r.js''來創建一個優化版本。 – Louis

+0

我認爲我已經構建的方式是問題的一部分,我需要或許查看其結構,然後使用r.js來縮小項目......感謝您對此的投入。 – Matt