2017-06-29 165 views
3

在科爾多瓦運行(或引導)基於角度cli的應用程序的最佳方法是什麼?角4 +科爾多瓦+設備準備

注意:這是針對使用多個Cordova插件的Angular 4.x應用程序。

選項A:郵政NG建立,在您的www/index.html的(www是科爾多瓦的文件夾),你應該這樣做:

<script src="cordova.js"></script> 
<script> 
document.addEventListener('deviceready', onDeviceReady, false); 

function onDeviceReady() { 
    console.log('onDeviceReady has been called. Lets start loading JS files.'); 
    var url = ['inline.bundle.js', 'polyfills.bundle.js', 'styles.bundle.js', 'vendor.bundle.js', 'main.bundle.js']; 
    for(var i = 0; i < url.length; i++){ 
    loadJSFile(url[i]); 
    } 
} 

function loadJSFile(url) { 
    var head = document.getElementsByTagName('head')[0]; 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = url; 
    head.appendChild(script); 
} 
</script> 

OR,

選項B:在on​​DeviceReady ()可以在main.ts(在引導AppModule之前)或app.component.ts之內。

我試過了選項A,但是我的應用在iPad上加載的時間太長。所以我想知道我是否遵循了一個好方法。預先感謝您的建議。

回答

6

我不知道這是否是最好的方法,但在我的main.ts中,我添加了deviceready事件偵聽器,並帶有一個箭頭函數,稱爲角引導。有用。

document.addEventListener("deviceready",() => platformBrowserDynamic().bootstrapModule(AppModule), false);

+0

我喜歡它!我想改進它的唯一方法是首先檢查是否分配了「文檔」,如果不是,則執行正常引導。我知道Angular Universal目前似乎絕對無處可用,但準備工作並沒有什麼壞處。 –

0

如果您需要添加科爾多瓦的檢查,以及,你需要更復雜的代碼。否則,Angular會抱怨'試圖找到引導代碼,但不能。指定靜態可分析的引導程序代碼或將entryModule傳遞給插件選項。'

const bootstrap =() => { 
    platformBrowserDynamic().bootstrapModule(AppModule); 
}; 

if (typeof window['cordova'] !== 'undefined') { 
    document.addEventListener('deviceready',() => { 
    bootstrap(); 
    }, false); 
} else { 
    bootstrap(); 
} 
0

在main.ts或主aot.ts要看你怎麼稱呼你的main.ts文件

document.addEventListener('deviceready',() => { 
    console.log("bootstrap device"); 
    platformBrowser().bootstrapModuleFactory(AppModuleNgFactory); 
    }, false); 
} 
相關問題