2017-06-29 166 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); 
} 
相关问题