searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

vue3 + vite + ts项目,按需引入element-plus,及自定义主题色

2024-12-16 09:15:27
19
0

背景

前端页面为了提高加载的速度和性能,通常采用路由和组件的按需加载,其实在引入elemnet-plus时,也可以按需加载它里面的组件。下面就来介绍下全局引入和按需引入elemnet-plus组件的方式,并对这两种引入方式进行对比;同时,介绍如何自定义主题色。

全局引入

安装element-plus插件。

npm install element-plus --save

在main.ts中引入

import ElementPlus from 'element-plus' // 添加此行
import 'element-plus/theme-chalk/index.css'  // 添加此行
const app = createApp(App)
app.use(ElementPlus) // 添加此行
app.mount('#app')

在vue文件中直接使用即可,此处以Button组件为例

<template>
  <div class="demo">
    <el-button type="primary">Primary</el-button>
  </div>
</template>

在浏览器network查看引入element-plus的效果,可以看到文件大小为2.2MB

按需引入

除了下载element-plus插件,还需要下载unplugin-vue-components 和 unplugin-auto-import 这两个插件

npm install -D unplugin-vue-components unplugin-auto-import

配置vite.config.ts

import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import AutoImport from 'unplugin-auto-import/vite' // 添加此行
import Components from 'unplugin-vue-components/vite' // 添加此行
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'  // 添加此行
export default ({ mode }: {mode: any}) => {
  return defineConfig({
    plugins: [vue(), 
      vueJsx(),
      AutoImport({ // 添加此配置
        resolvers: [ElementPlusResolver()],
      }),
      Components({ // 添加此配置
        resolvers: [ElementPlusResolver()],
      }),
    ],
  })
}

在浏览器network查看引入element-plus的效果,可以看到每个文件都很小

自定义主题色

新建样式scss文件,例如在src下新建style文件夹,新建element.scss文件

@forward "element-plus/theme-chalk/src/common/var.scss" with ($colors: (
        "primary": ("base": red),
    )
);
@use "element-plus/theme-chalk/src/index.scss" as *

配置vite.config.ts

export default ({ mode }: {mode: any}) => {
  return defineConfig({
    plugins: [vue(), 
      vueJsx(),
      AutoImport({
        resolvers: [ElementPlusResolver()],
      }),
      Components({
        resolvers: [ElementPlusResolver()],
      }),
    ],
    resolve: {
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url))
      }
    },
    css: {
      // css预处理器
      preprocessorOptions: { // 添加此配置
        scss: {
          additionalData: `@use "@/assets/style/element.scss" as *; `,
        }
      },
    }
  })
}

此时,页面中引入element-plus组件时的主题就变成了自己设置的。例如下面的组件

<template>
  <div class="demo">
    <el-button type="primary">Primary</el-button>
  </div>
</template>

 

0条评论
0 / 1000
w****n
14文章数
0粉丝数
w****n
14 文章 | 0 粉丝
原创

vue3 + vite + ts项目,按需引入element-plus,及自定义主题色

2024-12-16 09:15:27
19
0

背景

前端页面为了提高加载的速度和性能,通常采用路由和组件的按需加载,其实在引入elemnet-plus时,也可以按需加载它里面的组件。下面就来介绍下全局引入和按需引入elemnet-plus组件的方式,并对这两种引入方式进行对比;同时,介绍如何自定义主题色。

全局引入

安装element-plus插件。

npm install element-plus --save

在main.ts中引入

import ElementPlus from 'element-plus' // 添加此行
import 'element-plus/theme-chalk/index.css'  // 添加此行
const app = createApp(App)
app.use(ElementPlus) // 添加此行
app.mount('#app')

在vue文件中直接使用即可,此处以Button组件为例

<template>
  <div class="demo">
    <el-button type="primary">Primary</el-button>
  </div>
</template>

在浏览器network查看引入element-plus的效果,可以看到文件大小为2.2MB

按需引入

除了下载element-plus插件,还需要下载unplugin-vue-components 和 unplugin-auto-import 这两个插件

npm install -D unplugin-vue-components unplugin-auto-import

配置vite.config.ts

import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import AutoImport from 'unplugin-auto-import/vite' // 添加此行
import Components from 'unplugin-vue-components/vite' // 添加此行
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'  // 添加此行
export default ({ mode }: {mode: any}) => {
  return defineConfig({
    plugins: [vue(), 
      vueJsx(),
      AutoImport({ // 添加此配置
        resolvers: [ElementPlusResolver()],
      }),
      Components({ // 添加此配置
        resolvers: [ElementPlusResolver()],
      }),
    ],
  })
}

在浏览器network查看引入element-plus的效果,可以看到每个文件都很小

自定义主题色

新建样式scss文件,例如在src下新建style文件夹,新建element.scss文件

@forward "element-plus/theme-chalk/src/common/var.scss" with ($colors: (
        "primary": ("base": red),
    )
);
@use "element-plus/theme-chalk/src/index.scss" as *

配置vite.config.ts

export default ({ mode }: {mode: any}) => {
  return defineConfig({
    plugins: [vue(), 
      vueJsx(),
      AutoImport({
        resolvers: [ElementPlusResolver()],
      }),
      Components({
        resolvers: [ElementPlusResolver()],
      }),
    ],
    resolve: {
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url))
      }
    },
    css: {
      // css预处理器
      preprocessorOptions: { // 添加此配置
        scss: {
          additionalData: `@use "@/assets/style/element.scss" as *; `,
        }
      },
    }
  })
}

此时,页面中引入element-plus组件时的主题就变成了自己设置的。例如下面的组件

<template>
  <div class="demo">
    <el-button type="primary">Primary</el-button>
  </div>
</template>

 

文章来自个人专栏
前端开发成长之路
14 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0