Cordova 2.4.0以降では、AMDがjavascriptにロードするためのAMDをサポートしています。私は特に、RequireJS、バックボーン、jquery、jquery mobileの最新バージョンでCordova 2.5.0を使用することを検討しています。Cordova 2.4.0または2.5.0または2.6.0およびrequirejs
私はまだ、requirejsでCordovaの新しいバージョンを正しく使用する方法に関するチュートリアルや投稿を見ていません。私はCordovaを組み込む方法と、CordovaがAMD(2.3.0以前)をサポートしていなかったときにrequirejsを組み込む方法について、たくさんの記事を見ています。
誰かがこれの簡単な例を投稿したり指摘したりすることができれば、非常に感謝しています。
編集: 具体的には、iOSの開発をターゲットにしています。
編集: 私はより具体的になりたいと私は実行している正確な問題を含める。
main.js
require.config({
paths: {
cordova: 'libs/cordova/cordova.ios',//cordova-2.5.0',//2.5.0*/
jquery: 'libs/jquery/jquery.min',//1.9.1
text: 'libs/require/text',
domReady: 'libs/require/domReady',
underscore: 'libs/underscore/underscore-min',
backbone: 'libs/backbone/backbone-min',
'jquery.mobile-config': 'libs/jquery-mobile/jqm-config',
'jquery.mobile': 'libs/jquery-mobile/jquery.mobile.min'
},
shim: {
backbone: {
deps: ['jquery', 'underscore'],
exports: 'Backbone'
},
underscore: {
exports: '_'
},
'jquery.mobile': {
deps: ['jquery', 'jquery.mobile-config']
}
}
});
require(['app'], function(App){
App.initialize();
});
明確にするため
define([
'cordova',
'jquery',
'underscore',
'backbone',
'router'
], function(cordova, $, _, Backbone, Router){
var initialize = function(){
Router.initialize();
}
return {
initialize: initialize
};
});
をapp.js私はrequire.jsプロジェクトを最適化する前に、すべてが正常に動作します。 r.js(require.jsの一部)を使用してプロジェクトを最適化しようとすると、オプティマイザは以下のエラーをスローします。
私がされてchannel.jsかわからないですし、なぜそれがそれを求めているが、私はそれがあるサブディレクトリを作成したら、私はここに https://github.com/apache/cordova-js/tree/master/lib/common
githubの上でそれを見つけることができました探して、私はそれにchannel.jsファイルを配置します。私はもはやそのエラーを得ることはできませんが、今は別のものです。
私はまた、コルドバ-jsからのgithubのサイトでそのファイルを見つけることができました。そのファイルをサブディレクトリに置くと、エラーメッセージは表示されず、プロジェクトは正常に構築されます。
これで、最適化された単一のjsファイルを使用してアプリケーションを実行しようとすると、javascriptコンソールでこのエラーが発生し、デバイス上に白い画面が表示されます。
"にReferenceError:変数を見つけることができません:輸出": ここ
は私build.jsは私が最適化
({
baseUrl: "../js",
mainConfigFile: "../js/main.js",
name: "../js/main",
out: "../js/big.js",
preserveLicenseComments: false,
paths: {
requireLib: "../js/libs/require/require"
},
include: "requireLib"
})
編集4/11/13を実行するために使用していますファイルです。 Answer SAユーザasgeo1のおかげで、私は私の問題を解決しました。 main.js 'cordova'の変数名は、 'cordova'という内部変数と衝突するため、名前を付けることはできません。
解決策は次のとおりです。
メイン。JS
require.config({
paths: {
'cordova.ios': 'libs/cordova/cordova.ios',//cordova-2.5.0' THIS IS CHANGED
jquery: 'libs/jquery/jquery.min',//1.9.1
text: 'libs/require/text',
domReady: 'libs/require/domReady',
underscore: 'libs/underscore/underscore-min',
backbone: 'libs/backbone/backbone-min',
'jquery.mobile-config': 'libs/jquery-mobile/jqm-config',
'jquery.mobile': 'libs/jquery-mobile/jquery.mobile.min'
},
shim: {
backbone: {
deps: ['jquery', 'underscore'],
exports: 'Backbone'
},
underscore: {
exports: '_'
},
'jquery.mobile': {
deps: ['jquery', 'jquery.mobile-config']
}
}
});
require(['app'], function(App){
App.initialize();
});
app.js
define([
'cordova.ios',//THIS IS CHANGED
'jquery',
'underscore',
'backbone',
'router'
], function(cordova, $, _, Backbone, Router){
var initialize = function(){
Router.initialize();
}
return {
initialize: initialize
};
});
このソリューションは、動作し、遅延ロードを使用するにはコルドバ2.5.0および2.6.0で
私は一度requirejsとコルドバ2.2.0を使用しました。それはまだ新しいバージョンに適用されているかどうかは分かりませんが、それはあなたを助けるかもしれません:http://stackoverflow.com/a/13955963/1916258 – asgoth
私のOPで述べたように、cordova 2.4.0以上の能力requirejsを使って遅延ロードする。これは具体的に私がやっていることです。それが言われて、私はあなたの方法を試して、それは動作しませんでした。 r.jsでコードを最適化すると、主に問題が発生します。コードワーバが依存している2つの.jsファイルが存在しないという2つのエラーがスローされます。私はgithub上のそれらの2つのファイルを見つけました、そして、それらを最適化する構造に配置すると、コードはエラーを投げ、アプリケーションはデバイス/ sim上で動作しません。コードを最適化する前に、私は何のエラーも経験しません。 – njtman
Woha jtman、私は時間を節約してくれたと思います。同じ問題が発生しました:-) – codevour