Я разрабатываю структуру кода с импортом/экспортом из ES6, используя шаблон модуля. Итак, в файле у меня есть:
// Product.js
const Product = (function product() {
const productJson = skuJson;
const productTabs = document.querySelectorAll('.js-product-tab');
const handleClickProductTab = (evt) => {...};
const init = () => {
[...productTabs].forEach((tab) => {
tab.addEventListener('click', handleClickProductTab);
});
};
return {
init,
};
}());
export default Product;
А в другом файле я импортирую этот JS-файл Product для дальнейшего использования.
import Product from './product/product';
(function init() {
document.addEventListener('DOMContentLoaded', () => {
Product.init();
});
}());
Я понимаю, что код запускается из-за IIFE, и даже если удалить Product.init();
, переменные все равно будут созданы. Но в том то и дело, что у меня со страниц вылетают ошибки, что те модули не должны читаться.
Как я могу сделать так, чтобы эти переменные, созданные в каждом модуле, создавались только при вызове метода init()
, но эти переменные по-прежнему были доступны для остальной части модуля?
const productTabs = document.querySelectorAll('.js-product-tab');
Это будет вызвано еще до загрузки DOM. - person Keith   schedule 21.06.2018init
.. видно, что init вызывается, когда DOM готов. - person Keith   schedule 21.06.2018window
(илиglobal
в NodeJS). - person Duncan Thacker   schedule 21.06.2018