【发布时间】:2019-01-29 14:07:17
【问题描述】:
我开始学习 ES6 模块和 import/export 语法,我希望我的模块只在需要的地方执行。
我创建了两个简单的模块,它们连接到 <div> 和特定的 class 或 id 以运行。
例如:
// product.js
import Vue from 'vue/dist/vue';
export default function() {
var app = new Vue({
el: '#c-product',
data: {
counter: 0,
},
methods: {
addToCart: function() {
this.counter++;
},
removeFromCart: function() {
this.counter--;
}
}
});
}
然后我有另一个用于轮播的模块:
// carousel.js
import Glide from '@glidejs/glide';
export default function() {
new Glide('.glide', {
type: 'carousel',
startAt: 0,
perView: 3,
breakpoints: {
800: {
perView: 2
}
}
}).mount();
};
然后我将所有内容与 Gulp + Browserify 捆绑在一起,以便在其中导入和执行模块的 main.js 文件:
// main.js
import Product from './product';
import Carousel from './carousel';
Product();
Carousel();
现在我有我的main.js 文件,我准备将其插入.html 页面,但我在控制台中出现错误,具体取决于页面中是否存在这些 div。
示例:如果在 product.html 页面中没有轮播,我在控制台中会出现关于缺少带有轮播类的 <div> 的错误。
希望清楚。
你能帮我理解吗?
【问题讨论】:
-
你的错误是什么?
-
我添加了一张图片。
-
错误表明根元素(id c-product)必须存在。这是一个疯狂的想法 - 您是否检查过该元素是否存在于 dom 中?
-
@Kaspars
#c-product存在,其实错误不在轮播上。但我的问题是:我是否必须将我的模块实例化到main.js中? -
我看不出这与模块有什么关系。或者您是否希望为不同的页面创建不同的脚本,只导入该特定页面上需要的模块?
标签: javascript ecmascript-6 bundle es6-modules