通过npm引用的vue组件使用详解

前端之家收集整理的这篇文章主要介绍了通过npm引用的vue组件使用详解前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

什么是组件:组件是Vue.js最强大的功能之一。组件可以扩展HTML元素,封装可重用的代码。在较高层面上,组件是自定义的元素,Vue.js的编译器为它添加特殊功能。在有些情况下,组件也可以是原生HTML元素的形式,以is特性扩展。

如何注册组件?

需要使用Vue.extend方法创建一个组件,然后使用Vue.component方法注册组件。Vue.extend方法格式如下:

如果想要其他地方使用这个创建的组件,还得个组件命个名:

命名之后即可在HTML标签中使用这个组件名称,像使用DOM元素一样。

文章通过实现一个vue-dialog的弹出层组件,然后附加说明如果发布此包到npm,且能被其他项目使用。

功能说明

  • 多层弹出时,只有一个背景层。
  • 弹出层嵌入内部组件。
  • 弹出层按钮支持回调

实现

使用vue的component组件实现,他可以完美支持

弹出层按钮支持回调

在master.vue中实现,详细解析此代码

HTML代码

  • comps:内部组件的集合
  • realIndex:一个computed属性,读取props的mIndex属性,表示内部层的zIndex层级关系。
  • component加载组件
  • btns:表示按钮的集合,现还不支持组件独立配置按钮列表。
  • style:此方法用于生成内部组件居中的css代码

js代码:

import hDialogBack from './background'

function getclientPoint () {
return {
width: document.documentElement.clientWidth || document.body.clientWidth,height: document.documentElement.clientHeight || document.body.clientHeight
}
}

export default {
name: 'HDialog',data () {
return {
comps: []
}
},props: {
'btns': {
type: Array,default: function () {
return [{ text: 'ok',value: 'ok'},{ text: 'cancel',value: 'cancel'}]
}
},'mIndex': {
type: Number,default: 19861016
}
},computed: {
realIndex: function () {
return this.mIndex
}
},components: {
hDialogBack
},methods: {
open: function (comp) {
comp.promise = new Promise(function (resolve,reject) {
comp.resolve = resolve
comp.reject = reject
})
comp.width = comp.width || 600
comp.height = comp.height || 400
this.comps.push(comp)
if (!this.$refs.back.show) {
this.$refs.back.open()
}
return comp.promise
},clickHandler: function (type,index) {
let self = this
let close = function () {
self.comps.splice(index,1)
if (self.comps.length === 0 && self.$refs.back.show) {
self.$refs.back.close()
}
}
/* 只提供promise模式 /
comp.resolve({'type': type,'close': close})
},style: function (index,comp) {
let point = getclientPoint()
return {
zIndex: this.realIndex + index,width: comp.width + 'px',height: comp.height + 'px',left: ((point.width - comp.width) / 2) + 'px',top: ((point.height - comp.height) / 2) + 'px'
}
}
}
}

  • open方法,用于打开弹出层,且返回一个Promise。
  • 嵌入background.vue组件,用于提供背景层。
  • clickHandler方法:master.vue组件按钮的事件响应函数,会resolve在open方法中提供的promise。

css代码

.modal-content { position: absolute; }

如何实用

  • 首先需要在顶层引入master.vue,然后嵌入到与app组件平级,如下代码
',components: { App } })

一定要指定ref值,这是弹出层实现的关键。

  • 在任意一个子组件中如下使用:
第二层了
' }) promise.then(function (arg) { alert('第二层' + arg.type) arg.close() })
  • 使用$root.$refs找到弹出层管理组件
  • 使用调用其open方法,并接受一个promise类型的返回值
  • 使用promise即可。

发布到npm

  • 如果组件需要被其他人引用,最好使用commonjs2规范,webapck如下配置:
  • 在npmjs上注册一个账号
  • 利用npm login 登录
  • 使用npm publish 发布,如果你想卸载可以用npm unpublish --force.
  • 发布是需要package.json检测version和name字段,如果已存,或者是存在被卸载的都不行。
  • package.json中的main节点是指定其他引用时,默认导出的文件

以上所述是小编给大家介绍的通过npm引用的vue组件使用详解。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持

猜你在找的Vue相关文章