快速上手

本节将介绍如何在项目中使用 Element。

使用 vue-cli@4.5

我们为新版的 vue-cli 准备了相应的 Element Plus 插件,你可以用它们快速地搭建一个基于 Element Plus 的项目。

使用 Starter Kit

我们提供了通用的项目模板,你可以直接使用,另外我们还提供了 Vite 模板。对于 Laravel 用户,我们也准备了相应的模板,同样可以直接下载使用。

如果不希望使用我们提供的模板,请继续阅读。

引入 Element Plus

你可以引入整个 Element Plus,或是根据需要仅引入部分组件。我们先介绍如何引入完整的 Element。

完整引入

在 main.js 中写入以下内容:

  1. import { createApp } from 'vue'
  2. import ElementPlus from 'element-plus';
  3. import 'element-plus/lib/theme-chalk/index.css';
  4. import App from './App.vue';
  5. const app = createApp(App)
  6. app.use(ElementPlus)
  7. app.mount('#app')

以上代码便完成了 Element Plus 的引入。需要注意的是,样式文件需要单独引入。

按需引入

借助 babel-plugin-component,我们可以只引入需要的组件,以达到减小项目体积的目的。

首先,安装 babel-plugin-component:

  1. npm install babel-plugin-component -D

然后,将 .babelrc 修改为:

  1. {
  2. "plugins": [
  3. [
  4. "component",
  5. {
  6. "libraryName": "element-plus",
  7. "styleLibraryName": "theme-chalk"
  8. }
  9. ]
  10. ]
  11. }

接下来,如果你只希望引入部分组件,比如 Button 和 Select,那么需要在 main.js 中写入以下内容:

  1. import { createApp } from 'vue'
  2. import { ElButton, ElSelect } from 'element-plus';
  3. import App from './App.vue';
  4. const app = createApp(App)
  5. app.component(ElButton.name, ElButton);
  6. app.component(ElSelect.name, ElSelect);
  7. /* or
  8. * app.use(ElButton)
  9. * app.use(ElSelect)
  10. */
  11. app.mount('#app')

完整组件列表和引入方式(完整组件列表以 reference 为准)

  1. import { createApp } from 'vue'
  2. import App from './App.vue';
  3. import {
  4. ElAlert,
  5. ElAside,
  6. ElAutocomplete,
  7. ElAvatar,
  8. ElBacktop,
  9. ElBadge,
  10. ElBreadcrumb,
  11. ElBreadcrumbItem,
  12. ElButton,
  13. ElButtonGroup,
  14. ElCalendar,
  15. ElCard,
  16. ElCarousel,
  17. ElCarouselItem,
  18. ElCascader,
  19. ElCascaderPanel,
  20. ElCheckbox,
  21. ElCheckboxButton,
  22. ElCheckboxGroup,
  23. ElCol,
  24. ElCollapse,
  25. ElCollapseItem,
  26. ElCollapseTransition,
  27. ElColorPicker,
  28. ElContainer,
  29. ElDatePicker,
  30. ElDialog,
  31. ElDivider,
  32. ElDrawer,
  33. ElDropdown,
  34. ElDropdownItem,
  35. ElDropdownMenu,
  36. ElFooter,
  37. ElForm,
  38. ElFormItem,
  39. ElHeader,
  40. ElIcon,
  41. ElImage,
  42. ElInput,
  43. ElInputNumber,
  44. ElLink,
  45. ElMain,
  46. ElMenu,
  47. ElMenuItem,
  48. ElMenuItemGroup,
  49. ElOption,
  50. ElOptionGroup,
  51. ElPageHeader,
  52. ElPagination,
  53. ElPopconfirm,
  54. ElPopover,
  55. ElPopper,
  56. ElProgress,
  57. ElRadio,
  58. ElRadioButton,
  59. ElRadioGroup,
  60. ElRate,
  61. ElRow,
  62. ElScrollBar,
  63. ElSelect,
  64. ElSlider,
  65. ElStep,
  66. ElSteps,
  67. ElSubmenu,
  68. ElSwitch,
  69. ElTabPane,
  70. ElTable,
  71. ElTableColumn,
  72. ElTimeline,
  73. ElTimelineItem,
  74. ElTooltip,
  75. ElTransfer,
  76. ElTree,
  77. ElUpload,
  78. ElInfiniteScroll,
  79. ElLoading,
  80. ElMessage,
  81. ElMessageBox,
  82. ElNotification,
  83. } from 'element-plus';
  84. const components = [
  85. ElAlert,
  86. ElAside,
  87. ElAutocomplete,
  88. ElAvatar,
  89. ElBacktop,
  90. ElBadge,
  91. ElBreadcrumb,
  92. ElBreadcrumbItem,
  93. ElButton,
  94. ElButtonGroup,
  95. ElCalendar,
  96. ElCard,
  97. ElCarousel,
  98. ElCarouselItem,
  99. ElCascader,
  100. ElCascaderPanel,
  101. ElCheckbox,
  102. ElCheckboxButton,
  103. ElCheckboxGroup,
  104. ElCol,
  105. ElCollapse,
  106. ElCollapseItem,
  107. ElCollapseTransition,
  108. ElColorPicker,
  109. ElContainer,
  110. ElDatePicker,
  111. ElDialog,
  112. ElDivider,
  113. ElDrawer,
  114. ElDropdown,
  115. ElDropdownItem,
  116. ElDropdownMenu,
  117. ElFooter,
  118. ElForm,
  119. ElFormItem,
  120. ElHeader,
  121. ElIcon,
  122. ElImage,
  123. ElInput,
  124. ElInputNumber,
  125. ElLink,
  126. ElMain,
  127. ElMenu,
  128. ElMenuItem,
  129. ElMenuItemGroup,
  130. ElOption,
  131. ElOptionGroup,
  132. ElPageHeader,
  133. ElPagination,
  134. ElPopconfirm,
  135. ElPopover,
  136. ElPopper,
  137. ElProgress,
  138. ElRadio,
  139. ElRadioButton,
  140. ElRadioGroup,
  141. ElRate,
  142. ElRow,
  143. ElScrollBar,
  144. ElSelect,
  145. ElSlider,
  146. ElStep,
  147. ElSteps,
  148. ElSubmenu,
  149. ElSwitch,
  150. ElTabPane,
  151. ElTable,
  152. ElTableColumn,
  153. ElTabs,
  154. ElTag,
  155. ElTimePicker,
  156. ElTimeSelect,
  157. ElTimeline,
  158. ElTimelineItem,
  159. ElTooltip,
  160. ElTransfer,
  161. ElTree,
  162. ElUpload,
  163. ]
  164. const plugins = [
  165. ElInfiniteScroll,
  166. ElLoading,
  167. ElMessage,
  168. ElMessageBox,
  169. ElNotification,
  170. ]
  171. const app = createApp(App)
  172. components.forEach(component => {
  173. app.component(component.name, component)
  174. })
  175. plugins.forEach(plugin => {
  176. app.use(plugin)
  177. })

全局配置

在引入 Element Plus 时,可以传入一个全局配置对象。该对象目前支持 sizezIndex 字段。size 用于改变组件的默认尺寸,zIndex 设置弹框的初始 z-index(默认值:2000)。按照引入 Element Plus 的方式,具体操作如下:

完整引入 Element:

  1. import { createApp } from 'vue'
  2. import ElementPlus from 'element-plus';
  3. import App from './App.vue';
  4. const app = createApp(App)
  5. app.use(ElementPlus, { size: 'small', zIndex: 3000 });

按需引入 Element:

  1. import { createApp } from 'vue'
  2. import { ElButton } from 'element-plus';
  3. import App from './App.vue';
  4. const app = createApp(App)
  5. app.config.globalProperties.$ELEMENT = option
  6. app.use(ElButton);

按照以上设置,项目中所有拥有 size 属性的组件的默认尺寸均为 ‘small’,弹框的初始 z-index 为 3000。

开始使用

至此,一个基于 Vue 和 Element Plus 的开发环境已经搭建完毕,现在就可以编写代码了。各个组件的使用方法请参阅它们各自的文档。

使用 Nuxt.js

我们还可以使用 Nuxt.js

快速上手 - 图1