如何搭建一个vue2组件库(king-ui-pro)

server/2024/10/18 14:25:47/

文章引用图片无法查看,直接查看原文

感兴趣的可以关注或订阅下这个系列,后续会陆续将相关的组件与公共方法进行分享
目前已经完成了的组件有
多行省略pro版,不是简单的多行省略效果
在这里插入图片描述

公共方法:
1、图片预览,知乎的图片飞出预览方式(flip动画实现)
2、异步函数最大并发量限制,并非分批次,而是尽量保持最大的并发数
3、通用的时间处理函数,用于方便处理时间

创建仓库

"vue-loader": "^17.4.2",

安装vue-cli

npm i @vue/cli -g

创建vue2项目

vue create kl-ui

选择依赖,基本啥都不用安装

依赖

npm i style-loader vue-style-loader css-loader vue-loader@15.9.8 -D

本地调试

为仓库生成一个快捷方式

npm link

在业务仓里面执行

npm link king-ui-pro
npm config get prefix

发布流程

打包

npm run build

自动修改版本号

npm version patch

登录

  • 不能使用淘宝源
npm login

推送

npm publish

全局组件注册与导出工具函数

  • 都需要一个install方法
    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
import * as funs from "../utils/tool.js";
const result = {};// 挂载工具函数
Object.keys(funs).forEach((key) => {result[key] = arr[key];
});const install = (Vue) => {const requireComponent = require.context("./", true, /\.vue$/);requireComponent.keys().forEach((fileName) => {// 获取组件配置const componentConfig = requireComponent(fileName);// 获取组件的 PascalCase 命名const componentName = fileName.split("/").pop().replace(/\.\w+$/, "");const component = componentConfig.default || componentConfig;// 全局注册组件Vue.component(componentName, component);result[componentName] = {install: function (Vue) {Vue.component(componentName, component);},};});
};// 定义install方法
result.install = install;
export default result;

添加按需引入

每个组件都需要一个注入方法
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
每个组件的js

// 引入vue组件
import klMaxEllPro from './index.vue'// 要提供一个install,将来给Vue.use()函数调用的
klMaxEllPro.install = function (Vue) {// 注册组件Vue.component(klMaxEllPro.name, klMaxEllPro)
}export default klMaxEllPro

注册时

import klMaxEllPro from './klMaxEllPro/index.vue';
import klMaxEllProJs from './klMaxEllPro/index.js';const component = [klMaxEllPro]const install = (Vue) =>{component.map(item =>{Vue.component(item.name, item)})
}export default {install,klMaxEllProJs
}

webpack.config.js 添加每个组件的打包

  entry: {// 全部index: './src/components/index.js',// 单个klMaxEllPro: './src/components/klMaxEllPro/index.js',},

页面配置

package.json

{"name": "king-ui-pro","version": "0.1.4","author": "weixijin","description": "vue compnent组件库","main": "dist/index.umd.js","keywords": ["king-ui","ui","vue"],"scripts": {"build": "npx webpack","serve": "vue-cli-service serve","dev": "vue-cli-service serve --open","build-vue": "vue-cli-service build"},"dependencies": {"core-js": "^3.8.3","vue": "^2.6.14","vue-router": "^3.5.1"},"devDependencies": {"@vue/cli-plugin-babel": "~5.0.0","@vue/cli-plugin-router": "~5.0.0","@vue/cli-service": "~5.0.0","css-loader": "^6.8.1","style-loader": "^3.3.3","vue-loader": "^15.9.8","vue-style-loader": "^4.1.3","vue-template-compiler": "^2.6.14","webpack": "^5.88.2","webpack-cli": "^5.1.4"}
}

webpack.config.js


const path = require('path');
const { VueLoaderPlugin } = require('vue-loader');module.exports = {mode:'development',entry: {// 全部index: './src/components/index.js',// 单个klMaxEllPro: './src/components/klMaxEllPro/index.js',},output: {path: path.resolve(__dirname, 'dist'),filename: '[name].umd.js',library: 'king-ui', // 组件库libraryTarget: 'umd'},module: {rules: [{test: /\.css$/,use: ['style-loader','vue-style-loader', 'css-loader'],},{test: /\.vue$/,use: [{loader: 'vue-loader'}]}]},plugins: [new VueLoaderPlugin()]
}

使用

安装组件库

npm i king-ui-pro@latest -S

全局注入

import kingUiPro from 'king-ui-pro'
import {klFun} from 'king-ui-pro'
// 全局注入king-ui-pro组件
Vue.use(kingUiPro)// 全局注入king-ui-pro方法
Object.keys(klFun).forEach((key) => {Vue.prototype[key] = klFun[key]; 
});

按需注入

import {klMaxEllPro,klMoveTo,klFun} from "king-ui-pro"// 挂载工具函数
Object.keys(klFun).forEach((key) => {Vue.prototype[key] = klFun[key]; 
});Vue.use(klMaxEllPro)
Vue.use(klMoveTo)

直接使用js文件如何使用

  • 直接使用js引入的方式,相关组件方法被挂载在window上,对应使用即可
window['king-ui-pro']

http://www.ppmy.cn/server/15526.html

相关文章

【ARMv9 DSU-120 系列 9.1 -- ROM tables】

请阅读【Arm DynamIQ™ Shared Unit-120 专栏 】 文章目录 DSU-120 ROM tablesDebug system address map核心 <n> ROM表集群ELA核心ELA组件调试APB系统地址映射:DSU-120 ROM tables DSU-120(DynamIQ™共享单元-120)具有三种不同类型的ROM表。这些ROM表根据ARM CoreSi…

华为OD机试真题-堆内存申请-2023年OD统一考试(C卷D卷)

题目描述: 有一个总空间为100字节的堆,现要从中新申请一块内存,内存分配原则为优先紧接着前一块已使用内存分配空间足够且最接近申请大小的空闲内存。 输入描述: 输入: 第1行是1个整数,表示期望申请的内存字节数; 第2到N行是用空格分割的两个整数,表示当前已分配的内存…

easypoi 导出增加自增序列

要求&#xff1a;使用easypoi导出Excel的时候&#xff0c;要求增加”序号“列&#xff0c;从1开始增加。这列与业务数据无关&#xff0c;只是展示用&#xff0c;便于定位。如下图所示 实现方式&#xff1a;Java对象新增一列&#xff0c;注意name "序号", format &…

JAVA-服务器搭建-创建web后端项目

首先打开IDEA 点击新建项目 写好名称-模板选择 Web应用程序 -语言选择 Java 构建系统选择 Maven 然后点击下一步 选择版本-选择依赖项 Web Profile 点击创建 点击当前文件-选择编辑配置 选择左上角的加号-选择Tomcat服务器-选择本地 点击配置-选择到Tomcat目录-点击确定 起个…

kubernets 节点数量限制修改

kubelet节点pod数量限制 在 Kubernetes 中&#xff0c;kubelet 的 --max-pods 参数默认值是 110。这意味着每个节点上最多可以运行 110 个 Pod。这个默认值是为了在大多数情况下提供一个合理的默认限制&#xff0c;以避免节点资源被过度占用。 如果需要修改默认的 --max-pods…

Eureka、Nacos、Zookeeper、Redis等应用是AP还是CP?

理解CAP是什么&#xff1f; C Consistency 一致性 有集群cluster&#xff0c;如果有客户端对cluster进行了写操作&#xff0c;改变了cluster中的数据&#xff0c;则后面的客户端请求再次访问请求时&#xff0c;cluster返回给客户端的是最新的数据。 也可以理解为cluster中&…

K8S深度解析:从入门到精通的全方位指南

目录 一、Kubernetes简介 二、Kubernetes的核心作用 三、Kubernetes架构图例 四、Kubernetes核心概念 Harbor仓库概述&#xff1a; Master----管理组件&#xff1a; API Server&#xff08;集群之心&#xff09;&#xff1a; Scheduler&#xff08;调度大师&…

微软发布Phi-3 Mini:3.8B参数小到能塞进手机,性能媲美GPT-3.5

微软发布了Phi-3-mini&#xff0c;这是微软Phi-3系列模型推出的首个模型。Phi-3-mini具有38亿参数和3.3T tokens的庞大训练数据量&#xff0c;在语言、推理、编码和数学基准测试中超越了众多数百亿参数规模的模型。该模型体积小&#xff0c;可以在端侧部署和运行&#xff0c;具…