为什么在科尔多瓦中面向Windows 8时会自动包含WInJS

Why is WInJS included automatically when targeting Windows 8 in Cordova?

本文关键字:8时 Windows WInJS 包含 为什么      更新时间:2023-09-26

我们正在开发一个使用AngularJS的应用程序,当我们面向Windows 8时,我注意到生成的Visual Studio项目包含WinJS作为参考。由于我们不使用 WinJS,我只是从项目中删除了引用。

然后我注意到删除 WinJS 会导致运行应用程序时控制台中的良性脚本加载错误。进一步的调查表明,cordova.js会自动检查WinJS,如果未包含,则尝试包含它(!)。以下是相关代码:

var onWinJSReady = function () {
    var app = WinJS.Application;
    var checkpointHandler = function checkpointHandler() {
        cordova.fireDocumentEvent('pause',null,true);
    };
    var resumingHandler = function resumingHandler() {
        cordova.fireDocumentEvent('resume',null,true);
    };
    app.addEventListener("checkpoint", checkpointHandler);
    Windows.UI.WebUI.WebUIApplication.addEventListener("resuming", resumingHandler, false);
    app.start();
};
if (!window.WinJS) {
    var scriptElem = document.createElement("script");
    if (navigator.appVersion.indexOf("Windows Phone 8.1;") !== -1) {
        // windows phone 8.1 + Mobile IE 11
        scriptElem.src = "//Microsoft.Phone.WinJS.2.1/js/base.js";
    } else if (navigator.appVersion.indexOf("MSAppHost/2.0;") !== -1) {
        // windows 8.1 + IE 11
        scriptElem.src = "//Microsoft.WinJS.2.0/js/base.js";
    } else {
        // windows 8.0 + IE 10
        scriptElem.src = "//Microsoft.WinJS.1.0/js/base.js";
    }
    scriptElem.addEventListener("load", onWinJSReady);
    document.head.appendChild(scriptElem);
}
else {
    onWinJSReady();
}

我想我的主要问题是,我应该"按原样"保留 WinJS 引用并让 Cordova 加载并初始化 WinJS?

它可能会与AngularJS发生冲突或以任何方式降低应用程序的性能吗?(我想var app = WinJS.Applicationapp.start() onWinJSReady让我有点担心)。

由于该应用程序似乎在没有 WinJS 脚本文件的情况下运行良好,为什么 cordova 如此坚持.js尝试包含它?

cordova(以及一些cordova插件,特别是文件系统插件)使用WinJS的一些功能,例如Promise和Ajax调用。 我们最终分叉了科尔多瓦.js并剥离了所有 WinJS 的东西......使应用程序加载速度更快!