实用webpack插件之ProvidePlugin
现代化前端的全局引入是一个很有趣的东西。 先来看下以下几个场景: 在webpack中,我们可以在resolve的alias中定义一个层级较高的目录为一个自定义变量。例如 resolve: { alias: { '@': path.join(__dirname, '..', 'src') }} 。 在webpack中,我们也可以通过DefinePlugin将配置文件按照环境变量进行区分,高效的完成配置文件的按环境引入,无论是开发构建还是生产构建,都十分有用。 在vue中,我们可以将一个常用的方法或者库定义在Vue.ptototye上,可以通过直写属性,也可以通过vue中的plugin install上去。例如 Vue.prototype.$_ = lodash ,在应用了vue的应用上下文中,可以通过this.$_获得对lodash的引用。 在vue中,还有mixins,inject以及vuex等等这些全局绑定或者叫混入、注入方式的全局引入的实现。 来思考一个问题: 如果我们再Vue.prototype上绑定了太多,太大的第三方库,会不会导致root vue过大? 答案是肯定的。 有没有办法解决这个问题? 你可能会说,我不用this.xxx。用到的vue单文件组件直接import或者require就好了。 如果数以百计,数以千计甚至是数以万计的.vue文件中用到了呢?一直引入吗?