用脚手架创建项目
下载脚手架的包
npm install @vue-cli -g
复制
创建项目,先cd到要创建的文件夹下
vue create <项目名>
复制
安装一些开发包
npm install element-plus --save npm install vue-router@4 --save
复制
这里可能会报一些版本冲突等问题,可以强制执行:
npm install element-plus --save --legacy-peer-deps
复制
解释:在NPM v7中,现在默认安装 peerDependencies,–legacy-peer-deps 目的是绕过 peerDependency 自动安装;它告诉 NPM 忽略项目中引入的各个 modules 之间的相同 modules 但不同版本的问题并继续安装,保证各个引入的依赖之间对自身所使用的不同版本 modules 共存。
在 src 目录下创建一个 store 文件夹,并在此文件夹下创建一个 index.js 文件。
import { createStore } from 'vuex' import { state } from './state' export default createStore({ // 自定义数据 state, mutations: { // 自定义方法 increment(state) { state.count++; }, decrease(state) { state.count--; } } })
复制
在 src 目录下创建一个 routers.js 文件。
import { createRouter, createWebHashHistory } from 'vue-router' import ContainerPage from './components/ContainerPage' import HomePage from './components/HomePage' const router = createRouter({ history: createWebHashHistory(), routes: [ {path: '/', component: ContainerPage}, {path: '/container', component: HomePage}, ] }) export default router;
复制
修改 main.js 文件:
import { createApp } from 'vue' import App from './App.vue' import store from './store' import ElementPlus from 'element-plus' import 'element-plus/dist/index.css' import routers from './routers' const app = createApp(App) app.use(routers); app.use(store); app.use(ElementPlus); app.mount('#app');
复制
修改 App.vue 文件:
<template> <div> <router-view></router-view> </div> </template> <script> export default { name: 'App', } </script>
复制
测试
启动程序:
npm run serve
复制
访问 http://localhost:8080/#/container 地址,成功看见页面。
其他
element-plus 官网推荐自动导入
首先安装插件:
npm install -D unplugin-vue-components unplugin-auto-import
复制
修改 vue.config.js 文件:
const { defineConfig } = require('@vue/cli-service') module.exports = defineConfig({ transpileDependencies: true, configureWebpack: { plugins: [ require('unplugin-vue-components/webpack')({ /* options */ }), require('unplugin-auto-import/webpack')({ /* options */ }), ], }, })
复制
创建一个 vue 文件,启动项目,查看效果。
<template> <el-header>Header</el-header> <el-main> <el-button type="primary">Primary</el-button> </el-main> </template> <script> export default { name: "ContainerPage", } </script>
复制
element-plus 使用 icon
安装包管理器:
npm install @element-plus/icons-vue
复制
修改 main.js 文件,注册所有图标。
// 添加 import * as ElementPlusIconsVue from '@element-plus/icons-vue' const app = createApp(App) for (const [key, component] of Object.entries(ElementPlusIconsVue)) { app.component(key, component) }
复制
安装自动导入插件:
npm i -D unplugin-icons npm i -D @iconify/json
复制
修改 vue.config.js 文件:
const { defineConfig } = require('@vue/cli-service') module.exports = defineConfig({ transpileDependencies: true, configureWebpack: { plugins: [ require('unplugin-vue-components/webpack')({ /* options */ }), require('unplugin-auto-import/webpack')({ /* options */ }), require('unplugin-icons/webpack')({ /* options */ }), ], }, })
复制
测试:
// 这种写法有冲突,会失效 <!-- <el-button type="primary" :icon="Search">Search</el-button> --> // 推荐使用 <el-button type="primary"> <el-icon> <Edit /> </el-icon> Search </el-button>
复制
引入 echarts5
安装 echarts 包:
npm install echarts --save
复制
全局引入 echarts,修改 main.js 文件:
import { createApp } from 'vue' import App from './App.vue' import store from './store' import ElementPlus from 'element-plus' import 'element-plus/dist/index.css' import * as ElementPlusIconsVue from '@element-plus/icons-vue' import routers from './routers' import * as echarts from 'echarts' const app = createApp(App) for (const [key, component] of Object.entries(ElementPlusIconsVue)) { app.component(key, component) } app.use(routers); app.use(store); app.use(ElementPlus); app.config.globalProperties.$echarts = echarts app.mount('#app');
复制
测试:
<template> <div> <p>home</p> <div id="myChart" style="width: 400px;height:400px;"></div> </div> </template> <script> export default { name: "HomePage", mounted() { //this.$root => app let myChart = this.$echarts.init(document.getElementById("myChart")); // 绘制图表 myChart.setOption({ title: { text: "ECharts 入门示例", }, tooltip: {}, xAxis: { data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"], }, yAxis: {}, series: [ { name: "销量", type: "bar", data: [5, 20, 36, 10, 10, 20], }, ], }); } } </script>
复制