wordpress建站模板,做平面什么网站好用,网站源码 后台,知名网络营销推广本文主要是面向写组件库的人士#xff0c;而不是组件库的使用人士。
出现原因
根本原因是因为组件库的package.json中 dependencies包含了vue包#xff0c;然后导致最后打包出来的组件库也包含vue包 然后和引用这个组件库的项目中的vue发生冲突。
举个例子#xff0c;pro…本文主要是面向写组件库的人士而不是组件库的使用人士。
出现原因
根本原因是因为组件库的package.json中 dependencies包含了vue包然后导致最后打包出来的组件库也包含vue包 然后和引用这个组件库的项目中的vue发生冲突。
举个例子project1是vue组件库package.json中dependencies包含了vue:“2.6.1” project1打包出了project1:“0.0.1” 这个组件包 然后project2是项目代码package.json中dependencies包含了vue:“2.6.1和project1”:“0.0.1” 这样在使用project1的组件时就会出现readonly错误
预防方法
这给我们写组件库一个启示千万不要在package.json中dependencies包含了vue包
特殊场合
但有两种情况你会在组件库中不自觉用到Vue对象 1.利用Vue的templateCompile即模板编译器 2.利用Vue.component进行全局组件注册 首先第一点很简单参考一下其他开源Vue库的实现例如elementUI
发现引用了vue/component-compiler-utils包和vue-template-compiler然后查看用法 这样就实现了不引入vue包的情况下使用模板编译功能
2.如果是需要全局注册的情况就比较麻烦了 例如组件库包含某个函数需要全局注册组件
import Vue from vue;
function test(name,component){Vue.component(name,component)
}一般是像上面这么写的因此就不得不引入vue包。
我这的解决方法比较差但也可以解决这个问题如果各位看官有更好的方法求指导 我是这么处理的
import config from ./config.js
function test(name,component){config.Vue.component(name,component)
}config.js
export default {};即通过config.js这个空对象 然后在引入组件包时需要先对config.js对象进行vue注入 以下时引用包project1的时候添加config.js
import Vue from vue;
import {config}from project1;
config.VueVue;然后main.js
import ./config.js;
import project1 from project1;当然不清楚有没有Vue.component单独使用的vue的util库如果有的话求推荐