【组件库】element-plus组件库

文章目录

  • 0. 启动项目
  • 1. gc.sh 新增组件
  • 2. 本地验证(组件注册的方式)
  • 3. 官方文档修改
    • 3-1. 左侧菜单
    • 3-2 . 配置md文档
    • 3-3. 代码问题:
    • 文档修改
  • ----------------------------------------------
  • 4. 将naiveui的split 分割组件【 复制、迁移】到 element-ui-plus组件库
    • 4.1 naiveui的split 中 Split.tsx 代码解读
      • 4.1.1 Vue 3的 h 函数详解
      • 4.1.2 vue3中的defineComponent的作用
      • 4.1.3 vue3中的type PropType的作用 -- 进行类型的推断与验证
        • 定义【数组】的类型
        • 定义【对象】的类型
        • 定义【字符串】可传入内容
        • 可传入 字符串 或 数组
        • 其他汇总
      • 4.1.4 vue3中的as const 断言
      • 4.1.5 vue3中的ref
      • 4.1.6 vue3中的CSSProperties
      • 4.1.7 vue3中的watchEffect
      • 4.1.8 vue3中的setup() -- setup()函数
      • 4.1.9 给函数添加类型限制

0. 启动项目

安装pnpm

nvm list  #查看node版本
nvm use 18.13.0  #切换版本

npm install pnpm -g   #安装pnpm
pnpm -v   #查看pnpm版本,确认是否安装成功

问题:pnpm : 无法加载文件 C:\Program Files\nodejs\pnpm.ps1,因为在此系统上禁止运行脚本
在这里插入图片描述

解决方法:

  1. 管理员身份运行 window powershell
  2. 执行:get-ExecutionPolicy,显示 Restricted,表示状态是禁止的;
  3. 执行:set-ExecutionPolicy,会提示输入参数:RemoteSigned
  4. 输入:Y

在这里插入图片描述在这里插入图片描述

运行项目

pnpm install   //安装依赖
pnpm run dev    // 跑本地运行 play\src\App.vue 的效果
pnpm run docs:dev   //跑md文档运行效果

在这里插入图片描述


1. gc.sh 新增组件

重要参考:

  1. element-plus 源码学习:配置组件模板
  • gc.sh 脚本,用于生成组件模板,组件模板将会简化开发步骤,同时使项目结构更加规范

按照 README.md 的介绍:

  1. 安装项目依赖: 下载element-plus后,执行 pnpm i 安装项目依赖
  2. 自动生成新组件:执行./scripts/gc.sh "headerSearch" 或者 pnpm gen headerSearch (这个命令其实执行了 scripts/gc.sh 脚本,使用内置的模板初始化了一个最简单的组件)生成新的组件。

执行./scripts/gc.sh "headerSearch" 后,会在 packages\components下自动生成 headerSearch 这个组件在这里插入图片描述

问题:程序“gc.sh”无法运行: 找不到应用程序所在位置 行:1 字符: 1 – 解决:这个指令需要再 git bash 里执行

  • 在window下执行sh文件需要使用bash终端,如果你已经安装了 Git 那么可以使用Git Bash Here, 在 vscode
    中可以使用如下图所示的方式打开bash终端:

在这里插入图片描述

  1. 导出新增的组件:在packages\components\index.ts 导出我们定义的组件headerSearch,这样才能被play/src/App.vue引用到
export * from './headerSearch'   //packages\components\index.ts 文件中这里导出的就是packages\components\headerSearch这个组件,也就是第2步生成的组件,因为import的路径是'./headerSearch'
  1. packages\element-plus\component.ts中导出组件,这样在install 安装element-plus时组件才能被安装上
import {
    BAffix } from '@element-plus/components/affix'
//..省略
import {
   
  BCheckbox,
  BCheckboxButton,
  BCheckboxGroup,
} from '@element-plus/components/checkbox'
//..省略
import {
    BHeaderSearch } from '@element-plus/components/headerSearch'   //1. 引入组件

import type {
    Plugin } from 'vue'

export default [  //2.对外暴露组件
  BAffix,
  //..省略
  BCheckbox,
  BCheckboxButton,
  BCheckboxGroup,
  //..省略
  BHeaderSearch
] as Plugin[]
  1. 本地调试:写好的组件可以通过启动pnpm run dev 进行调试

1、找到play/src/App.vue ,第一次没有这文件,需要执行pnpm run dev 后才自动生成这个文件

<template>
  <div class="play-container">
    <b-headerSearch></b-headerSearch>   
  </div> 
</template>

<script setup lang="ts"> 
import BHeaderSearch from '@element-plus/components/headerSearch'    //这里引入的组件
// import '@element-plus/theme-chalk/src/index.scss'
``` 2、引入新建组件,然后浏览器访问就可以了 3、没啥问题就可以提交代码了

注意
tsconfig.base.json文件中,有如下配置,猜想,项目中import 引入的时候 @element-plus/ == packages/

{
    
  "compilerOptions": {
    
    "outDir": "dist",
    //...省略
    "paths": {
    
      "@element-plus/*": ["packages/*"]    //根据这里猜想,项目中import 引入的时候 @element-plus/  ==  packages/
    }   
  } 
}  

2. 本地验证(组件注册的方式)

boe-ui-components-plus\play\src\App.vue 文件中引入组件后,执行npm run dev后在浏览器中查看本地跑组件效果

<template>
  <div class="play-container">
    9999999999999999999
    <b-divider />    
    <!-- 3.使用组件 -->
    8888888888
  </div>
</template>

<script setup lang="ts">
import BDivider from '@element-plus/components/divider'    //1.引入组件
import '@element-plus/theme-chalk/src/index.scss'    //2.引入样式
</script>

<style lang="scss">
html,
body {
   
  width: 100vw;
  height: 100vh;
  margin: 0;
  #play {
   
    height: 100%;
    width: 100%;
    .play-container {
   
      height: 100%;
      width: 100%;
      display: flex;
      align-items: center;
      justify-content: center;
    }
  }
}
</style>

在这里插入图片描述
在这里插入图片描述

3. 官方文档修改

3-1. 左侧菜单

修改docs\.vitepress\crowdin\en-US\pages\component.json(文件1) 每次pnpm run dev 都会删了原有的 docs\.vitepress\i18n\pages\component.json文件(文件2),再生成一个新的文件2 – 所以改这个文件1需要重新跑下dev

{
   
 "composite": {
   
    "text": "Composite",
    "children": [
      {
   
        "link": "/login-page",
        "text": "Login Page"
      },
      {
   
        "link": "/system-header",
        "text": "System Header"
      },
      {
   
        "link": "/search-table",
        "text": "HeaderSearchTable11"
      }
    ]
  },
}
  • 对象中的【text】 对应左侧菜单
    在这里插入图片描述
  • 【link】对应地址栏中的url

3-2 . 配置md文档

  • docs\en-US\component文件夹下新建文件search-table.md文件,注意这个md文件名必须和上面配置中的link的名字一样才行

页签标题
在这里插入图片描述
docs\en-US\component\search-table.md文档中的title 对应页签标题

3-3. 代码问题:

  1. 首先在.ts中声明并导出用到的props
import {
    buildProps,definePropType } from '@element-plus/utils'

import type {
    ExtractPropTypes } from 'vue'
import type SearchTable from './search-table.vue'

//定义数组里的对象
export interface tableDataItem {
   
    id: number,
    type: {
   
      value: number,
      label: string,
    },
    name: string,
    phone_main: string,
    tags: Array

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/788154.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

13 - matlab m_map地学绘图工具基础函数 - 介绍创建管理颜色映射的函数m_colmap和轮廓图绘制颜色条的函数m_contfbar

13 - matlab m_map地学绘图工具基础函数 - 介绍创建管理颜色映射的函数m_colmap和轮廓图绘制颜色条的函数m_contfbar 0. 引言1. 关于m_colmap2. 关于m_contfbar3. 结语 0. 引言 本篇介绍下m_map中用于创建和管理颜色映射函数&#xff08;m_colmap&#xff09;和 为轮廓图绘制颜…

从Helm到 Operator:Kubernetes应用管理的进化

&#x1f9f0;Helm 的作用 在开始前需要先对 kubernetes Operator 有个简单的认识。 以为我们在编写部署一些简单 Deployment 的时候只需要自己编写一个 yaml 文件然后 kubectl apply 即可。 apiVersion: apps/v1 kind: Deployment metadata: labels: app: k8s-combat …

【系统架构设计】计算机组成与体系结构(二)

计算机组成与体系结构 计算机系统组成存储器系统前言主存储器存储器存储数量&#xff08;计算&#xff09; 辅助存储器&#xff08;以磁盘为例&#xff09;Cache存储器 流水线 计算机系统组成 存储器系统 前言 存储器用来存放程序和数据的部件&#xff0c;是一个记忆装置&am…

【网络安全的神秘世界】XSS基本概念和原理介绍

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 一、基本概念 恶意攻击者往web页面插入恶意代码脚本&#xff08;JS代码&#xff09;&#xff0c;当用户浏览该页面时&#xf…

泛微开发修炼之旅--36通过js控制明细表中同一列中多个浏览框的显示控制逻辑(明细表列中多字段显示逻辑控制)

文章链接&#xff1a;36通过js控制明细表中同一列中多个浏览框的显示控制逻辑&#xff08;明细表列中多字段显示逻辑控制&#xff09;

0基础学会在亚马逊云科技AWS上搭建生成式AI云原生Serverless问答QA机器人(含代码和步骤)

小李哥今天带大家继续学习在国际主流云计算平台亚马逊云科技AWS上开发生成式AI软件应用方案。上一篇文章我们为大家介绍了&#xff0c;如何在亚马逊云科技上利用Amazon SageMaker搭建、部署和测试开源模型Llama 7B。下面我将会带大家探索如何搭建高扩展性、高可用的完全托管云原…

安防综合管理/视频汇聚平台EasyCVR视频监控存储技术:高效稳定的视频数据保障方案

随着科技的飞速发展&#xff0c;视频监控已成为现代社会不可或缺的一部分。无论是城市治安、交通管理&#xff0c;还是商业安保、家庭监控&#xff0c;视频监控都发挥着至关重要的作用。而在这背后&#xff0c;视频监控存储技术则是确保监控数据得以长期保存、高效检索和可靠利…

技术速递|VS Code Java 6月更新 - 项目设置功能增强!大量 Spring 新特性

作者&#xff1a;Nick Zhu 排版&#xff1a;Alan Wang 大家好&#xff0c;欢迎阅读 Visual Studio Code for Java 的六月更新&#xff01;在这篇博客中&#xff0c;我们将分享项目设置项目的重要更新以及一系列 Spring 的功能改进&#xff0c;让我们开始吧&#xff01; 项目设…

分布式锁(仅供自己参考)

分布式锁&#xff1a;满足分布式系统或集群式下多进程可见并且互斥的锁&#xff08;使用外部的锁&#xff0c;因为如果是集群部署&#xff0c;每台服务器都有一个对应的tomcat&#xff0c;则每个tomcat的jvm就不同&#xff0c;锁对象就不同&#xff08;加锁的机制&#xff0c;每…

(自用)共享单车服务器(二) 项目日志

stdin、stdout、stderr 注意&#xff1a;stderr是不缓存的&#xff0c;stdout则进行行间缓存。接下来我们看下行间缓存的效果&#xff0c;请参考以下代码&#xff1a; #include "stdio.h" #include <unistd.h>int main(int argc, char** argv) {for (int i 0…

万字长文MySQL Binlog 详细指南

目录 第一阶段 MySQL Binlog 基础用法1. Binlog基本概念1.1 什么是Binlog1.2 Binlog的作用1.3 Binlog格式 2. 配置和管理Binlog2.1 开启Binlog2.2 设置Binlog文件大小和保留时间2.3 查看Binlog状态 3. Binlog的实际应用3.1 数据恢复3.2 主从复制3.3 审计 4. Binlog工具使用4.1 …

吴恩达机器学习笔记2.1 - 什么是机器学习

吴恩达机器学习笔记2.1 - 什么是机器学习 最早的机器学习 1959年&#xff0c;亚瑟塞缪尔(Arthur Samuel)将机器学习定义为“Field of study that gives computers the ability to learn without being explicitly programmed”&#xff08;无需编程即可学习的研究领域&#xf…

谷粒商城 - 编写一个自定义校验注解

目录 开始 未来实现效果 第一步&#xff1a;编写自定义校验注解 第二步&#xff1a;编写自定义校验器 第三步&#xff1a;编写配置文件 效果演示 开始 未来实现效果 编写一个 ListValue 注解&#xff0c;可以实现功能有&#xff1a; 限定字段的值&#xff0c;例如指定只…

解读BASE理论:高可用性与性能的完美平衡

Base概念 BASE 理论是一种处理大规模分布式系统中的数据一致性问题的思路。相比于传统的严格一致性&#xff0c;它更灵活&#xff0c;适用于那些需要高可用性和性能的系统。BASE 理论由三个部分组成&#xff1a; 基本可用&#xff08;Basically Available&#xff09; 基本可用…

Unity通过NDK实现C#与C++之间的相互调用

由于一些历史遗留问题&#xff0c;我们项目还在使用一套C实现的Box2D定点数的库&#xff0c;由于最近修改了视野算法所以需要重新打包安卓的【.so】文件&#xff0c;特此记录 1、关于NDK 在Android平台&#xff0c;C/C需通过NDK编译成动态链接库.so文件&#xff0c;然后C#中通过…

天士力“数智本草”大模型如何赋能中药药品研发工作?

天士力“数智本草”大模型如何赋能中药药品研发工作&#xff1f; 目前&#xff0c;“数智本草”大模型如何配合天士力研发工作&#xff1f;对新药研发、中药二次开发等产生了什么价值&#xff1f;能否介绍一些具体的成果案例&#xff1f; “数智本草”大模型目前已经形成智能问…

免费下载工具 -- Free Download Manager(FDM) v6.24.0.5818

软件简介 Free Download Manager (FDM) 是一款免费的功能强大的下载管理软件&#xff0c;适用于多种操作系统&#xff0c;包括 Windows、macOS、Android 和 Linux。这款软件的特色在于它快速、安全且高效的下载能力。它可以下载各种热门网站的影片&#xff0c;支持 HTTP/HTTP…

【内网渗透】MSF渗透阶段的常用指令笔记

目录 渗透阶段划分 msfvenom 常用参数 各平台生成payload命令 Meterpreter Meterpreter的常用命令 基本命令 常用命令 针对安卓手机的一些命令 针对Windows的一些命令 文件系统命令 生成木马反弹shell(以linux靶机为例) 木马生成 配置监控 攻击利用 渗透阶段划分…

人工智能算法工程师(中级)课程2-Opencv视觉处理之高级操作

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(中级)课程2-Opencv视觉处理之高级操作。在上一节课中的OpenCV基础操作我们了解到OpenCV是一个开源的计算机视觉软件库。它提供了各种视觉处理函数&#xff0c;并支持多种编程语言&#xff0c;如…

2-29 基于matlab的CEEMD

基于matlab的CEEMD&#xff08;Complementary Ensemble Empirical Mode Decomposition&#xff0c;互补集合经验模态分解&#xff09;&#xff0c;先将数据精心ceemd分解&#xff0c;得到imf分量&#xff0c;然后通过相关系数帅选分量&#xff0c;在求出他们的样本熵的特征。用…