2020-08-13 15:18:26 +08:00
## Quick start
2020-10-16 11:14:34 +08:00
This part walks you through the process of using Element Plus in a webpack project.
2020-08-13 15:18:26 +08:00
2020-10-26 17:16:22 +08:00
### Use vue-cli@4.5
2020-08-13 15:18:26 +08:00
2020-10-26 17:16:22 +08:00
We provide an [Element Plus plugin ](https://github.com/element-plus/vue-cli-plugin-element-plus ) for vue-cli@4.5, which you can use to quickly build an Element-based project.
2020-08-13 15:18:26 +08:00
### Use Starter Kit
2020-10-27 18:26:07 +08:00
We provide a general [project template ](https://github.com/element-plus/element-plus-starter ) for you, and also a Vite [template ](https://github.com/element-plus/element-plus-vite-starter ). For Laravel users, we have a [template ](https://github.com/element-plus/element-plus-in-laravel-starter ) here. You can download and use them directly.
2020-08-13 15:18:26 +08:00
If you prefer not to use them, please read the following.
2020-10-16 11:14:34 +08:00
### Import Element Plus
2020-08-13 15:18:26 +08:00
2020-10-16 11:19:36 +08:00
You can import ElementPlus entirely, or just import what you need. Let's start with fully import.
2020-08-13 15:18:26 +08:00
#### Fully import
In main.js:
```javascript
2020-10-16 11:14:34 +08:00
import { createApp, Vue } from 'vue'
import ElementPlus from 'element-plus';
import 'element-plus/lib/theme-chalk/index.css';
2020-08-13 15:18:26 +08:00
import App from './App.vue';
2020-10-16 11:14:34 +08:00
const app = createApp(App)
app.use(ElementPlus)
app.mount('#app')
2020-08-13 15:18:26 +08:00
```
2020-10-16 11:14:34 +08:00
The above imports Element Plus entirely. Note that CSS file needs to be imported separately.
2020-08-13 15:18:26 +08:00
#### On demand
With the help of [babel-plugin-component ](https://github.com/QingWei-Li/babel-plugin-component ), we can import components we actually need, making the project smaller than otherwise.
First, install babel-plugin-component:
```bash
npm install babel-plugin-component -D
```
Then edit .babelrc:
```json
{
"presets": [["es2015", { "modules": false }]],
"plugins": [
[
"component",
{
2020-10-16 11:14:34 +08:00
"libraryName": "element-plus",
2020-08-13 15:18:26 +08:00
"styleLibraryName": "theme-chalk"
}
]
]
}
```
Next, if you need Button and Select, edit main.js:
```javascript
import Vue from 'vue';
2020-10-16 11:14:34 +08:00
import { Button, Select } from 'element-plus';
2020-08-13 15:18:26 +08:00
import App from './App.vue';
Vue.component(Button.name, Button);
Vue.component(Select.name, Select);
/* or
* Vue.use(Button)
* Vue.use(Select)
*/
new Vue({
el: '#app',
render: h => h(App)
});
```
Full example (Component list reference [components.json ](https://github.com/ElemeFE/element/blob/master/components.json ))
```javascript
import Vue from 'vue';
import {
Pagination,
Dialog,
Autocomplete,
Dropdown,
DropdownMenu,
DropdownItem,
Menu,
Submenu,
MenuItem,
MenuItemGroup,
Input,
InputNumber,
Radio,
RadioGroup,
RadioButton,
Checkbox,
CheckboxButton,
CheckboxGroup,
Switch,
Select,
Option,
OptionGroup,
Button,
ButtonGroup,
Table,
TableColumn,
DatePicker,
TimeSelect,
TimePicker,
Popover,
Tooltip,
Breadcrumb,
BreadcrumbItem,
Form,
FormItem,
Tabs,
TabPane,
Tag,
Tree,
Alert,
Slider,
Icon,
Row,
Col,
Upload,
Progress,
Spinner,
Badge,
Card,
Rate,
Steps,
Step,
Carousel,
CarouselItem,
Collapse,
CollapseItem,
Cascader,
ColorPicker,
Transfer,
Container,
Header,
Aside,
Main,
Footer,
Timeline,
TimelineItem,
Link,
Divider,
Image,
Calendar,
Backtop,
PageHeader,
CascaderPanel,
Loading,
MessageBox,
Message,
Notification
2020-10-16 11:14:34 +08:00
} from 'element-plus';
2020-08-13 15:18:26 +08:00
Vue.use(Pagination);
Vue.use(Dialog);
Vue.use(Autocomplete);
Vue.use(Dropdown);
Vue.use(DropdownMenu);
Vue.use(DropdownItem);
Vue.use(Menu);
Vue.use(Submenu);
Vue.use(MenuItem);
Vue.use(MenuItemGroup);
Vue.use(Input);
Vue.use(InputNumber);
Vue.use(Radio);
Vue.use(RadioGroup);
Vue.use(RadioButton);
Vue.use(Checkbox);
Vue.use(CheckboxButton);
Vue.use(CheckboxGroup);
Vue.use(Switch);
Vue.use(Select);
Vue.use(Option);
Vue.use(OptionGroup);
Vue.use(Button);
Vue.use(ButtonGroup);
Vue.use(Table);
Vue.use(TableColumn);
Vue.use(DatePicker);
Vue.use(TimeSelect);
Vue.use(TimePicker);
Vue.use(Popover);
Vue.use(Tooltip);
Vue.use(Breadcrumb);
Vue.use(BreadcrumbItem);
Vue.use(Form);
Vue.use(FormItem);
Vue.use(Tabs);
Vue.use(TabPane);
Vue.use(Tag);
Vue.use(Tree);
Vue.use(Alert);
Vue.use(Slider);
Vue.use(Icon);
Vue.use(Row);
Vue.use(Col);
Vue.use(Upload);
Vue.use(Progress);
Vue.use(Spinner);
Vue.use(Badge);
Vue.use(Card);
Vue.use(Rate);
Vue.use(Steps);
Vue.use(Step);
Vue.use(Carousel);
Vue.use(CarouselItem);
Vue.use(Collapse);
Vue.use(CollapseItem);
Vue.use(Cascader);
Vue.use(ColorPicker);
Vue.use(Transfer);
Vue.use(Container);
Vue.use(Header);
Vue.use(Aside);
Vue.use(Main);
Vue.use(Footer);
Vue.use(Timeline);
Vue.use(TimelineItem);
Vue.use(Link);
Vue.use(Divider);
Vue.use(Image);
Vue.use(Calendar);
Vue.use(Backtop);
Vue.use(PageHeader);
Vue.use(CascaderPanel);
Vue.use(Loading.directive);
Vue.prototype.$loading = Loading.service;
Vue.prototype.$msgbox = MessageBox;
Vue.prototype.$alert = MessageBox.alert;
Vue.prototype.$confirm = MessageBox.confirm;
Vue.prototype.$prompt = MessageBox.prompt;
Vue.prototype.$notify = Notification;
Vue.prototype.$message = Message;
```
### Global config
When importing Element, you can define a global config object. For now this object has two properties: `size` and `zIndex` . The property `size` sets the default size for all components and the property `zIndex` sets the initial z-index (default: 2000) for modal boxes:
Fully import Element:
```js
import Vue from 'vue';
2020-10-16 11:19:36 +08:00
import ElementPlus from 'element-plus';
2020-08-13 15:18:26 +08:00
Vue.use(Element, { size: 'small', zIndex: 3000 });
```
Partial import Element:
```js
import Vue from 'vue';
2020-10-16 11:14:34 +08:00
import { Button } from 'element-plus';
2020-08-13 15:18:26 +08:00
Vue.prototype.$ELEMENT = { size: 'small', zIndex: 3000 };
Vue.use(Button);
```
With the above config, the default size of all components that have size attribute will be 'small', and the initial z-index of modal boxes is 3000.
### Start coding
2020-10-16 11:14:34 +08:00
Now you have implemented Vue and Element Plus to your project, and it's time to write your code. Please refer to each component's documentation to learn how to use them.
2020-08-13 15:18:26 +08:00
### Use Nuxt.js
We can also start a project using [Nuxt.js ](https://nuxtjs.org/ ):
< div class = "glitch-embed-wrap" style = "height: 420px; width: 100%;" >
< iframe src = "https://glitch.com/embed/#!/embed/nuxt-with-element?path=nuxt.config.js&previewSize=0&attributionHidden=true" alt = "nuxt-with-element on glitch" style = "height: 100%; width: 100%; border: 0;" > < / iframe >
< / div >