<>强Vue开发插件强>
我们可以先查看Vue的插件的开发规范
我们开发的之后期望的结果是支持进口,需要或者直接使用脚本标签的形式引入,就像这样:
ps:这里注意一下包的名字前缀是unisoft,组件的名字前缀是大学
从“进口UniSoftUI unisoft-ui ';//或者const CustomUI=要求(“unisoft-ui”);//或者& lt;脚本src=" https://www.yisu.com/zixun/.. "祝辞& lt;/script> Vue.use (UniSoftUI);>之前回到顶部
<>强构建一个Vue项目强>
开发组件我们使用webpack-simple模板:
vue init webpack-simple & lt; project-name>
引用>ps:这里我选择了使用sass因为之后开发组件会用到
目录结构如图:
├──src/,,,,,,,,,,,,,,,,,,,,,,,,,,//源码目录
│,,├──包/,,,,,,,,,,,,,,,,,//组件目录
│,,│,,├──开关/,,,,,,,,,,,,,,,//组件(以交换机为例)
│,,│,,├──uni-switch.vue ,,,,,,//组件代码
│,,│,,├──index.js ,,,,,,,,,,,,,//挂载插件
│,,├──App.vue ,,,,,,,,,,,,,,,,,,//页面入口
│,,├──main.js ,,,,,,,,,,,,,,,,,,//程序入口
│,,├──index.js ,,,,,,,,,,,,,,,,,//(所)有插件入口
├──index.html ,,,,,,,,,,,,,,,,,,,//入口html文件开发单个组件:
先看一下目标效果:
开始开发:
,在包文件夹下新建一个开关文件夹用来存放开关组件的源码,继续在开关文件夹中新建uni-switch。vue和索引。js文件
uni-switch。vue组件:
& lt; template> & lt; div类=皍ni-switch”比; & lt; div类=鞍捌鳌北? & lt; span> & lt; slot> & lt;/slot> & lt;/span> & lt; div: class="[{}:关闭!检查,开关箱的)” 祝辞@click=" handleChange(值)”; & lt;跨度:class="{:关闭!检查}”祝辞& lt;/span> & lt;/div> & lt;输入 type="复选框" @change=" handleChange " :真正价值=" https://www.yisu.com/zixun/activeValue " :错误的值=" https://www.yisu.com/zixun/inactiveValue " 禁用:="禁用" :https://www.yisu.com/zixun/value=凹壑怠?比; & lt;/div> & lt;/div> & lt;/template> & lt; script> 出口默认{ 名称:“UniSwitch”, 数据(){ 返回{} }, 道具:{ 价值:{ 类型:布尔,字符串,数字, 默认值:假 }, activeValue: { 类型:布尔,字符串,数字, 默认值:真正的 }, inactiveValue: { 类型:布尔,字符串,数字, 默认值:假 }, 禁用:{ 类型:布尔, 默认值:假 } }, 计算:{ 检查(){ 返回。值=https://www.yisu.com/zixun/==this.activeValue; } }, 方法:{ handleChange(值){ 这一点。发出(“输入”!这美元。检查& # 63;这一点。activeValue: this.inactiveValue); } } } & lt;/script>索引。js:
//UniSwitch是对应组件的名字,要记得在moor-switch。vue文件中还属是名字性哦 从“进口UniSwitch。/UniSwitch.vue '; UniSwitch。安装=Vue=比;Vue.component (UniSwitch.name UniSwitch); 出口默认UniSwitch;好了基本完成了,但是为了将所有的组件集中起来比如我还有选择、输入、按钮等组件,那么我想要统一将他们放在一个文件这中便于管理
所以在App.vue同级目录我新建了一个索引。js文件
从“进口UniSwitch。/包/开关/指数”; 从“进口UniSlider。/包/滑块/指数”; 从“进口UniNumberGrow。/包/number-grow/指数”; 进口的。/共同/scss/reset.css”//绻褂械幕凹绦砑?=(const组件 UniSwitch, UniSlider, UniNumberGrow//绻褂械幕凹绦砑? ] const安装=function (Vue选择={}){ 组件。地图(组件=比;{ Vue.component (component.name、组件); }) }/*支持使用标签的方式引入*/如果(typeof窗口!==ㄒ濉?,window.Vue) { 安装(window.Vue); } 出口默认{ 安装, UniSwitch, UniSlider, UniNumberGrow//绻褂械幕凹绦砑? }Vue组件封装并使用NPM发布的教程