nuxt3引入element-plus的三种方法

当前文章收录状态:
未收录

1、全部引入

安装element-plus依赖

npm install <a href="https://www.zym88.cn/tag/element" title="更多关于 element 的文章" target="_blank">element</a>-plus --save
npm install <a href="https://www.zym88.cn/tag/element" title="更多关于 element 的文章" target="_blank">element</a>-plus --save
npm install element-plus --save

nuxt3项目中plugins下新建一个element-plus.client.ts文件(注意:默认必须在 plugins 下新建配置文件,这是“约定”,详情见 官网)关于为什么要加 .client 感兴趣请看:《前端渲染CSR和SSR的结合使用分析》)

在element-plus.ts文件中输入

import ElementPlus from 'element-plus'
import { ID_INJECTION_KEY } from 'element-plus';
export default defineNuxtPlugin(nuxtApp => {
<a href="https://www.zym88.cn/tag/nuxt" title="更多关于 nuxt 的文章" target="_blank">nuxt</a>App.vueApp.use(ElementPlus)
nuxtApp.vueApp.provide(ID_INJECTION_KEY, {
prefix: Math.floor(Math.random() * 10000),
current: 0,
})
})
import ElementPlus from 'element-plus'
import { ID_INJECTION_KEY } from 'element-plus';
export default defineNuxtPlugin(nuxtApp => {
    <a href="https://www.zym88.cn/tag/nuxt" title="更多关于 nuxt 的文章" target="_blank">nuxt</a>App.vueApp.use(ElementPlus)
    nuxtApp.vueApp.provide(ID_INJECTION_KEY, {
        prefix: Math.floor(Math.random() * 10000),
        current: 0,
    })
})
import ElementPlus from 'element-plus' import { ID_INJECTION_KEY } from 'element-plus'; export default defineNuxtPlugin(nuxtApp => { nuxtApp.vueApp.use(ElementPlus) nuxtApp.vueApp.provide(ID_INJECTION_KEY, { prefix: Math.floor(Math.random() * 10000), current: 0, }) })

然后在nuxt.config.ts文件中引入UI样式

export default defineNuxtConfig({
...
css: ['element-plus/dist/index.css'],
...
})
export default defineNuxtConfig({
   ...
    css: ['element-plus/dist/index.css'],
   ...
})
export default defineNuxtConfig({ ... css: ['element-plus/dist/index.css'], ... })

就可以在页面中引入element-plus组件了

2、按需引入

手动导入的话有两种方法:1、unplugin-vue-components 2、unplugin-element-plus 

2.1、unplugin-vue-components

nuxt3目前不支持自动按需引入,需要在页面中import,不然报错

安装依赖

npm install element-plus --save
npm install unplugin-vue-components -D
npm install element-plus --save
npm install unplugin-vue-components -D
npm install element-plus --save npm install unplugin-vue-components -D

在nuxt.config.ts文件中引入

import Components from "unplugin-vue-components/vite";
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
export default defineNuxtConfig({
css: ['element-plus/dist/index.css'],
vite: {
plugins: [
Components({
dts: true,
resolvers: [ElementPlusResolver()]
})
],
}
})
import Components from "unplugin-vue-components/vite";
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
export default defineNuxtConfig({
    css: ['element-plus/dist/index.css'],
    vite: {
        plugins: [
            Components({
                dts: true,
                resolvers: [ElementPlusResolver()]
            })
        ],
    }
})
import Components from "unplugin-vue-components/vite"; import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' export default defineNuxtConfig({ css: ['element-plus/dist/index.css'], vite: { plugins: [ Components({ dts: true, resolvers: [ElementPlusResolver()] }) ], } })

在plugins下新建一个element-plus.ts文件(在SSR下elementui需要配置一个provide)

import { ID_INJECTION_KEY } from 'element-plus';
export default defineNuxtPlugin(nuxtApp => {
nuxtApp.vueApp.provide(ID_INJECTION_KEY, {
prefix: Math.floor(Math.random() * 10000),
current: 0,
})
})
import { ID_INJECTION_KEY } from 'element-plus';
export default defineNuxtPlugin(nuxtApp => {
    nuxtApp.vueApp.provide(ID_INJECTION_KEY, {
        prefix: Math.floor(Math.random() * 10000),
        current: 0,
    })
})
import { ID_INJECTION_KEY } from 'element-plus'; export default defineNuxtPlugin(nuxtApp => { nuxtApp.vueApp.provide(ID_INJECTION_KEY, { prefix: Math.floor(Math.random() * 10000), current: 0, }) })

在页面上引入使用

<script setup lang='ts'>
import {
ElButton
} from "element-plus";
</script>
<template>
<div>
<el-button>Default</el-button>
</div>
</template>
<script setup lang='ts'>
import {
    ElButton
} from "element-plus";
</script>

<template>
    <div>
        <el-button>Default</el-button>
    </div>
</template>
<script setup lang='ts'> import { ElButton } from "element-plus"; </script> <template> <div> <el-button>Default</el-button> </div> </template>

2.2、unplugin-element-plus

来自element-plus团队的示例:https://github.com/element-plus/element-plus-nuxt-starter

安装依赖

npm install element-plus --save
npm install unplugin-element-plus -D
npm install element-plus --save
npm install unplugin-element-plus -D
npm install element-plus --save npm install unplugin-element-plus -D

在nuxt.config.ts文件中引入

import ElementPlus from 'unplugin-element-plus/vite'
export default defineNuxtConfig({
css: ['element-plus/dist/index.css'],
build: {
transpile: ['element-plus/es'],
},
vite: {
plugins: [
ElementPlus()
],
}
})
import ElementPlus from 'unplugin-element-plus/vite'
export default defineNuxtConfig({
    css: ['element-plus/dist/index.css'],
    build: {
        transpile: ['element-plus/es'],
    },
    vite: {
        plugins: [
            ElementPlus()
        ],
    }
})
import ElementPlus from 'unplugin-element-plus/vite' export default defineNuxtConfig({ css: ['element-plus/dist/index.css'], build: { transpile: ['element-plus/es'], }, vite: { plugins: [ ElementPlus() ], } })

在plugins下新建一个element-plus.ts文件(在SSR下elementui需要配置一个provide)

import { ID_INJECTION_KEY } from 'element-plus';
export default defineNuxtPlugin(nuxtApp => {
nuxtApp.vueApp.provide(ID_INJECTION_KEY, {
prefix: Math.floor(Math.random() * 10000),
current: 0,
})
})
import { ID_INJECTION_KEY } from 'element-plus';
export default defineNuxtPlugin(nuxtApp => {
    nuxtApp.vueApp.provide(ID_INJECTION_KEY, {
        prefix: Math.floor(Math.random() * 10000),
        current: 0,
    })
})
import { ID_INJECTION_KEY } from 'element-plus'; export default defineNuxtPlugin(nuxtApp => { nuxtApp.vueApp.provide(ID_INJECTION_KEY, { prefix: Math.floor(Math.random() * 10000), current: 0, }) })

在页面上引入使用

<script setup lang='ts'>
import {
ElButton
} from "element-plus";
</script>
<template>
<div>
<el-button>Default</el-button>
</div>
</template>
<script setup lang='ts'>
import {
    ElButton
} from "element-plus";
</script>

<template>
    <div>
        <el-button>Default</el-button>
    </div>
</template>
<script setup lang='ts'> import { ElButton } from "element-plus"; </script> <template> <div> <el-button>Default</el-button> </div> </template>
© 版权声明
THE END
我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=270198dipw4ko
点赞6赞赏 分享
People do a lot of thinking, and sometimes, that's what kills us.
有时候是我们自己想太多才让自己如此难受
评论 抢沙发

请登录后发表评论

    暂无评论内容