zoukankan      html  css  js  c++  java
  • vue插件封装、发布到npm详细步骤(实践总结)

    前言:

    在没有封装组件之前,如果不使用第三方插件,那么很多情况下我们会编写几个常用的组件来提供给页面使用,如Alert/Loading组件,而你可能需要在很多页面中引入并且通过components注册组件,但是像这样使用率很高的组件一般我们希望全局注册后直接就可以在相应页面使用,因此我们需要将他们封装成插件,比如像vux这样的ui组件库,即提供了组件功能也提供了某些全局注册的插件。

    一:封装ui组件

    1、新建项目(u-scroll-page),初始化项目,输入插件相关信息

    npm init

    2、新建如下文件

    3、插件放到src文件夹中

    <template>
      <div>
        <div class="button" @click="fn1">
          click
        </div>
      </div>
    </template>
    <script>
    export default {
      name:"yanButton",
      data(){
        return {
    
        }
      },
      props:['msg'],
      methods:{
        fn1(){
          alert(this.msg)
        }
      }
    }
    </script>
    <style>
    </style>

    4、index.js文件,注册插件(可同时注册多个插件)

    import UScrollPage from './src/u-scroll-page'

    UScrollPage.install = function (Vue) {
        Vue.component(UScrollPage.name, UScrollPage)
        // Vue.component(UScrollPage.name, UScrollPage) 注册多个插件
    }
    // 支持使用标签的方式引入Vue  是全局变量global 情况下 自动安装
    if (typeof window !== 'undefined' && window.Vue) {
        install(window.Vue)
    }
    export default UScrollPage

    5、在需要引用的项目里面的main.js进行插件引用

    import UScrollPage from '../../components/u-scroll-page'   // 插件放的位置
    Vue.use(UScrollPage)   // 有暴露install就可以通过Vue.use来调用

    6、需要用到插件的组件里面直接引用

    <u-scroll-page></u-scroll-page>

    补充: 

    同时注册多个组件

    1、在src下的common文件下新建component文件夹用来存放我们的公用全局组件。如下图:

     2、在index.js文件中倒入所有的组件,并封装成install 方法导出。如下:

    import boxShow from './boxShow'
    import boxTip from './boxTip'
    
    const commontCop = { // 导出一个对象,并且给对象里添加install属性方法
      install(vue) { // 这形式参数vue 在vue.use方法被掉用的时候传入vue的实例对象
        vue.component('boxShow', boxShow)
        vue.component('boxTip', boxTip)
      }
    }
    export default commontCop

    导出一个对象,并且给对象里添加install属性方法
    这里的式参数vue 在vue.use方法被掉用的时候传入vue的实例对象,就是上面源码分析中的这一段: plugin.install.apply(plugin, args) 。args中的第一个参数就是unshift进去的vue的实例对象
    3、在main.js中直接使用vue.use注册成为全局组件。如下:

     4. 这样注册好,就可以全局愉快的使用了哦哦。像这样调用:

    注意:我们也可以在main.js中直接使用vue.component方法注册组件,可以参考以前写的文章项目实战之vue爬坑之路:vue框架中如何注册全局公共过滤器filter、全局公共插件、全局公共组件component
    这个方法有个缺点就是这能一个一个注册,也就是说如果要注册多个全局组件,你只能在main.js中写多个vue.component方法

    二、封装js组件

  • 相关阅读:
    贪婪与非贪婪模式
    Arduino语言介绍
    POJ 3249 记忆化搜索或拓扑排序
    POJ 3177 缩点 + 边双连通图
    POJ 1637 网络流构图
    hdu 1285 拓扑排序+优先队列
    POJ 3160 缩点+拓扑排序+简单dp
    POJ 3592 缩点+拓扑排序+最长路
    针对11级队员的暑假训练计划(初稿)
    POJ 2762 缩点+判断是否是最长链
  • 原文地址:https://www.cnblogs.com/qdlhj/p/12720203.html
Copyright © 2011-2022 走看看