2014-06-12 47 views
1

我有一個AngularJS項目,我正在考慮遷移到Dart。我不想在整個項目中大舉移植,所以我正在尋找方法並行運行這兩個應用程序。需要從Dart項目中部署哪些文件?

dart應用程序將作爲index.html在根上運行。 js應用程序將運行在單獨的路徑上,如'/ jsApp'。

當我構建一個測試項目時,似乎/ build目錄包含大量不必要的文件。我需要部署/ build/web目錄的完整內容嗎?

這是什麼實際上被加載? HTML文件仍然在運行時加載,還是被捆綁到主文件中?

我需要main.dart.js以及main.dart.precompiled.js嗎?它似乎是一個小應用程序非常大的文件。這是預期的嗎?

我還不清楚這些東西是如何掛在一起的。

回答

0

通常整個構建目錄需要部署,通常沒有不必要的文件。 *.precompiled.js文件不會在最近的Dart版本中生成(這是爲了符合CSP)。

你使用的是什麼Dart版本?

如果在調試模式下構建源映射文件,則會在構建目錄中生成源映射文件。

瀏覽器加載HTML文件的用戶的請求,然後加載腳本文件中的HTML和<script>標籤引用的所有其他資源(IMG,CSS,...)

我不知道,如果使用外部HTML模板文件構建Angular組件的輸出在index.html中內聯,或者按照原樣複製。

+0

我是(現在)使用Dart 1.4.2_r36647,我今天從下載站點獲得。它仍然生成一個「預編譯」文件。 'main.dart.js'文件僅比'Hello World'多一個字節。這是正常的嗎?我以爲我看到Misko說他們已經將生成的文件大小降低到了200KB。 – kpg

+0

我想,當你運行'pub build'形式的DartEditor時,它會在調試模式下運行,這會產生更大的輸出(不縮小,...)。你可以嘗試從控制檯運行'pub build'嗎?如果它仍然沒有產生預期的輸出,請嘗試'pub build --mode = release' –

1

如果你想保留生成的文件儘可能的小,你應該:

你pubspec .yaml應該是這樣的:

name: angular_dart_demo 
version: 0.0.1 
dependencies: 
    angular: 0.12.0 
    [...] 
transformers: 
- angular 
    html_files: 
    - web/my_html_template.html 
    - web/another_html_template.html 
  • 從構建與酒吧的命令行建立

這樣你會得到800KB JS,而不是5MB JS) 這是因爲角DART使用鏡子和,因此,生成的JS代碼可以得到,如果非常大你不使用角度變換器。

我認爲html模板被複制到build目錄,並且會在運行時被請求。

您必須以某種方式將您從「pub build」獲得的內容與您現有的js應用程序合併。

+1

shadow_dom已被棄用(當構建到JS時會導致很多錯誤),您應該使用web_components。 –

+0

你是對的,Günter。我會從我的答案中刪除它。感謝您的澄清 –

1

我使用的是與Dart控制器混合的AngularJS。您不必調整當前的項目結構以使用pub構建。只需使用dart2js編譯單個的dart文件,並在頁面中包含「.js」文件即可。您不必添加本機飛鏢腳本標記或在代碼中添加飛鏢引導程序。只需爲生成的js文件(您需要的唯一文件)添加一個腳本標記,它就會按照您的預期進行操作。我計劃很快寫出這個簡短的概述。

+0

我想這不適用於靜態注射器,它提供了巨大的性能優勢。靜態注入器需要運行di變換器(通常由'pub build'調用 - 但也可以手動運行) –

相關問題