当前位置: 首页 > news >正文

【封装UI组件库系列】搭建项目及准备工作

封装UI组件库系列第一篇·搭建项目

前言

🌟搭建项目

创建工程

基本结构

 1.创建8个组件展示页面

​ 2.配置路由文件router/index.js

 3.页面布局

🌟总结


前言

在前端开发中,大家可能已经用过各种各样的UI组件库了,现在市面上热门的有Element-uiAnt Design等等,这些即插即用的组件库确实大大提升了开发效率,避免了很多的重复劳动,但这些组件库再怎么完善,又怎么能满足得了我们可爱的产品经理呢?所以工作中难免会需要开发公司内部的UI组件库,或者基于已有组件库进行二开。

【封装UI组件库系列】文章,将从0开始--》搭建项目--》封装八大经典功能组件--》打包组件库--》将组件库发布至npm--》使用自己封装的组件库技术方面使用的是Vue3 + Vite + Sass 来完成一个模仿Element Plus的组件库。最终完成效果如下:

从零开始封装UI组件库效果演示

🌟搭建项目

创建工程

组件库使用Vue3+Vite搭建,所以第一步先创建工程:

pnpm create vue@latest

我使用的是pnpm包管理工具,这个根据个人情况来就行npm、yarn等都可 。

项目创建完成后 pnpm i 安装依赖,pnpm dev启动项目:

基本结构

接下来我们将以下图为最终效果来一步步实现:

 1.创建8个组件展示页面:

 2.配置路由文件router/index.js

import { createRouter, createWebHistory } from 'vue-router'
import IconView from '../views/IconView.vue'const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{path: '/',name: 'icon',component: IconView},{path: '/button',name: 'button',component: () => import('../views/ButtonView.vue')},{path: '/card',name: 'card',component: () => import('../views/CardView.vue')},{path: '/dialog',name: 'dialog',component: () => import('../views/DialogView.vue')},{path: '/collapse',name: 'collapse',component: () => import('../views/CollapseView.vue')},{path: '/pager',name: 'pager',component: () => import('../views/PagerView.vue')},{path: '/tooltip',name: 'tooltip',component: () => import('../views/TooltipView.vue')},{path: '/dropdown',name: 'dropdown',component: () => import('../views/DropdownView.vue')}],linkActiveClass: 'active'
})export default router

3.页面布局

在App.vue中将页面基本布局完善

样式会使用sass,所以需要pnpm add -D sass 

 .active 其实就是选中样式,上面在路由文件配置的linkActiveClass: 'active' ,就是使用的这里的样式。

这时启动项目会发现如下图:

这是因为在main.js中引用了默认样式import './assets/main.css'

打开main.css文件,删去我们用不到的样式,剩下如图:

 再打开项目得到如下图效果,那么项目的基本布局就完成了。

本篇将项目以及页面搭建好后,下一篇就是使用Sass语法模仿Element Plus 创建主题色彩,以及重置样式。

🌟总结

【封装UI组件库系列】文章会持续更新,将带着大家从0开始--》搭建项目--》封装八大经典功能组件--》打包组件库--》将组件库发布至npm--》最后使用自己封装的组件库。如果文中出现有瑕疵的地方各位通过评论或者私信联系我,我们一起进步!该系列文章建议从第一篇开始看,系列专栏地址:从零开始封装UI组件库完整篇

http://www.lryc.cn/news/238981.html

相关文章:

  • C#使用DateTime获取日期和时间
  • rook-ceph部署
  • JVM基础- 垃圾回收器
  • 数理统计的基本概念(二)
  • CountDownLatch和CyclicBarrier
  • 云原生正在重塑软件的整个生命周期(内附资料)
  • Node.js环境配置级安装vue-cli脚手架
  • 十七、Rust集成MQTT Client
  • HarmonyOS ArkTS开发语言介绍(三)
  • [架构之路-247]:目标系统 - 设计方法 - 软件工程 - 结构化方法的基本思想、本质、特点以及在软件开发、在生活中的应用
  • 大模型的交互能力
  • 80%测试员被骗,关于jmeter 的一个弥天大谎!
  • Git——感谢尚硅谷官方文档
  • Java WebSocket框架
  • C#实现本地服务器客户端私聊通信
  • PyTorch 之 Dataset 类入门学习
  • Java update scheduler
  • 常见树种(贵州省):006栎类
  • 拓扑排序-
  • Oracle数据库如何定位trace file位置
  • 电脑盘符错乱,C盘变成D盘怎么办?
  • Android WMS——客户端输入事件处理(十九)
  • Python基础学习__测试报告
  • bclinux aarch64 ceph 14.2.10 云主机 4节点 fio
  • 智能座舱架构与芯片- (14) 测试篇 上
  • 【Django-DRF用法】多年积累md笔记,第3篇:Django-DRF的序列化和反序列化详解
  • Redis主从复制,哨兵和Cluster集群
  • Linux嵌入式I2C协议笔记
  • 科技的成就(五十三)
  • Ubuntu22.04 编译 AOSP