import{o as a,a as n,y as l}from"./vue-libs.b44bc779.js";const p={class:"van-doc-markdown-body"},t=l(`
\u901A\u8FC7\u672C\u7AE0\u8282\u4F60\u53EF\u4EE5\u4E86\u89E3\u5230 Vant \u7684\u5B89\u88C5\u65B9\u6CD5\u548C\u57FA\u672C\u4F7F\u7528\u59FF\u52BF\u3002
\u5728\u73B0\u6709\u9879\u76EE\u4E2D\u4F7F\u7528 Vant \u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7 npm
\u8FDB\u884C\u5B89\u88C5\uFF1A
# Vue 3 \u9879\u76EE\uFF0C\u5B89\u88C5\u6700\u65B0\u7248 Vant
npm i vant
# Vue 2 \u9879\u76EE\uFF0C\u5B89\u88C5 Vant 2
npm i vant@latest-v2
\u5F53\u7136\uFF0C\u4F60\u4E5F\u53EF\u4EE5\u901A\u8FC7 yarn
\u6216 pnpm
\u8FDB\u884C\u5B89\u88C5\uFF1A
# \u901A\u8FC7 yarn \u5B89\u88C5
yarn add vant
# \u901A\u8FC7 pnpm \u5B89\u88C5
pnpm add vant
\u4F7F\u7528 Vant \u6700\u7B80\u5355\u7684\u65B9\u6CD5\u662F\u76F4\u63A5\u5728 HTML \u6587\u4EF6\u4E2D\u5F15\u5165 CDN \u94FE\u63A5\uFF0C\u4E4B\u540E\u4F60\u53EF\u4EE5\u901A\u8FC7\u5168\u5C40\u53D8\u91CF vant
\u8BBF\u95EE\u5230\u6240\u6709\u7EC4\u4EF6\u3002
<!-- \u5F15\u5165\u6837\u5F0F\u6587\u4EF6 -->
<link
rel="stylesheet"
href="https://fastly.jsdelivr.net/npm/vant@3/lib/index.css"
/>
<!-- \u5F15\u5165 Vue \u548C Vant \u7684 JS \u6587\u4EF6 -->
<script src="https://fastly.jsdelivr.net/npm/vue@3"></script>
<script src="https://fastly.jsdelivr.net/npm/vant@3/lib/vant.min.js"></script>
<script>
// \u5728 #app \u6807\u7B7E\u4E0B\u6E32\u67D3\u4E00\u4E2A\u6309\u94AE\u7EC4\u4EF6
const app = Vue.createApp({
template: \`<van-button>\u6309\u94AE</van-button>\`,
});
app.use(vant);
// \u901A\u8FC7 CDN \u5F15\u5165\u65F6\u4E0D\u4F1A\u81EA\u52A8\u6CE8\u518C Lazyload \u7EC4\u4EF6
// \u53EF\u4EE5\u901A\u8FC7\u4E0B\u9762\u7684\u65B9\u5F0F\u624B\u52A8\u6CE8\u518C
app.use(vant.Lazyload);
// \u8C03\u7528\u51FD\u6570\u7EC4\u4EF6\uFF0C\u5F39\u51FA\u4E00\u4E2A Toast
vant.Toast('\u63D0\u793A');
app.mount('#app');
</script>
\u4F60\u53EF\u4EE5\u901A\u8FC7\u4EE5\u4E0B\u514D\u8D39 CDN \u670D\u52A1\u6765\u4F7F\u7528 Vant:
\u6CE8\u610F\uFF1A\u514D\u8D39 CDN \u4E00\u822C\u7528\u4E8E\u5236\u4F5C\u539F\u578B\u6216\u4E2A\u4EBA\u5C0F\u578B\u9879\u76EE\uFF0C\u4E0D\u63A8\u8350\u5728\u4F01\u4E1A\u751F\u4EA7\u73AF\u5883\u4E2D\u4F7F\u7528\u514D\u8D39 CDN\u3002
\u5BF9\u4E8E\u4F01\u4E1A\u5F00\u53D1\u8005\uFF0C\u5EFA\u8BAE\u4F7F\u7528\u4EE5\u4E0B\u65B9\u5F0F\uFF1A
\u6211\u4EEC\u63D0\u4F9B\u4E86\u4E30\u5BCC\u7684\u793A\u4F8B\u5DE5\u7A0B\uFF0C\u901A\u8FC7\u793A\u4F8B\u5DE5\u7A0B\u4F60\u53EF\u4EE5\u4E86\u89E3\u5982\u4E0B\u5185\u5BB9\uFF1A
\u4E0B\u9762\u662F\u4F7F\u7528 Vant \u7EC4\u4EF6\u7684\u7528\u6CD5\u793A\u4F8B\uFF1A
import { createApp } from 'vue';
// 1. \u5F15\u5165\u4F60\u9700\u8981\u7684\u7EC4\u4EF6
import { Button } from 'vant';
// 2. \u5F15\u5165\u7EC4\u4EF6\u6837\u5F0F
import 'vant/lib/index.css';
const app = createApp();
// 3. \u6CE8\u518C\u4F60\u9700\u8981\u7684\u7EC4\u4EF6
app.use(Button);
Vant \u652F\u6301\u591A\u79CD\u7EC4\u4EF6\u6CE8\u518C\u65B9\u5F0F\uFF0C\u9664\u4E86\u5728 app \u4E0A\u5168\u5C40\u6CE8\u518C\u7EC4\u4EF6\uFF0C\u4F60\u4E5F\u53EF\u4EE5\u9009\u62E9\u5176\u4ED6\u7684\u65B9\u5F0F\uFF0C\u6BD4\u5982\u5C40\u90E8\u6CE8\u518C\uFF0C\u8BE6\u89C1 \u7EC4\u4EF6\u6CE8\u518C \u7AE0\u8282\u3002
\u63D0\u793A\uFF1AVant \u9ED8\u8BA4\u652F\u6301 Tree Shaking\uFF0C\u56E0\u6B64\u4F60\u4E0D\u9700\u8981\u914D\u7F6E\u4EFB\u4F55\u63D2\u4EF6\uFF0C\u901A\u8FC7 Tree Shaking \u5373\u53EF\u79FB\u9664\u4E0D\u9700\u8981\u7684 JS \u4EE3\u7801\uFF0C\u4F46 CSS \u6837\u5F0F\u65E0\u6CD5\u901A\u8FC7\u8FD9\u79CD\u65B9\u5F0F\u4F18\u5316\uFF0C\u5982\u679C\u9700\u8981\u6309\u9700\u5F15\u5165 CSS \u6837\u5F0F\uFF0C\u8BF7\u53C2\u8003\u4E0B\u9762\u7684\u65B9\u6CD5\u4E8C\u3002
\u5728\u57FA\u4E8E vite
\u3001webpack
\u6216 vue-cli
\u7684\u9879\u76EE\u4E2D\u4F7F\u7528 Vant \u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528 unplugin-vue-components \u63D2\u4EF6\uFF0C\u5B83\u53EF\u4EE5\u81EA\u52A8\u5F15\u5165\u7EC4\u4EF6\uFF0C\u5E76\u6309\u9700\u5F15\u5165\u7EC4\u4EF6\u7684\u6837\u5F0F\u3002
\u76F8\u6BD4\u4E8E\u5E38\u89C4\u7528\u6CD5\uFF0C\u8FD9\u79CD\u65B9\u5F0F\u53EF\u4EE5\u6309\u9700\u5F15\u5165\u7EC4\u4EF6\u7684 CSS \u6837\u5F0F\uFF0C\u4ECE\u800C\u51CF\u5C11\u4E00\u90E8\u5206\u4EE3\u7801\u4F53\u79EF\uFF0C\u4F46\u4F7F\u7528\u8D77\u6765\u4F1A\u53D8\u5F97\u7E41\u7410\u4E00\u4E9B\u3002\u5982\u679C\u4E1A\u52A1\u5BF9 CSS \u7684\u4F53\u79EF\u8981\u6C42\u4E0D\u662F\u7279\u522B\u6781\u81F4\uFF0C\u6211\u4EEC\u63A8\u8350\u4F7F\u7528\u66F4\u7B80\u4FBF\u7684\u5E38\u89C4\u7528\u6CD5\u3002
# \u901A\u8FC7 npm \u5B89\u88C5
npm i unplugin-vue-components -D
# \u901A\u8FC7 yarn \u5B89\u88C5
yarn add unplugin-vue-components -D
# \u901A\u8FC7 pnpm \u5B89\u88C5
pnpm add unplugin-vue-components -D
\u5982\u679C\u662F\u57FA\u4E8E vite
\u7684\u9879\u76EE\uFF0C\u5728 vite.config.js
\u6587\u4EF6\u4E2D\u914D\u7F6E\u63D2\u4EF6\uFF1A
import vue from '@vitejs/plugin-vue';
import Components from 'unplugin-vue-components/vite';
import { VantResolver } from 'unplugin-vue-components/resolvers';
export default {
plugins: [
vue(),
Components({
resolvers: [VantResolver()],
}),
],
};
\u5982\u679C\u662F\u57FA\u4E8E vue-cli
\u7684\u9879\u76EE\uFF0C\u5728 vue.config.js
\u6587\u4EF6\u4E2D\u914D\u7F6E\u63D2\u4EF6\uFF1A
const { VantResolver } = require('unplugin-vue-components/resolvers');
const ComponentsPlugin = require('unplugin-vue-components/webpack');
module.exports = {
configureWebpack: {
plugins: [
ComponentsPlugin({
resolvers: [VantResolver()],
}),
],
},
};
\u5982\u679C\u662F\u57FA\u4E8E webpack
\u7684\u9879\u76EE\uFF0C\u5728 webpack.config.js
\u6587\u4EF6\u4E2D\u914D\u7F6E\u63D2\u4EF6\uFF1A
const { VantResolver } = require('unplugin-vue-components/resolvers');
const ComponentsPlugin = require('unplugin-vue-components/webpack');
module.exports = {
plugins: [
ComponentsPlugin({
resolvers: [VantResolver()],
}),
],
};
\u5B8C\u6210\u4EE5\u4E0A\u4E24\u6B65\uFF0C\u5C31\u53EF\u4EE5\u76F4\u63A5\u5728\u6A21\u677F\u4E2D\u4F7F\u7528 Vant \u7EC4\u4EF6\u4E86\uFF0Cunplugin-vue-components
\u4F1A\u89E3\u6790\u6A21\u677F\u5E76\u81EA\u52A8\u6CE8\u518C\u5BF9\u5E94\u7684\u7EC4\u4EF6\u3002
<template>
<van-button type="primary" />
</template>
Vant \u4E2D\u6709\u4E2A\u522B\u7EC4\u4EF6\u662F\u4EE5\u51FD\u6570\u7684\u5F62\u5F0F\u63D0\u4F9B\u7684\uFF0C\u5305\u62EC Toast
\uFF0CDialog
\uFF0CNotify
\u548C ImagePreview
\u7EC4\u4EF6\u3002\u5728\u4F7F\u7528\u51FD\u6570\u7EC4\u4EF6\u65F6\uFF0Cunplugin-vue-components
\u65E0\u6CD5\u81EA\u52A8\u5F15\u5165\u5BF9\u5E94\u7684\u6837\u5F0F\uFF0C\u56E0\u6B64\u9700\u8981\u624B\u52A8\u5F15\u5165\u6837\u5F0F\u3002
// Toast
import { Toast } from 'vant';
import 'vant/es/toast/style';
// Dialog
import { Dialog } from 'vant';
import 'vant/es/dialog/style';
// Notify
import { Notify } from 'vant';
import 'vant/es/notify/style';
// ImagePreview
import { ImagePreview } from 'vant';
import 'vant/es/image-preview/style';
\u4F60\u53EF\u4EE5\u5728\u9879\u76EE\u7684\u5165\u53E3\u6587\u4EF6\u6216\u516C\u5171\u6A21\u5757\u4E2D\u5F15\u5165\u4EE5\u4E0A\u7EC4\u4EF6\u7684\u6837\u5F0F\uFF0C\u8FD9\u6837\u5728\u4E1A\u52A1\u4EE3\u7801\u4E2D\u4F7F\u7528\u7EC4\u4EF6\u65F6\uFF0C\u4FBF\u4E0D\u518D\u9700\u8981\u91CD\u590D\u5F15\u5165\u6837\u5F0F\u4E86\u3002
\u63D0\u793A\uFF1A\u5728\u5355\u4E2A\u9879\u76EE\u4E2D\u4E0D\u5E94\u8BE5\u540C\u65F6\u4F7F\u7528\u300C\u5168\u91CF\u5F15\u5165\u300D\u548C\u300C\u6309\u9700\u5F15\u5165\u300D\uFF0C\u5426\u5219\u4F1A\u5BFC\u81F4\u4EE3\u7801\u91CD\u590D\u3001\u6837\u5F0F\u9519\u4E71\u7B49\u95EE\u9898\u3002
\u5728 Nuxt 3 \u4E2D\u4F7F\u7528 Vant \u65F6\uFF0C\u7531\u4E8E Nuxt 3 \u6846\u67B6\u672C\u8EAB\u7684\u9650\u5236\uFF0C\u9700\u8981\u5728 nuxt.config.ts
\u4E2D\u6DFB\u52A0\u4EE5\u4E0B\u914D\u7F6E\uFF1A
import { defineNuxtConfig } from 'nuxt';
export default defineNuxtConfig({
experimental: {
externalVue: true,
},
});
\u5173\u4E8E\u8BE5\u95EE\u9898\u7684\u80CC\u666F\uFF0C\u53EF\u4EE5\u53C2\u8003\u4EE5\u4E0B issue\uFF1A
\u4ECE Vant 4.0 \u7248\u672C\u5F00\u59CB\uFF0C\u5C06\u4E0D\u518D\u652F\u6301 babel-plugin-import
\uFF0C\u8BF7\u79FB\u9664\u9879\u76EE\u4E2D\u4F9D\u8D56\u7684 babel-plugin-import
\u63D2\u4EF6\u3002
\u53EA\u9700\u8981\u5220\u9664 babel.config.js
\u4E2D\u7684\u4EE5\u4E0B\u4EE3\u7801\u5373\u53EF\uFF1A
module.exports = {
plugins: [
- ['import', {
- libraryName: 'vant',
- libraryDirectory: 'es',
- style: true
- }, 'vant']
]
};
\u79FB\u9664 babel-plugin-import
\u6709\u4EE5\u4E0B\u6536\u76CA\uFF1A
babel-plugin-import
\u7684 import \u5199\u6CD5\u9650\u5236\uFF0C\u53EF\u4EE5\u4ECE vant \u4E2D\u5BFC\u5165\u9664\u4E86\u7EC4\u4EF6\u4EE5\u5916\u7684\u5176\u4ED6\u5185\u5BB9\uFF0C\u6BD4\u5982 Vant 4 \u4E2D\u65B0\u589E\u7684 showToast
\u7B49\u65B9\u6CD5\uFF1Aimport { showToast, showDialog } from 'vant';