快速上手

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

使用 Starter Kit

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

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

使用 vue-cli

我们还可以使用 vue-cli 初始化项目,命令如下:

  1. > npm i -g vue-cli
  2. > mkdir my-project && cd my-project
  3. > vue init webpack
  4. > npm i && npm i element-ui

引入 Element

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

完整引入

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

  1. import Vue from 'vue'
  2. import ElementUI from 'element-ui'
  3. import 'element-ui/lib/theme-chalk/index.css'
  4. import App from './App.vue'
  5. Vue.use(ElementUI)
  6. new Vue({
  7. el: '#app',
  8. render: h => h(App)
  9. })

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

按需引入

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

首先,安装 babel-plugin-component:

  1. npm install babel-plugin-component -D

然后,将 .babelrc 修改为:

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

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

  1. import Vue from 'vue'
  2. import { Button, Select } from 'element-ui'
  3. import App from './App.vue'
  4. Vue.component(Button.name, Button)
  5. Vue.component(Select.name, Select)
  6. /* 或写为
  7. * Vue.use(Button)
  8. * Vue.use(Select)
  9. */
  10. new Vue({
  11. el: '#app',
  12. render: h => h(App)
  13. })

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

  1. import Vue from 'vue'
  2. import {
  3. Pagination,
  4. Dialog,
  5. Autocomplete,
  6. Dropdown,
  7. DropdownMenu,
  8. DropdownItem,
  9. Menu,
  10. Submenu,
  11. MenuItem,
  12. MenuItemGroup,
  13. Input,
  14. InputNumber,
  15. Radio,
  16. RadioGroup,
  17. RadioButton,
  18. Checkbox,
  19. CheckboxButton,
  20. CheckboxGroup,
  21. Switch,
  22. Select,
  23. Option,
  24. OptionGroup,
  25. Button,
  26. ButtonGroup,
  27. Table,
  28. TableColumn,
  29. DatePicker,
  30. TimeSelect,
  31. TimePicker,
  32. Popover,
  33. Tooltip,
  34. Breadcrumb,
  35. BreadcrumbItem,
  36. Form,
  37. FormItem,
  38. Tabs,
  39. TabPane,
  40. Tag,
  41. Tree,
  42. Alert,
  43. Slider,
  44. Icon,
  45. Row,
  46. Col,
  47. Upload,
  48. Progress,
  49. Badge,
  50. Card,
  51. Rate,
  52. Steps,
  53. Step,
  54. Carousel,
  55. CarouselItem,
  56. Collapse,
  57. CollapseItem,
  58. Cascader,
  59. ColorPicker,
  60. Transfer,
  61. Container,
  62. Header,
  63. Aside,
  64. Main,
  65. Footer,
  66. Loading,
  67. MessageBox,
  68. Message,
  69. Notification
  70. } from 'element-ui'
  71. Vue.use(Pagination)
  72. Vue.use(Dialog)
  73. Vue.use(Autocomplete)
  74. Vue.use(Dropdown)
  75. Vue.use(DropdownMenu)
  76. Vue.use(DropdownItem)
  77. Vue.use(Menu)
  78. Vue.use(Submenu)
  79. Vue.use(MenuItem)
  80. Vue.use(MenuItemGroup)
  81. Vue.use(Input)
  82. Vue.use(InputNumber)
  83. Vue.use(Radio)
  84. Vue.use(RadioGroup)
  85. Vue.use(RadioButton)
  86. Vue.use(Checkbox)
  87. Vue.use(CheckboxButton)
  88. Vue.use(CheckboxGroup)
  89. Vue.use(Switch)
  90. Vue.use(Select)
  91. Vue.use(Option)
  92. Vue.use(OptionGroup)
  93. Vue.use(Button)
  94. Vue.use(ButtonGroup)
  95. Vue.use(Table)
  96. Vue.use(TableColumn)
  97. Vue.use(DatePicker)
  98. Vue.use(TimeSelect)
  99. Vue.use(TimePicker)
  100. Vue.use(Popover)
  101. Vue.use(Tooltip)
  102. Vue.use(Breadcrumb)
  103. Vue.use(BreadcrumbItem)
  104. Vue.use(Form)
  105. Vue.use(FormItem)
  106. Vue.use(Tabs)
  107. Vue.use(TabPane)
  108. Vue.use(Tag)
  109. Vue.use(Tree)
  110. Vue.use(Alert)
  111. Vue.use(Slider)
  112. Vue.use(Icon)
  113. Vue.use(Row)
  114. Vue.use(Col)
  115. Vue.use(Upload)
  116. Vue.use(Progress)
  117. Vue.use(Badge)
  118. Vue.use(Card)
  119. Vue.use(Rate)
  120. Vue.use(Steps)
  121. Vue.use(Step)
  122. Vue.use(Carousel)
  123. Vue.use(CarouselItem)
  124. Vue.use(Collapse)
  125. Vue.use(CollapseItem)
  126. Vue.use(Cascader)
  127. Vue.use(ColorPicker)
  128. Vue.use(Container)
  129. Vue.use(Header)
  130. Vue.use(Aside)
  131. Vue.use(Main)
  132. Vue.use(Footer)
  133. Vue.use(Loading.directive)
  134. Vue.prototype.$loading = Loading.service
  135. Vue.prototype.$msgbox = MessageBox
  136. Vue.prototype.$alert = MessageBox.alert
  137. Vue.prototype.$confirm = MessageBox.confirm
  138. Vue.prototype.$prompt = MessageBox.prompt
  139. Vue.prototype.$notify = Notification
  140. Vue.prototype.$message = Message

全局配置

在引入 Element 时,可以传入一个全局配置对象。该对象目前仅支持 size 字段,用于改变组件的默认尺寸。按照引入 Element 的方式,具体操作如下:

完整引入 Element:

  1. import Vue from 'vue'
  2. import Element from 'element-ui'
  3. Vue.use(Element, { size: 'small' })

按需引入 Element:

  1. import Vue from 'vue'
  2. import { Button } from 'element-ui'
  3. Vue.prototype.$ELEMENT = { size: 'small' }
  4. Vue.use(Button)

按照以上设置,项目中所有拥有 size 属性的组件的默认尺寸均为 ‘small’。

开始使用

至此,一个基于 Vue 和 Element 的开发环境已经搭建完毕,现在就可以编写代码了。启动开发模式:

  1. # 执行如下命令后访问 localhost:8086
  2. npm run dev

编译:

  1. npm run build

各个组件的使用方法请参阅它们各自的文档。