我已经和PhoneGap合作了一段时间了,因为我真的不得不急于进入它,没有真正的网络开发经验,我可能在调试和构建方面做了一些不正确的事情。
首先,我使用PhoneGap CLI创建我的项目。 我使用PhoneGap Build服务构建我的移动应用程序,在那里我上传了 www 文件夹的压缩版本。
要调试我的应用,我在CLI中使用 phonegap serve 命令,然后我基本上只需访问该网址并使用Chrome的开发者工具来检查我的JS和HTML。我有时会使用名为 Ripple 的Chrome扩展程序来完成这项工作,但它看起来有些小问题(其他选项?)
最近,我将 PushBots 插件添加到我的一个应用程序中,并在调试时在控制台中收到引用错误。如何防止这些类型的错误?
我通常遇到的另一个问题是我收到了cordova.js或cordova_plugins.js的引用错误。我明白,在构建时,cordova javascript文件会以动态方式添加到项目中,但它在控制台中仍然很烦人。有办法解决它吗?
我还在我的PhoneGap应用程序之上添加了Onsen UI框架,例如,关于使用哪些实例化函数来处理Android后退按钮,它会变得有点忙乱。 (我目前使用我的脚本文件夹中的index.js,我刚刚手动创建.PhoneGap没有为我创建它)
我通常的文件夹结构如下所示:
www
> css - contains CSS for the onsen framework
> img - contains some images that are referenced in my code
> js - contains jquery, moment and other libraries that I use in my app
> lib -
> angular - contains angular.js
> onsen - contains the onsen framework
> bootstrap
> res - contains icons and splash screens
> scripts - recently added it myself, with an index.js file
> config.xml
> index.html
> main.html
> appController.js
> loginController.js
> .....
插件的错误在这里开始发生。 这是我在我的index.html中引用的脚本文件夹中的 index.js ,只是在引用我已复制到根(www)文件夹的 cordova.js 之后,所以我不会一直得到参考错误(我不再为cordova.js得到它,现在我得到了cordova_plugins.js,所以我觉得这个方法不好)
(function () {
"use strict";
myApp.run(['$rootScope', function($rootScope) {
document.addEventListener('deviceready', function() {
// Handle the Cordova pause and resume events
document.addEventListener( 'pause', onPause.bind( this ), false );
document.addEventListener( 'resume', onResume.bind( this ), false );
// TODO: Cordova has been loaded. Perform any initialization that requires Cordova here.
document.addEventListener("backbutton", onBackKeyDown, false);
window.plugins.PushbotsPlugin.initialize("--------", {"android":{"sender_id":"-------"}});
// First time registration
// This will be called on token registration/refresh with Android and with every runtime with iOS
window.plugins.PushbotsPlugin.on("registered", function(token){
console.log("Registration Id:" + token);
});
window.plugins.PushbotsPlugin.getRegistrationId(function(token){
alert("Registration Id:" + token);
console.log("Registration Id:" + token);
});
// Should be called once app receive the notification
window.plugins.PushbotsPlugin.on("notification:received", function(data){
$rootScope.$emit('onNotificationWhileOpen', data);
console.log("received:" + JSON.stringify(data));
});
// Should be called once the notification is clicked
window.plugins.PushbotsPlugin.on("notification:clicked", function(data){
//alert("clicked:" + JSON.stringify(data));
$rootScope.$emit('onNotificationClick', data);
console.log("clicked:" + JSON.stringify(data));
});
window.plugins.PushbotsPlugin.resetBadge();
}, false);
}]);
...All the necessary functions for the callbacks go here...
} ) ();
插件是由PhoneGap Build框架添加的,所以我只需要在config.xml文件中指定它们。我想这就是我在PC上调试时遇到问题的原因,但是有办法解决这个问题吗?
通过手动添加cordova.js参考,我是否彻底搞乱了我的项目?当我有温泉框架时,它是否真的需要?
LE: 只是想确保我尽可能多地提供信息。这就是我将Javascript文件加载到我的html文件中的方法:<script src="js/onsenui.js"></script>
<script src="js/angular/angular.js"></script>
<script src="js/angular-onsenui.js"></script>
<script src="js/jquery-3.1.0.js"></script>
<script src="js/jquery-ui.js"></script>
<script src="js/moment.min.js"></script>
<script src="js/jquery.mobile-1.4.5.min.js"></script>
<!--CONTROLLERS-->
<script src="app.js"></script>
<script src="appController.js"></script>
<script src="helpers.js"></script>
<script src="cordova.js"></script>
<script src="scripts/index.js"></script>
答案 0 :(得分:0)
我建议的一件事是在您的代码可能调用Cordova API之前,将引用进一步移动到cordova.js
。像这样:
<!--CONTROLLERS-->
<script src="cordova.js"></script>
<script src="js/onsenui.js"></script>
<script src="js/angular/angular.js"></script>
<script src="js/angular-onsenui.js"></script>
<script src="js/jquery-3.1.0.js"></script>
<script src="js/jquery-ui.js"></script>
<script src="js/moment.min.js"></script>
<script src="js/jquery.mobile-1.4.5.min.js"></script>
<!--CONTROLLERS-->
<script src="app.js"></script>
<script src="appController.js"></script>
<script src="helpers.js"></script>