如何优雅的书写vue组件,并发布到npm?

578 阅读3分钟

什么是Vue组件呢?

它是vue.js最强大的功能之一,是可扩展的html元素,是封装可重用的代码,同时也是Vue实例,可以接受相同的选项对象(除了一些根级特有的选项) 并提供相同的生命周期钩子。 组件系统是Vue.js其中一个重要的概念,它提供了一种抽象,让我们可以使用独立可复用的小组件来构建大型应用。

使用组件的好处?

  • 提高开发效率
  • 方便重复使用
  • 简化调试步骤
  • 提升整个项目的可维护性
  • 便于多人协同开发

官方文档对于vue插件的说明:

插件通常会为 Vue 添加全局功能。插件的范围没有限制——一般有下面几种:

  1. 添加全局方法或者属性,如: vue-custom-element
  2. 添加全局资源:指令/过滤器/过渡等,如: vue-touch
  3. 通过全局 mixin 方法添加一些组件选项,如: vue-router
  4. 添加 Vue 实例方法,通过把它们添加到 Vue.prototype 上实现。
  5. 一个库,提供自己的 API,同时提供上面提到的一个或多个功能,如: vue-router

代码如下:

MyPlugin.install = function (Vue, options) {
    // 第一种方法. 添加全局方法或属性
    Vue.myGlobalMethod = function () {
        // 逻辑...
    }

    // 第二种方法. 添加全局资源
    Vue.directive('my-directive', {
        bind (el, binding, vnode, oldVnode) {
            // 逻辑...
        }
        ...
    })

    // 第三种方法. 注入组件
    Vue.mixin({
        created: function () {
        // 逻辑...
        }
         ...
    })

    // 第五种方法. 添加实例方法
    Vue.prototype.$myMethod = function (methodOptions) {
        // 逻辑...
    }

    // 第六种方法,注册组件
    Vue.component(组件名, 组件)
}

根据你的封装需求选择不同的形式,例如showToast提示可以选择Vue.prototype,输入框自动获取焦点可以选择Vue.directive指令,自定义组件可以选择Vue.component的形式。

具体组件编写这里不做详细解释,千万记得书写说明文档。

组件编写完如何发布到npm呢

  1. 提交github托管仓库
  2. 初始化自己要发布的项目
    搭建本地环境:安装node.js,包含了npm命令。 新建目录,在该目录下,初始化项目:npm init。 按照提示填写初始化信息:
名称 作用
version 包的版本
description 包的描述。主要描述你的包是用来做什么的。
entry point 包入口文件,默认是Index.js,可以自定义。
test command 测试命令,这个直接回车就好了,暂时不需要
git repository 包的git仓库地址,npm自动读取.git目录作为这一项的默认值。没使用则回车略过
keyword 包的关键词。该项会影响到用户怎样才能搜到你的包,可以理解为搜索引擎悠哈的关键词
author 作者
license 开源协议,回车就好。

我的模块名称为:showToast,初始版本号:v1.0.0。 最关键的不能够与已有NPM模块名冲突,模块是否可用去搜索一下就可以,如果存在不可用,不存在则可用:点击这里搜索

  1. 如果没有npm 账号,注册一个npm 账号(npm adduser 或者去官网注册),并验证邮箱

注意:如果配置了淘宝镜像,先设置回npm镜像:
npm config set registry registry.npmjs.org

  1. 在终端执行登录命令:npm login

出现上面提示 loggen in as XXX on xxx. 为登录成功

  1. 如果是更新,发布前记得手动更改 package.json ,或用命令行更新项目版本号,注意每次发布的版本号不能相同:(有更新记得更新版本号)
npm version x.x.x  

npm version后面参数说明:
patch:小变动,比如修复bug等,版本号变动 v1.0.0->v1.0.1
minor:增加新功能,不影响现有功能,版本号变动 v1.0.0->v1.1.0
major:破坏模块对向后的兼容性,版本号变动 v1.0.0->v2.0.0

  1. 登录成功后,运行npm publish命令将npm包发布到npm上。

插件名称--注意不要和别人同名,会报错。
发布成功后,过几分钟就可以搜到你的包了。

  1. 直接在命令行中打开项目主页查看:npm home [name]

感谢你的阅读

首次发文多多指导

如果觉得喜欢,就收藏一下或者star一下呗,或者也可以给我的github来颗 star~~

github.com/liyan0411