什么是Vue组件呢?
它是vue.js最强大的功能之一,是可扩展的html元素,是封装可重用的代码,同时也是Vue实例,可以接受相同的选项对象(除了一些根级特有的选项) 并提供相同的生命周期钩子。 组件系统是Vue.js其中一个重要的概念,它提供了一种抽象,让我们可以使用独立可复用的小组件来构建大型应用。
使用组件的好处?
- 提高开发效率
- 方便重复使用
- 简化调试步骤
- 提升整个项目的可维护性
- 便于多人协同开发
官方文档对于vue插件的说明:
插件通常会为 Vue 添加全局功能。插件的范围没有限制——一般有下面几种:
- 添加全局方法或者属性,如: vue-custom-element
- 添加全局资源:指令/过滤器/过渡等,如: vue-touch
- 通过全局 mixin 方法添加一些组件选项,如: vue-router
- 添加 Vue 实例方法,通过把它们添加到 Vue.prototype 上实现。
- 一个库,提供自己的 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呢
- 提交github托管仓库
- 初始化自己要发布的项目
搭建本地环境:安装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模块名冲突,模块是否可用去搜索一下就可以,如果存在不可用,不存在则可用:点击这里搜索。
- 如果没有npm 账号,注册一个npm 账号(npm adduser 或者去官网注册),并验证邮箱
注意:如果配置了淘宝镜像,先设置回npm镜像:
npm config set registry registry.npmjs.org
- 在终端执行登录命令:npm login
出现上面提示 loggen in as XXX on xxx. 为登录成功
- 如果是更新,发布前记得手动更改 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
- 登录成功后,运行npm publish命令将npm包发布到npm上。
插件名称--注意不要和别人同名,会报错。
发布成功后,过几分钟就可以搜到你的包了。
- 直接在命令行中打开项目主页查看:npm home [name]
感谢你的阅读
首次发文多多指导
如果觉得喜欢,就收藏一下或者star一下呗,或者也可以给我的github来颗 star~~