Vue组件封装并使用NPM发布的教程

  

  

<>强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文件

  

开发单个组件:

  

先看一下目标效果:
  

  

 Vue组件封装并使用NPM发布的教程

  

开始开发:
  

  

,在包文件夹下新建一个开关文件夹用来存放开关组件的源码,继续在开关文件夹中新建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发布的教程