vue3.2 搭建后台管理应用模板

277 阅读4分钟

1.用yarn来初始化项目

yarn create vite-app <project-name>
cd <project-name>
yarn 
yarn dev

这样项目就创建好了 在浏览器输入localhost:3000 就能看见默认首页了

2.项目的目录结构

|-node_modules      -- 项目依赖包的目录
|-public            -- 项目公用文件
  |--favicon.ico    -- 网站地址栏前面的小图标
|-src               -- 源文件目录,程序员主要工作的地方
  |-assets          -- 静态文件目录,图片图标,比如网站logo
  |-components      -- Vue3.x的自定义组件目录
  |--App.vue        -- 项目的根组件,单页应用都需要的
  |--index.css      -- 一般项目的通用CSS样式写在这里,main.js引入
  |--main.js        -- 项目入口文件,SPA单页应用都需要入口文件
|--.gitignore       -- git的管理配置文件,设置那些目录或文件不管理
|-- index.html      -- 项目的默认首页,Vue的组件需要挂载到这个文件上
|-- package-lock.json --项目包的锁定文件,用于防止包版本不一样导致的错误
|-- package.json    -- 项目配置文件,包管理、项目名称、版本和命令

vite创建的项目结构很简洁,pack.json也非常简洁

{ "name": "demo2", "version": "0.0.0", "scripts": { "dev": "vite", "build": "vite build" }, "dependencies": { "vue": "^3.0.4" }, "devDependencies": { "vite": "^1.0.0-rc.13", "@vue/compiler-sfc": "^3.0.4" } }

3.安装常用插件

3.1使用sass,注意由于环境问题和版本问题

yarn add node-sass 会出现一下错误,

2021-06-05_104413.png

因为电脑里没有 Python环境,可以自己直接安装Python,一键安装即可,安装包自行百度下载。 2.第二种安装方法
yarn add -D sass 直接安装成功

2021-06-05_112045.png

2021-06-05_111951.png

3.2 使用router4.0

安装路由 npm install vue-router@4 -S
创建router/idnex.js

import { createRouter, createWebHashHistory } from 'vue-router'
const routes = [
  {
    path: '/',
    name: '/login',
    redirect:'/login'
  },
  {
    path: '/login',
    name: 'Login',
    component: () => import('../views/Login/index.vue')
  },
 {
   path: '/home',
   name: '首页',
   component: () => import('../views/Home/index.vue')
 },
 {
   path: '/about',
   name: 'About',
   component: () => import('../views/About.vue')
 }
]
const router = createRouter({
 history: createWebHashHistory(),//哈希模式
 routes
})
export default route
// 页面使用
import { useRouter,useRoute } from 'vue-router';
const router = useRouter()
const onSubmit2 =()=>{
  router.push({name:'首页',query:{role:'admin'}})
}

3.3 使用ElementPlus

安装element-plus 
npm install element-plus --sav
推荐使用按需自动导入
1.npm install unplugin-vue-components
2.vite配置

  // vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
// const {resolve} =require('path')
import path from 'path'
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
	// alias:{
  //   '@':resolve(__dirname,'src')
  // },
  resolve:{
    alias:{'@':path.resolve(__dirname,'src')}
  },
  server:{
    port:8080,
    open: true,
  }
})
3.在main.js 中 引入 import 'element-plus/dist/index.css'

3.4 修改element-plus 默认语言配置

默认为英文,我们一般需要改成中文

    main.js
    import zhCn from 'element-plus/es/locale/lang/zh-cn'
    createApp(App).use(router).use(ElementPlus, {locale: zhCn}).use(store).mount('#app')

3.5 别名配置

方式一
import path from 'path'
  resolve:{
    alias:{'@':path.resolve(__dirname,'src')}
  },
方式二
 const {resolve} =require('path')
 alias:{
  '@':resolve(__dirname,'src')
 },

3.6 使用vuex4

安装vuex npm install vuex@4 -S
在src目录下添加store/index.js
import { createStore } from 'vuex'
export default createStore({
     state: {
       tabsList:[],
       conTextTabs:''
     },
     mutations:{
       //添加tab
       addTabs(state,tab){
         //如果有 就不添加 
          const isSome = state.tabsList.some(item=>{return item.path===tab.path})
          if(!isSome){
            const itemTab={ 
              fullPath:tab.fullPath,
              meta:tab.meta,
              path:tab.path,
              name:tab.name,
              query:tab.query,
              params:tab.params,
              title:tab.meta.title
            }
            state.tabsList.push(itemTab)
          }
       },
       //移除tab
       removeTabs(state,tab){
         const index = state.tabsList.findIndex((item,index)=>{
            return  item.path==tab.path
          })
          state.tabsList.splice(index,1)
       },
     },
     getters:{},
     actions:{},
     modules:{}
})

3.7 使用pinia,pinia持久化插件pinia-plugin-persist

安装
   $ npm install pinia
   在src目录下创建pinia文件夹并创建index.js
   import { defineStore } from 'pinia'
   export const useStore = defineStore('user2', {
     state: () => {
       return {
         name: '张三',
         content: 1,
         list: [1, 2, 3]
       }
     },
     getters: {
       getAdd: (state) => {
         return state.content + 200
       }
     },
     actions: {
       changeName(name) {
         this.name = name
       }
     },
     //持久化配置
     persist: {
       enabled: true,
       strategies: [
         {
           //key的名称
           key: 'pinia',
           //更改默认存储,我更改为localStorage
           storage: localStorage,
           paths: ['name', 'content'] // 可以选择哪些进入local存储,默认是全部进去存储
         }
       ]
     }
})
在组件中使用
<p>name:{{store.name  }}</p>
<p>content:{{ store.content }}</p>
import { useStore } from "../../../pinia/index";
const store = useStore();
const test = () => {
 store.content++;
};
使用结构的方式 这种是响应式的(推荐)
   <p>{{ content }}</p>
   <p>{{store.getAdd}}</p>
   <button @click="add()">父按钮</button>
import { useStore } from "../../../pinia/index";
import { storeToRefs } from "pinia"; //
const store = useStore();
const { content } = storeToRefs(store);
const add = () => {
 store.content++;
};
持久化配置 在pinia下在创建一个store.js文件 ,并在main.js中使用 当然也可以不用单独抽出来直接放到main.jsimport { createPinia } from 'pinia'
// 引入持久化插件
// import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
import piniaPersist from 'pinia-plugin-persist'

const pinia = createPinia()
// 使用该插件
pinia.use(piniaPersist)

//导出
export default pinia

最后在main.js中引用

import { createApp } from 'vue'
import App from './App.vue'
import router from './router/index'
import store from './store/index' //vuex
import pinia from './pinia/store.js'  //pinia
import ElementPlus from 'element-plus'
import zhCn from 'element-plus/es/locale/lang/zh-cn'

import './assets/css/index.css'
import 'element-plus/dist/index.css'


createApp(App).use(router).use(ElementPlus, { locale: zhCn }).use(store).use(pinia).mount('#app'

3.8 使用vite-plugin-svg-icons在项目中用svg图标

1. 安装 npm install vite-plugin-svg-icons --save-dev
2. 在vite.config.js 中引入配置
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons';

	createSvgIconsPlugin({
		// 指定需要缓存的图标文件夹
		iconDirs: [path.resolve(process.cwd(), 'public/img/svg')],
		// 指定symbolId格式
		symbolId: 'icon-[name]',
	}),

3.在main.js 中引入
import 'virtual:svg-icons-register'

4.在组件中使用  tip 是 public/img/svg文件夹下的svg文件名
	<svg aria-hidden="true" style="width: 50px; height: 50px">
		<use :href="`#icon-tip`" rel="external nofollow"  />
	</svg>

8974616813bdebf49bc01529b3768f1.png