3
一、创建vue项目
vue create vueapp
? Please pick a preset: Manually select features ? Check the features needed for your project: (*) Choose Vue version (*) Babel ( ) TypeScript (*) Progressive Web App (PWA) Support (*) Router (*) Vuex (*) CSS Pre-processors (*) Linter / Formatter ( ) Unit Testing >( ) E2E Testing
? Please pick a preset: Manually select features ? Check the features needed for your project: Choose Vue version, Babel, PWA, Router, Vuex, CSS Pre-processors, Linter ? Choose a version of Vue.js that you want to start the project with 3.x ? Use history mode for router? (Requires proper server setup for index fallback in production) No ? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): Sass/SCSS (with dart-sass) ? Pick a linter / formatter config: Standard ? Pick additional lint features: Lint on save ? Where do you prefer placing config for Babel, ESLint, etc.? In dedicated config files ? Save this as a preset for future projects? (y/N) n
二、配置并安装组件
1、更新vue版本:npm i vue@3.2.8 vue-router@4.0.11 vuex@4.0.2
2、在根目录下建立.prettierrc文件,在文件里写上如下代码,会自动帮我们补全一些符号
{ "semi": false, //分号检查,不使用分号 "singleQuote": true, //使用单引号 "trailingComma": "none" //是否使用尾逗号 }
3、安装axios:npm i axios --save
4、安装md5加密:npm i js-md5
5、安装NProgress:npm i nprogress
6、安装element-plus: npm install element-plus --save 安装element-plus指定版本:npm i element-plus@2.1.8 安装完成后,配置./src/main.js文件import { createApp } from 'vue'
import App from './App.vue' // 导入App根组件
import router from './router' // 导入路由器
import store from './store' // 导入状态管理
import ElementPlus from 'element-plus' // 导入element-plus组件库
import 'element-plus/dist/index.css' // 导入element-plus组件库对应样式
const app = createApp(App)
app.use(ElementPlus)
app.use(store).use(router).mount('#app')
三、清理vue项目
1、删除./scr/views 文件下的所有文件
2、修改./src/App.vue文件
// App.vueApp.vue
3、修改路由文件./src/router/index.js
// router/index.js import { createRouter, createWebHashHistory } from 'vue-router' // 导入nprogress import NProgress from 'nprogress' import 'nprogress/nprogress.css' // 路由数据 const routes = [ { path: '/login', component: () => import('../views/Login.vue') } ] // 路由器对象 const router = createRouter({ history: createWebHashHistory(), routes }) // 路由导航守卫 router.beforeEach((to, from, next) => { NProgress.start() // 开启加载进度条 next() }) router.afterEach((to, from) => { NProgress.done() // 结束加载进度条 }) // 导出,在main.js中导入 export default routersrc/router/index.js
4、根目录下vue.config.js文件中修改配置
lintOnSave: false // 关闭每次保存都进行检测四、新增工具文件夹utils
1、src下新建utils文件夹,
2、建立request.js
// request.js // 导入axios请求库 import axios from 'axios' // 导入nprogress import NProgress from 'nprogress' import 'nprogress/nprogress.css' // 创建axios实力对象 const instance = axios.create({ // 设置请求根路径 baseURL: 'https://xxx.com:xxx/', // 请求超时时间 timeout: 5000 }) // 添加请求拦截器 instance.interceptors.request.use( (config) => { // 发送请求之前做什么 NProgress.start() //开启加载进度条 return config }, (error) => { // 请求错误做什么 return Promise.reject(error) } ) // 添加响应拦截器 instance.interceptors.response.use( (response) => { // 对响应做什么 NProgress.done() //结束加载进度条 return response }, (error) => { // 响应错误做什么 return Promise.reject(error) } ) // 导出一个get方法 export const $get = (url, params) => { return instance.get(url, { params }) } // 导出一个post方法 export const $post = (url, params) => { return instance.post(url, params) } // 导出设置请求头信息方法 export const $setHeader = (key, value) => { instance.defaults.headers.common[key] = value } // 将axios对象导出 export default instancerequest.js
3、建立msg.js文件
// msg.js // 导入消息框 import { ElMessage, ElMessageBox } from 'element-plus' // 消息框 export const $msg = ( message, type = 'success', duration = 1500, showClose = true ) => { ElMessage({ message, type, duration }) } // 确认框 export const $confirm = (message, title = '提示', type = 'warning') => { return new Promise((resolve, reject) => { ElMessageBox.confirm(message, title, { confirmButtonText: '确定', cancelButtonText: '取消', type }) .then(() => { resolve() }) .catch(() => { // reject() }) }) }msg.js