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

相关内容

热门资讯

我的心愿四年级100字作文怎... 篇一:我的心愿四年级100字作文怎么写42篇第一篇内容:我希望成为一名优秀的画家我是一个喜欢画画的孩...
感动的事四年级作文300字【... 感动的事四年级作文300字 篇一我的小伙伴我有一个特别好的小伙伴,他叫小明。他是一个非常善良和乐于助...
回乡偶书【优选4篇】 回乡偶书 篇一 回乡偶书 篇二回乡偶书 篇三 重庆市忠县实验小学四年级二班:申晓航         ...
想象四年级作文400字(精简... 想象四年级作文400字 篇一我的未来世界我是一位四年级的学生,我有一个梦想,那就是拥有一个充满科技和...
四年级作文【精彩6篇】 四年级作文 篇一我喜欢的动物我喜欢的动物是小狗。小狗是一种可爱的动物,它们有着憨态可掬的外表和忠诚的...
四年级描写北京故宫的作文40... 四年级描写北京故宫的作文400字 篇一北京故宫是我国古代宫殿建筑的代表之一,它位于北京市中心,是中国...
四年级作文我的暑生活(通用6... 四年级作文我的暑生活 篇一我的暑假生活充满了欢乐和收获。这个暑假,我参加了许多有趣的活动,学到了很多...
玫瑰花和小雨珠四年级作文【通... 玫瑰花和小雨珠四年级作文 篇一玫瑰花和小雨珠我有一个好朋友,她叫小雨珠。她是我们班的班花,而我则是班...
我我快乐300字四年级作文8... 我快乐300字四年级作文 篇一我快乐的一天今天是我快乐的一天。早上我起床后,妈妈给我做了我最喜欢吃的...
我们这美丽的校园四年级作文(... 我们这美丽的校园四年级作文 篇一我热爱我的校园,因为它是如此美丽。每天早上,当我走进校园时,我都被各...
古老而神秘的海神庙四年级作文... 古老而神秘的海神庙四年级作文 篇一海神庙是一座古老而神秘的庙宇,位于一个小岛上。我和我的家人去参观了...
小书迷四年级作文【推荐6篇】 小书迷四年级作文 篇一看见书,我就忍不住心里狂喜。那是一种浓郁的书香,让我仿佛置身于一个神奇的世界。...
五一劳动节四年级作文(精选6... 五一劳动节四年级作文 篇一五一劳动节是每年的五月一日,也是我们最期待的假期之一。这个节日是为了表彰劳...
四年级写我的动物朋友的作文第... 四年级写我的动物朋友的作文第四单元 篇一我的宠物狗我家养了一只非常可爱的宠物狗,它的名字叫小黑。小黑...
热爱生命四年级作文【优秀6篇... 热爱生命四年级作文 篇一热爱生命生命是最宝贵的财富,我们每个人都应该热爱生命。生命只有一次,我们要珍...
以我发现了为题的作文【优选3... 以我发现了为题的作文 篇一我发现了一片神奇的花海今天,我偶然发现了一片令人惊叹的花海,仿佛置身于童话...
小学生四年级以安全为主题作文... 小学生四年级以安全为主题作文 篇一标题:保护自己的安全安全是我们生活中非常重要的一部分,我们每个人都...
小青蛙四年级作文(精彩6篇) 小青蛙四年级作文 篇一:我的好朋友小青蛙我有一个好朋友,他是一只小青蛙。他的名字叫小绿,因为他全身都...
爱的教育作文【精彩6篇】 爱的教育作文 篇一爱,是一种最基本的人类情感,也是一种最重要的教育方式。在教育过程中,爱是最有效的催...
清明扫墓的作文(最新6篇) 清明扫墓的作文 篇一清明扫墓是我国传统的节日之一,也是我最喜欢的节日之一。每年的清明节,我都会和家人...