Jquery mobile phonegap+;jquerymobile,良好实践

Jquery mobile phonegap+;jquerymobile,良好实践,jquery-mobile,cordova,Jquery Mobile,Cordova,直到现在,我还没有使用Phonegap推荐的index.js: var app = { // Application Constructor initialize: function() { this.bindEvents(); }, // Bind Event Listeners // // Bind any events that are required on startup. Common events are: // 'load', 'deviceready', 'offlin

直到现在,我还没有使用Phonegap推荐的index.js:

var app = {
// Application Constructor
initialize: function() {
    this.bindEvents();
},
// Bind Event Listeners
//
// Bind any events that are required on startup. Common events are:
// 'load', 'deviceready', 'offline', and 'online'.
bindEvents: function() {
    document.addEventListener('deviceready', this.onDeviceReady, false);
},
// deviceready Event Handler
//
// The scope of 'this' is the event. In order to call the 'receivedEvent'
// function, we must explicity call 'app.receivedEvent(...);'
onDeviceReady: function() {
    app.receivedEvent('deviceready');
},
// Update DOM on a Received Event
receivedEvent: function(id) {
    var parentElement = document.getElementById(id);
    var listeningElement = parentElement.querySelector('.listening');
    var receivedElement = parentElement.querySelector('.received');

    listeningElement.setAttribute('style', 'display:none;');
    receivedElement.setAttribute('style', 'display:block;');

    console.log('Received Event: ' + id);
}
};
我应该把我自己的js函数和事件(我所有的js文件)放在哪里,放在这个文件中,放在另一个文件中

相对于调用js文件的位置,我应该在哪里调用这些js文件,在哪里调用app.initialize

这是我的html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="height=device-height,width=device-width,initial-scale=1.0,maximum-scale=1.0">
    <link rel="stylesheet" href="css/jquery.mobile-1.3.2.css" type="text/css" media="all" />
    <link rel="stylesheet" href="css/style.css" type="text/css" media="all" />
    <script src="js/jquery-1.9.1.js"></script>
    <script src="js/index.js"></script>
     <script type="text/javascript" src="js/index.js"></script>
     <script type="text/javascript">
            app.initialize();
      </script>

    <script src="js/jquery.mobile.config.js"></script>
    <script src="js/jquery.mobile-1.3.2.js"></script>
    <script src="js/jquery-geturlvar.js"></script>
    <script src="js/boardDims.js"></script>
    <script src="js/functions.js"></script>
<!--        <script src="cordova.js"></script>-->
</head>
<body>

app.initialize();
目前,我正在使用远程服务进行编译:$phonegap remote run android


对于像我这样的初学者来说,使用Phonegap+JQM创建应用程序的默认模板非常有用;-)

index.js就是一个例子,您实际上不需要使用它。它主要向您展示如何使用
ondevicerady
。使用插件时需要使用
ondevicerady
,因为它们的大多数调用只有在触发
ondevicerady
后才可用。因此,您可以将对侦听器上插件的调用连接到
ondevicerady
。例如,我是这样做的:

        <script type="text/javascript">
            function onLoad() {
                document.addEventListener("deviceready", MYAPP.events.onDeviceReady, false);
           }
        </script>
    </head>
    <body onload="onLoad();">

函数onLoad(){
document.addEventListener(“deviceready”,MYAPP.events.onDeviceReady,false);
}
在MYAPP.events.ondevicerady中,我调用地理位置、摄像头或任何我正在使用的插件

顺便说一句,在你的例子中需要注意两件重要的事情:在你可以访问OnDevicerady或使用任何插件之前,你需要包括
cordova.js
,另外你还需要包括
index.js
两次。也许您复制了
来编辑它,并包含了
js/cordova.js
而忘记了更改名称/路径

除此之外,我所做的是将应用程序的JS和外部lib分离到两个单独的目录中,以便更好地组织,如“lib”和“JS”,因此您将包括“JS/functions.JS”和“lib/jquery.JS”

我在body标记的底部包括libs和自定义JS文件,以获得更好的性能:


我根据用途/内容将文件命名为“js”(应用程序的自定义js文件),如:events.js、models.js、settings.js、util.js等等。。。您可以在上面的代码片段中看到,我已经在应用程序的大写名称下“命名”了我的自定义JS对象,因此util.JS中的所有内容都将被调用为:
MYAPP.util.formatDate()

非常感谢您精确而友好的回答。事实上,我包括index.js两次,我的错误!谢谢你的“最好的地方”我不确定,现在我确定了。我不明白的是initialize和onDeviceReady之间的区别/关系。。。我还不清楚