vue-admin-element项目分析与难题解决
创始人
2024-05-31 20:12:26
0

移植vue-admin-element 到普通的项目中
遇到的问题
这个是将layout目录移植过来
在这里插入图片描述
将styles中的scss移植过来
在这里插入图片描述
将项目中的store移植过来
在这里插入图片描述
src目录中的setting和permission这个路由权限移植过来
在这里插入图片描述
这个是main.js 我是使用sdn引入vue和vue-router 和axios和vuex
就不要再import 引入vue和vue-router 要不然会报错 会有重复引入的问题

// import Vue from 'vue'// 全局样式  重置css样式表
import './styles/normalize.css'
// vue-admin-element 样式表
import './styles/index.scss'import App from './App.vue'
import router from './router'
import store from './store'
import  './permission'Vue.config.productionTip = false
// 禁用用户通过插件查看vuex数据
Vue.config.devtools = false
// 这个图片后期要换
const loadimage = require('./assets/common/loading.png')
const errorimage = require('./assets/common/logo.png')
// 图片懒加载
Vue.use(VueLazyload, {preLoad: 1.3,error: errorimage,loading: loadimage,attempt: 1
})new Vue({router,store,render: h => h(App)
}).$mount('#app')

这个是permission.js 路由权限文件 和vue-admin里的权限路由一样


import router from "./router/index.js";
import store from "./store/index.js";
const WHITE_LIST = ['/login','/404']
import { getToken } from '@/utils/auth' // get token from cookie// 使用cdn引入elementui 在js中使用message
// ELEMENT.Message.error('错误');router.beforeEach(async (to,from,next)=>{// 是否有token?const hasToken = getToken()// 有tokenif(hasToken){// 是否去登入页if(to.path === '/login'){// 放行next()}else{// 判断是否有角色const hasRoles = store.getters.roles && store.getters.roles.length > 0if(hasRoles){// 放行next()}else{// 没有角色try {// 获取角色信息const { roles } = await store.dispatch('user/getInfo')// 将角色信息传入这个方法 去返回符合角色的路由信息const accessRoutes = await store.dispatch('permission/generateRoutes', roles)// 将路由信息加入路由// addRoutes 这个是路由3.0 版本的 后面的版本废弃了这个方法 // 我本来用的是3.5的路由 用addRoute 传入 路由// 在router.push() 跳转路由的时候会报错 要在push后面添加.catch((res)=>{})去捕获错误才行// 所以我就将路由降到了3.0版本 也是无奈啊!!!router.addRoutes(accessRoutes)// 我百度后 说是添加路由后 要等新的路由添加到路由生效后 再跳转 // 确保addRoutes()时动态添加的路由已经被完全加载上去// next({ ...to, replace: true })中的replace: true只是一个设置信息,告诉VUE本次操作后,不能通过浏览器后退按钮,返回前一个路由。next({ ...to, replace: true })} catch (error) {await store.dispatch('user/resetToken')next('/login')}}}}else{if(WHITE_LIST.indexOf(to.path) !== -1){next()}else{next('/login')}}})router.afterEach((to,from)=>{// to: 去的路由// from: 来的路由
}) 
export default WHITE_LIST
app.vue 最外的vue


这是vue.config.js 文件 打包时 去掉了vue vue-router等

const {defineConfig
} = require('@vue/cli-service')
// const NodePolyfillPlugin = require('node-polyfill-webpack-plugin')
// 需要排除的包,对象
let externals = {}// 判断是否是生产环境
const isProduction = process.env.NODE_ENV === 'production'
// 如果是生产环境,需要执行以下逻辑
if (isProduction) {externals = {/*** externals对象属性分析:* '包名':'在项目中引入的名字'**/'axios': 'axios','element-ui': 'ELEMENT','vue': 'Vue','vue-router': 'VueRouter','vuex': 'Vuex'}}module.exports = defineConfig({publicPath: isProduction ? './' : '/',transpileDependencies: true,configureWebpack: {// 打包瘦身// 当为开发环境时,externals为空对象// 当为生产环境时,externals对象值为排除第三方包,达到瘦身目的externals: externals,resolve: {fallback: {path: require.resolve('path-browserify')}}		},css:{loaderOptions: {scss: {prependData: `@import "@/styles/common.scss";`}}},// configureWebpack: config => {// 	const plugins = []// 	plugins.push(new NodePolyfillPlugin())// }	// devServer: {//   // 设置代理请求//   proxy: {//     // 以 api开头//     '^/api': {//       // 设置代理地址 把基地址禁用//       target: ''//     }//   }// }
})

index.html文件 cdn 引入文件


favicon.ico">xxx

scss中的文件
我这个项目中不知道为啥 #app{} 这个设置不上去 不生效
所以在sidebar.scss 中的把#app 这一层注释掉 就可以了
在这里插入图片描述
app这个尾巴的括号 别忘 去掉

在这里插入图片描述
:exprot{
xx:xx
}
这个是sass 导出变量 在vue页面中可以引入 就可以获取到变量
要抛出变量的话,文件名要改,要不然获取不到变量 文件名中间要加上module 如上图片

我用的是vue-cli4 创建的项目 用的sass 版本是
在这里插入图片描述

sass版本太高会报错 所以降低sass版本

项目里有的页面会用到path 例如 SidebarItem 页面
import path from ‘path’
在这里插入图片描述

需要下载 “path-browserify”: “^1.0.1”,
在这里插入图片描述

layout中的index.vue

这个就是 引入主体的四个组件的js  
default as AppMain  意思是 引入后重命名 为AppMain  这样在解构的时候 就可以获取到这个重命名的组件
export { default as AppMain } from './AppMain'
export { default as Navbar } from './Navbar'
export { default as Sidebar } from './Sidebar/index.vue'
export { default as TagsView } from './TagsView/index.vue'

navbar.vue

// 汉堡图片的组件没什么好说的 只有svg 要换的话 就直接改成图片

// 面包屑组件

AppMain.vue

ScrollPane.vue

相关内容

热门资讯

升学酒会主持词 升学酒会主持词  借鉴诗词和散文诗是主持词的一种写作手法。在如今这个时代,司仪等是很多场合都需要的角...
秋季开学典礼颁奖主持词 秋季开学典礼颁奖主持词  活动对象的不同,主持词的写作风格也会大不一样。在人们积极参与各种活动的今天...
老人寿宴致辞 老人寿宴致辞(精选7篇)  在我们平凡的日常里,许多人都写过致辞吧,致辞具有“礼仪性”或“仪式化”的...
经典高考升学宴主持词   尊敬的各位领导、各位嘉宾、各位亲朋好友:  大家好!8月,理想赤诚、热爱挚烈,8月,阳光灿烂、收...
中秋晚会主持稿 中秋晚会主持稿(精选5篇)  又到了一个激动人心的好日子!中秋合家团圆,是中华民族的传统习俗。下面是...
男孩满月酒主持词 男孩满月酒主持词  主持词要注意活动对象,针对活动对象写相应的主持词。在各种集会、活动不断增多的社会...
婚礼司仪主持词简短版 婚礼司仪主持词简短版  借鉴诗词和散文诗是主持词的一种写作手法。在人们积极参与各种活动的今天,各种集...
培训主持词 【精华】培训主持词八篇  借鉴诗词和散文诗是主持词的一种写作手法。在当今不断发展的世界,很多晚会、集...
婚礼主持词完整版 2017婚礼主持词(完整版)  无论新人举行什么样形式的婚礼,婚礼主持人是必不能少的。那么婚礼司仪全...
《哈利波特》的经典语录台词 《哈利波特》的经典语录台词  “就看你的了,哈利,要使他们看到,作为一名找球手,单靠一个有钱的爸爸是...
前任2备胎反击战经典台词 前任2备胎反击战经典台词  1、一见钟情太肤浅,日久生情才是真。  2、再深的感情也敌不过缘分的交错...
生日宴会主持词开场白 生日宴会主持词开场白(精选19篇)  【导语】一个好的活动开展,主持人的开场一定要和活动的主题相契合...
大学军训汇报表演主持词 大学军训汇报表演主持词  军训汇演是必不可少的,下面unjs小编整理了大学军训汇报表演主持词,欢迎阅...
闭幕词 闭幕词(通用10篇)  闭幕词,是会议的主要领导人代表会议举办单位,在会议闭幕时的讲话。其内容一般是...
班歌串词 班歌串词尊敬的领导、亲爱的同学们:大家上午好!(合)请全体起来,齐唱《美佛儿校歌》请坐!今天我们隆重...
幼儿园元旦活动主持词开场白   一、主持人开场白:  (亲爱的爸爸妈妈,小朋友们,大家新年好!因为您的孩子,我们走到了一起,形成...
生日主持主持词 精选生日主持主持词4篇  主持词要尽量增加文化内涵、寓教于乐,不断提高观众的文化知识和素养。在如今这...
开业庆典主持词 开业庆典主持词  什么是主持词?  主持词是主持人对各种晚会背诵已经准备好的稿子,或眼看提示器说出,...
新职工欢迎会主持词 新职工欢迎会主持词  主持词已成为各种演出活动和集会中不可或缺的一部分。在当下的中国社会,主持人的需...
颁奖晚会主持词 颁奖晚会主持词集合7篇  主持词可以采用和历史文化有关的表述方法去写作以提升活动的文化内涵。随着社会...