Vue组件库开发

市面上目前已有各种各样的UI组件库,比如 Element 和 iView,他们的强大毋庸置疑。但是我们面临的情况是需求越来越复杂,当它们不能再满足我们需求的时候,这个时候就有必要开发一套属于自己团队的组件库了。

为何要进行组件库开发

如果你所在的公司对于页面的样式没有什么要求,那么你只要随便拿一个组件库来用就行了,比如element、iView等等,不用再重复造轮子了;
如果你目前只有个人用一个组件,或者是只对个别组件有要求,那么只要在你的工程里面开发一个.vue单文件组件就可以了;如果你的团队想要一个更加快速的开发方式,希望有一套一类应用的标准,并且对组件的样式有较高的要求,那么你就需要开发一个组件库了。

正确的学习方式

我觉得我写完这篇文章以后,大家看完可能只是能按部就班地开发一个组件库而已,而且具体的记忆和理解不是很深,所以我觉得正确的方式应该是站在巨人的肩膀上,比如去查看element组件库的源码,去了解他的文件组织方式,文档是如何管理的,主题文件是如何管理的,以及一些复杂组件是如何实现的。接下来,我们就进入正题。

步骤

我们来理一下整个步骤:

创建项目

调整项目结构

编写组件

使用vue-cli-service库模式打包编译

发布到npm

开发步骤

第一步创建一个项目

调整目录

将项目的目录调整到以下形式,该目录方式像是成了业界不成名的规定,element和iview都是以这样的方式组织的。我觉得挺好的,所以不做修改了。

目录调整以后,我们需要修改相应的webpack配置,使原来的src目录指向修改后的examples目录,修改vue.config.js文件:


const path =
require(‘path‘)

function resolve
(dir) {

return path.join(__dirname, ‘..‘, dir)

}

module.exports = {

// 将entry指向examples

pages: {

index: {

entry:
‘examples/main.js‘,

template: ‘public/index.html‘,

filename: ‘index.html‘

}

},

// 为packages目录添加babel-loader处理

chainWebpack:
config => {

config.module

.rule(‘js‘)

.include

.add(resolve(‘packages‘))

.end()

.use(‘babel‘)

.loader(‘babel-loader‘)

.tap(options => {

return options

})

}

}

编写组件

packages目录下面的文件组织情况如下:

其中:

|-- datePicker      // 新编写的组件,以datepicker为例

|-- theme-default   // 主题文件

主题文件较为特殊,他作为单独的一个包进行发布引入,方便进行主题发布,后面再进行介绍。下面对datePicker进行介绍:


<template>

<div>这是一个datePicker组件</div>

</template>

<script>

export default {

 
name
: ‘datePicker‘

}

</script>

datePicker/index.js


/* eslint-disable */

import datePicker
from ‘./src/datePicker.vue‘;

datePicker.install = function (Vue) {

Vue.component(datePicker.name, datePicker)

}

export default datePicker

批量注册组件

Package/index.js


/* eslint-disable */

import datePicker
from ‘./datePicker‘;

const components
= [

datePicker

]

const install =
function (Vue) {

if (install.installed) return

components.map(component =>
Vue.component(component.name, component))

}

if (typeof
window !== ‘undefined‘ && window.Vue) {

install(window.Vue)

}

export default {

install,

datePicker

}

本地测试组件

我们的组件以及编写完成,第一步先在本地进行测试:

examples/main.js


/* eslint-disable */

import Vue from ‘vue‘;

import App from ‘./App.vue‘;

import datePicker
from ‘./../packages/index‘

Vue.use(datePicker)

Vue.config.productionTip = false;

new Vue({

render: h =>
h(App),

}).$mount(‘#app‘);

如何在浏览器中就可以看到我们的组件运行成功了,下一步就是要将我们的代码打包成npm库了,那么需要通过vue-cli3中vue-cli-service的库模式进行打包。

package.json

执行 npm run build-lib

修改package.json

主要要修改的是:

{

"private": false,     
// 是否私有,必须指定为false才能发布到npm

"main": "lib/fklhenu.umd.min.js", // 编译后包的入口文件

}

根目录添加.npmignore文件

发布到npm下,只需要lib目录、package.json 和readme.md文件,所以需要忽略掉其他的目录
.npmignore

examples/
packages/
public/
vue.config.js
postcss.config.js
babel.config.js
*.map

登录npm

原文地址:https://www.cnblogs.com/ninghu996926/p/11696348.html

时间: 2024-08-24 13:24:40

Vue组件库开发的相关文章

如何打造一套vue组件库

开篇组件库能帮我们节省开发精力,无需所有东西都从头开始去做,通过一个个小组件拼接起来,就得到了我们想要的最终页面.在日常开发中如果没有特定的一些业务需求,使用组件库进行开发无疑是更便捷高效,而且质量也相对更高的方案. 目前的开源组件库有很多,不管是react还是vue的体系里都有很多非常优秀的组件库,比如我经常使用的就有elementui和iview.当然也还有其他的一些组件库,他们的本质其实都是为了节省重复造基础组件这一轮子的过程.也有的公司可能会对自己公司的产品有特别的需求,不太愿意使用开源

前端框架Vue自学之Vue组件化开发(三)

终极目标:掌握和使用Vue(全家桶:Core+Vue-router+Vuex) 本博客目的:记录Vue学习的进度和心得(Vue组件化开发) 内容:通过官网说明,掌握Vue组件化开发. 正文: Vue组件化开发 一.认识组件化 原文地址:https://www.cnblogs.com/xinkuiwu/p/12037281.html

将 Vue 组件库发布到 npm

制作了一套自己的组件库,并发布到npm上,项目代码见 GitHub . 前期准备 有一个npm账号 安装了vue-cli 搭建项目 vue init webpack hg-vcomponents cd hg-vcomponents cnpm install 目录结构 - vue-flag-list + build + dist // 存放发布到npm的代码 - src - components // 存放组件源代码 和 README.md - arrows arrows.vue README.m

vue组件化开发实战 - 实现简易ElementUI的Form表单组件

Input 组件 功能: 进行数据双绑 通知FormItem组件校验 <template> <div> <input :type="type" :value="value" @input="onInput" v-bind="$attrs" > </div> </template> <script> export default { inheritAttrs

Vue组件库 VV-UI 开始接受PR啦,有兴趣小伙伴可以一起参与开源哦。

前言: 刚开源出来的VV-UI目前刚刚起步,组件不是很多,非常欢迎大家的pr和Star.项目地址: https://github.com/VV-UI/VV-UI演示地址: https://vv-ui.github.io/VV-UI/#/目前组件库已经引入meta-info管理单页面title meta link等常用的seo问题.回归正题,如何搭建一套基于Vue的组件库呢? 1. 环境准备 我们搭建组件库,需要准备一系列环境,首先我们要考虑一下问题: 脚手架如何搭建 如何规划目录结构 如何编写文

vue组件库(一):前期准备工作

前言 将近期项目内自行开发一个vue组件,做个总结,记录下自己的思维过程~~~ 正文 接到这个任务后,还是要做些准备工作的. 主要内容如下: 1.优化下所在团队前端开发流程 服务器搭建gitlab,采用git进行代码版本管理 服务器搭建npm私服(基于verdaccio) 2.继续学习webpack4 3.学习借鉴两个vue组件,element-ui和ant-desigin-vue 总结 很遗憾,所在团队前端开发流程不够规范和完善,想借此次组件开发,推一些前端的新技术并多多产出一些团队共享资源

Vue组件化开发

一. 通过axios实现数据请求 1. json简介 json是 JavaScript Object Notation 的首字母缩写,单词的意思是javascript对象表示法,这里说的json指的是类似于javascript对象的一种数据格式. json的作用:在不同的系统平台,或不同编程语言之间传递数据. 1.1 json数据的语法 json数据对象类似于JavaScript中的对象,但是它的键对应的值里面是没有函数方法的,值可以是普通变量,不支持undefined,值还可以是数组或者jso

vue组件化开发-vuex状态管理库

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex 也集成到 Vue 的官方调试工具 devtools extension,提供了诸如零配置的 time-travel 调试.状态快照导入导出等高级调试功能. 以上是vuex的官方文档对vuex的介绍,官方文档对vuex的用法进行了详细的说明.这里就不再细讲vuex的各个用法,写这篇博客的目的只是帮助部分同学更快地理解并上手vuex.

Vue组件库

Vux (这个大家都知道的) https://vuxjs.gitbooks.io/vux/content/ vue-strap (bootstrap 的 Vue 版 1.0的)http://yuche.github.io/vue-strap/ n3-components(电脑端UI,貌似刚出来的,没下面几个好看)https://n3-components.github.io/N3-components/ iview(电脑端,vue1.0)https://www.iviewui.com/ vue-