main.js
(RequireJS-wayで)すべてのページにカスタムファイルを読み込むには、これが良い方法です。
1)作成 main.js
main.js
テーマフォルダー内に作成する
<theme_dir>/web/js/main.js
このコンテンツで:
define([
"jquery"
],
function($) {
"use strict";
// Here your custom code...
console.log('Hola');
});
要するに、開始時に依存関係を宣言し"jquery"
ます。関数内の依存関係を使用するための変数名を関数のパラメーターとして定義します"jquery" --> $
。すべてのカスタムコードをに入れますfunction($) { ... }
。
2)宣言main.js
しrequirejs-config.js
たファイル
requirejs-config.js
テーマフォルダー内にファイルを作成します。
<theme_dir>/requirejs-config.js
このコンテンツで:
var config = {
// When load 'requirejs' always load the following files also
deps: [
"js/main"
]
};
"js/main"
は、カスタムへのパスmain.js
です。「.js」拡張子は不要です。
私たちrequirejs-config.js
はrequirejs-config.js
Magentoで定義されている他の製品と統合されます。
RequireJSはmain.js
各ページにファイルを読み込み、依存関係を解決し、非同期でファイルを読み込みます。
オプション:サードパーティライブラリを含む
これは、サードパーティのライブラリを含める方法です。
1)にライブラリを追加しますweb/js
。
<theme_dir>/web/js/vendor/jquery/slick.min.js
2)requirejs-config.js
このコンテンツを開いて追加します。
var config = {
deps: [
"js/main"
],
// Paths defines associations from library name (used to include the library,
// for example when using "define") and the library file path.
paths: {
'slick': 'js/vendor/jquery/slick.min',
},
// Shim: when you're loading your dependencies, requirejs loads them all
// concurrently. You need to set up a shim to tell requirejs that the library
// (e.g. a jQuery plugin) depends on another already being loaded (e.g. depends
// on jQuery).
// Exports: if the library is not AMD aware, you need to tell requirejs what
// to look for so it knows the script has loaded correctly. You can do this with an
// "exports" entry in your shim. The value must be a variable defined within
// the library.
shim: {
'slick': {
deps: ['jquery'],
exports: 'jQuery.fn.slick',
}
}
};
実際よりも複雑に見えます。
3)内に依存関係を追加しますmain.js
。
define([
'jquery',
'slick'
],
function($) {
// ...
});