正如標題所述。將多個.ts文件轉換爲單個.js文件有什麼優點和缺點? 例如這只是表現的原因嗎?它會使調試更困難嗎?將TypeScript編譯成單個js文件有什麼優點/缺點?
回答
這完全取決於你的項目設置和環境。
如果您利用http/2及其通過一個通道發送多個文件的能力,是否連接文件不會影響頁面加載性能。如果不這樣做,性能將通過加載一個大文件而不是多個較小文件來提高。
如果您考慮連接文件,則不使用依賴關係加載器。這是可以的,但這意味着你需要引用html頁面中的所有文件。這很簡單,如果你只有一個連接的文件來引用,並且如果你有數百個文件有點困難。你可以使用像gulp這樣的構建工具來構建你的html,並自動包含所有的引用,但是如果你不這樣做,你將會遇到一些皇家混亂。
關於調試,您可以使用源代碼表示您可以直接在瀏覽器中調試您的打字稿,這是一個非常好的主意。就像你可以調試C#而不是編譯的IL。如果你使用的是源代碼,無論你是否連接文件,你的調試體驗都是一樣的。使用TypeScript進行開發時使用源地圖。
我將此標記爲答案而不是Chiru的一個,因爲它並不是說讓一個js文件是絕對的邪惡。至少我可以想到一些優點,例如使用lite服務器監視模式時編譯時間更快。我可以混淆我的代碼以及單個js文件輸出,以使我的應用程序尤其適合遊戲應用程序)難以破解。 – Nick
Transpiling你的源代碼到一個單一的文件...
- ...使調試難度(是的,有sourcemaps,但那麼你就必須採取不包括他們在您的生產版本護理,導致更大的建立管道)。雖然,如果您使用good transpilers,您可能已經使用源映射。
- ...導致網站/初始渲染性能不佳(特別是對於HTTP/2,大捆現在已成爲過去,只需使用HTTP/2和類似jspm的東西)。
- ...阻止您以可接受的方式使用熱重新加載插件(即,一旦文件發生變化,插件會自動刷新您的瀏覽器)。如果只更改一個源文件,則只應該編譯該文件;沒有必要重新構建整個捆綁包。如果您將所有內容都捆綁在文件更改上,那麼大型應用程序就變得難以維護。
- ...不會影響您需要放入HTML文件的多少。因此,@亞歷克斯說的並不完全正確。無論如何,你的HTML應該只導入一個核心模塊;如果你把所有東西捆綁起來都沒有關係。看看
System.import
,WHATWG Loader spec和jspm。也看看Akamai HTTP/2 demo。
TL; DR:請勿創建單個包。這是過去的事情,並可能會因HTTP/2優化的Web服務器(和瀏覽器)而死亡。
「只使用HTTP/2」 - 我們有2016年,而不是2020年。大型服務器發行版(Debian,RHEL)甚至不提供支持HTTP 2的Web服務器。而且瀏覽器,以及... – jgillich
@jgillich HTTP/2已經在nginx-mainline上; nginx已經專門爲Debian和[RHEL]提供了[mainline packages](http://nginx.org/packages/mainline/debian/)(http://nginx.org/packages/mainline/rhel/)。還有一堆HTTP/2兼容的C++和節點服務器。 Google,Cloudflare或Facebook等大公司已經使用HTTP/2來提供他們的產品代碼(使用curl進行檢查)。所有主流瀏覽器都已經提供了[HTTP/2](http://caniuse.com/#feat=http2),並且默認啓用(某些強制TLS,本身並不是壞事)。那麼爲什麼還要再等四年? – Chiru
1:使用打字稿時應始終使用源地圖,因此調試永遠不會因爲您連接文件而變得更難。 2/3/4。如果有人正在考慮連接文件,那麼無論如何都不會使用異步依賴加載,這是可以的。但是,除非你連接它們,否則你必須將它們全部包含在你的html中。如果沒有使用依賴加載器加載依賴關係,那麼如果不使用http/2仍然不是事實上的標準,那麼加載很多較小的文件而不是一個大的頁面加載會更糟。 – Alex
- 1. has_many和has_one,有什麼優點/缺點?
- 2. 使用Maven有什麼優點/缺點?
- 3. py2exe有什麼優點/缺點
- 4. 用數字前綴文件夾有什麼優點和缺點?
- 5. ASP.NET預編譯的優點是什麼?
- 6. 使用git-svn有什麼優缺點?
- 7. 這些插件有什麼優點和缺點?
- 8. ActiveX瀏覽器插件 - 有什麼優點/缺點
- 9. 什麼是使用大型CSS文件的優點和缺點?
- 10. 創建一個新班級有什麼優點和缺點?
- 11. 將TypeScript編譯爲獨立模塊或單個文件有什麼區別?
- 12. ClojureScript Leiningen編譯成單個.js文件?
- 13. 單獨戰爭文件的優缺點
- 14. 單個HTML文件內的CSS和Javascript。優點缺點?
- 15. TypeScript編譯.js
- 16. 什麼時候jar文件名應該有一個版本號?這有什麼優點和缺點?
- 17. 有歷史表有什麼優點和缺點?
- 18. .htc文件的優缺點
- 19. 實施單用戶會話的優點和缺點是什麼?
- 20. 在數據庫中存儲文件有什麼優點和缺點?
- 21. 解析INI文件的優點/缺點
- 22. 頭文件的優點/缺點
- 23. 使用Typings編譯單個TypeScript文件
- 24. Typescript編譯爲單個文件
- 25. Core Data,Firebase和Realm有什麼區別?他們有什麼優點和缺點?
- 26. HTML編碼有什麼缺點嗎?
- 27. git submodule和Repo有什麼優點和缺點?
- 28. 使用交叉遺傳算子有什麼優點和缺點?
- 29. UIImageView和CCSprite之間有什麼優點和缺點?
- 30. 基本HTTP認證有什麼優點和缺點
是的,它會使調試更難。合併多個文件主要推薦用於生產部署 – Ozrix