Magento 2 JS 開発に関するすべての回答を得るのに最適な場所は、Magento 2 のドキュメントです。これは、これに関する有用なリソースです。http://devdocs.magento.com/guides/v2.0/javascript-dev-guide/javascript/js_init.htmlでは、コンポーネントの初期化について詳しく説明しています。
上記の 2 つの質問に答えるには -
Q.1. Magento2/RequireJS は、構成のためにどの JS をロードする必要があるかをどのように認識していますか? (これについては、requirejs-config.js が複数の場所で見つかりました)
各 Magento 2 モジュールには、requirejs-config.js
そのすべてのモジュール構成をロードするためのファイルがあります。すなわち
var config = {
map: {
'*': {
compareItems: 'Magento_Catalog/js/compare',
compareList: 'Magento_Catalog/js/list',
relatedProducts: 'Magento_Catalog/js/related-products',
upsellProducts: 'Magento_Catalog/js/upsell-products',
productListToolbarForm: 'Magento_Catalog/js/product/list/toolbar',
catalogGallery: 'Magento_Catalog/js/gallery',
priceBox: 'Magento_Catalog/js/price-box',
priceOptionDate: 'Magento_Catalog/js/price-option-date',
priceOptionFile: 'Magento_Catalog/js/price-option-file',
priceOptions: 'Magento_Catalog/js/price-options',
priceUtils: 'Magento_Catalog/js/price-utils',
catalogAddToCart: 'Magento_Catalog/js/catalog-add-to-cart'
}
}
};
これにより、必要なすべての JavaScript ファイルがどこにあるかが requirejs に伝えられます。
JS ファイルをいつ使用するかを Magento に伝える方法は複数あります -
data-mage-init
HTML 要素で。例えば<div class="block upsell" data-mage-init="{"upsellProducts":{}}" data-limit="0" data-shuffle="0">
ページのスクリプトタグなど
<script type="text/x-magento-init">
{
"[data-role=tocart-form], .form.map.checkout": {
"catalogAddToCart": {}
}
}
</script>
JSファイル内など$('.yourSelector').yourPlugin();
Q.2. デフォルトでは、Magento2 は多数の JS (20 以上) をロードしますが、それらを制限するにはどうすればよいですか?
複数のモジュールの結果としてロードされる JS ファイルの膨大な数は欠点の 1 つですが、Varnish のようなリバース プロキシでフル ページ キャッシュを正しく使用すれば、開発サーバーであってもパフォーマンスの低下は無視できます。