附上源码地址: Vue3.0+TS+Element-plus 后台管理系统模板

准备工作

安装vue3.0,npm create vue3-project

选中这几项即可,不需要vuex, 我们自己封装状态管理。

setup函数使用

在.vue文件中, script 标签下代码都必须带有lang=“ts”。关于setup函数调用时间是在vue2的create之前触发,其他的生命周期相信大家都有所了解,这里就不做赘述了。setup有两种写法 ,

常规写法

<script lang="ts">
import { defineComponent } from 'vue'export default defineComponent({name: 'home',setup() {return {}}
})
</script>

需要在模板html中使用到的变量及方法名必须全部 return

简捷写法

<script lang='ts' setup>
import navbar from '@/components/Navbar'
</script>

由于 vue3.2 版本的发布,<script setup 的实验性标志已经去掉,这说明这个语法提案已经正式开始使用,并且我个人对这个方案表示非常喜欢。无需 return 包括components,只要定义或引入后即可直接在html中使用,弊端是name无法定义,如果用到 name, 须:

<script lang="ts">
import { defineComponent } from 'vue'export default defineComponent({name: 'home',
})
</script><script lang='ts' setup>
import navbar from '@/components/Navbar'
// 此处编写业务代码 .......
</script>

此两种写法本人在项目中都有用到,我认为最好的使用场景是 components组件中使用第一种,views页面中使用第二种。原因是由于组件中会常用到props, emit,如此在第二种写法中就不太方便了,必须

import { defineProps, defineEmits } from 'vue'

状态管理Store

vue3.0是支持vuex的,而且vuex 是一个比较完善的状态管理库。它很简单,并与 Vue 集成的非常好。不使用vuex的原因是vue3 版本重新编写了底层的响应式系统(reactive,ref),并介绍了构建应用程序的新方法。新的响应式系统非常强大,它可以直接用于集中的状态管理,既然自身已经具备这样的功能,何必还要单独安装vuex舍近求远呢。于是我自定义了一套store。用法结合了es6的class,具体实现项目中查阅更详细!

import { reactive, readonly } from 'vue'export abstract class Store<T extends Object> {protected state: Tconstructor() {const data = this.data()this.setup(data)this.state = reactive(data) as T}public getState(): T {return readonly(this.state) as T}protected abstract data(): Tprotected setup(data: T): void { }
}

动态缓存(keep-alive)

在vue2中

<transition name="fade-transform" mode="out-in"><keep-alive :include="cachedViews"><router-view class="app-container" :key="key" /></keep-alive>
</transition>

在vue3中

<router-view class="app-container" v-slot="{ Component, route }"><transition name="fade-transform" mode="out-in"><keep-alive :include="cachedViews" :max="10"><component :is="Component" :key="route.path" /></keep-alive></transition>
</router-view>

Element Plus

全局汉化

在element-plus中, 默认是英文版的我们需要加一个汉化:

import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import locale from 'element-plus/lib/locale/lang/zh-cn'
// 注册ElementPlus
app.use(ElementPlus, {locale, // 语言设置size: Cookies.get('size') || 'medium' // 尺寸设置
})

主题风格

// 主题颜色风格逻辑引入
import theme from '@/utils/theme'
import { getSetting } from '@/utils/setting'
// 主题颜色风格初始化
theme(getSetting('theme'))

关于 theme 以及 getSetting 方法, git中有详细代码, 这里只说明重要代码

注意

关于菜单接口数据格式以下为例

{children: [{alwaysShow: nullchildren: []component: "systemManagement/menuManage"hidden: falsemeta: {title: "菜单管理", icon: "", noCache: false}name: "menuManage"path: "menuManage"redirect: ""}]component: "Layout"hidden: falsemeta: { title: "系统管理", icon: "international", noCache: false }icon: "international"noCache: falsetitle: "系统管理"name: "systemManagement"path: "/systemManagement"redirect: "noRedirect"
}

效果展示


感谢阅读~~
本篇文章及项目代码参考vue2.0版若依系统,特此说明并致谢!
如果对您有所帮助,请点个star,谢谢!

Vue3.0+TS+Element-plus实现(若依版后台管理系统)相关推荐

  1. 简单易上手的vue3.0+ts实战小项目!!附带后台接口

    vue3+Ts项目实战 1.前言 2.项目演示 3.项目介绍 4.配套的node服务 5.vue3+ts的使用心得 1.vue3的使用体会

  2. vue3.0+ts+element-plus多页签应用模板:element-plus按需引入与动态换肤

    目录 系列链接 一.安装element-plus 二.按需引入 1. 为什么要按需引入? 2. 如何按需引入? 3. 验证是否引入成功 三.动态换肤 1. 制作自定义主题 2. 引入自定义主题 3. ...

  3. vue3.0+ts+element-plus多页签应用模板:多级路由缓存

    目录 系列文章 一.先说点啥 1. 为啥需要路由缓存? 2. 怎么实现路由缓存? 二.路由扁平化 三.定义tag模块处理路由缓存 四.切换路由时加入缓存 五.使用keep-alive 系列文章 vue ...

  4. vue 不识别svg_vue中引用svg,vue引入svg不显示,vue引用svg配置,vue3.0+ts如何配置svg...

    注意: 如果按照下面配置正确发现svg依然无法显示可能s'v'g-sprite-loader的版本过高,重新指定版本下载npm i svg-sprite-loader@3.8.0 --save-dev ...

  5. 如何搭建一个完整的Vue3.0 + ts 的项目

    如何搭建一个完整的Vue3.0 + ts 的项目 相信9月18日尤大大的关于Vue3.0的发表演讲大家一定有所关注,现在Vue3.0 也已经进入RC阶段(最终产品的候选版本,如果没有问题则可发布成为正 ...

  6. vue3.0+ts+element-plus多页签应用模板:项目搭建

    目录 系列文章 一.安装vue-cli@4.5.x 二.创建项目 三.项目配置 四.IDE配置 五.vue.config.js配置 六.重置浏览器默认样式 系列文章 vue3.0+ts+element ...

  7. vue3.0 结合element ui 开发后台ui框架

    vue3.0 结合element ui 开发后台ui框架,根据element ui 官网步骤安装出现报错信息,解决方法: 按照element UI官网步骤, 启动vue 3.0项目:npm run s ...

  8. vue3.0+ts+element-plus多页签应用模板:侧边导航菜单(上)

    目录 系列文章 一.先说点什么 二.从问题开始,侧边栏是干啥的? 三.封装组件之思路分析 四.封装菜单部分 1. MenuItem 2. ModuleMenu 系列文章 vue3.0+ts+eleme ...

  9. 支持vue3.0+ts 的富文本记录

    前言 用过很多的富文本,还是蛮喜欢鹅毛富文本,轻量级, 一般遇到富文本的案例,都会首先想到的是quill 目前vue3.0与react分裂两极,typescript霸占一方,javascript还在坚 ...

最新文章

  1. graphql redux_如何在Redux应用程序中使用GraphQL
  2. iPhone 13便宜到上热搜!王守义诚不我欺
  3. [Tool] 使用CodeMaid自動程式排版 - 摘自网络
  4. OpenGL坐标系转化之投影坐标系
  5. 切面是异步还是同步操作‘_Autofac的AOP面向切面编程研究
  6. Echarts中柱状图X轴显示时间显示不开倾斜显示的属性
  7. linux java程序启动脚本
  8. json中怎么去掉[]外的引号_如何正确检查发动机中的机油量?从机油尺处向外窜气是怎么回事?...
  9. Linux开发cocos2dx程序环境搭建
  10. 解析poj页面获取题目
  11. mac terminal update management pack
  12. 深度学习 GPU环境 Ubuntu 16.04 + Nvidia GTX 1080 + Python 3.6 + CUDA 9.
  13. Angular提示文件不是一个有效的模块
  14. 说说封杀BT的几个理由
  15. 未解决:关于下载的ipython notebook打开的时候遇到问题的解决方法: NotJSONError(“Notebook does not appear to be JSON
  16. 各版本opencv官网下载路径
  17. Mac上使用Chrome浏览器截取长图
  18. token与refresh_token
  19. 数电(二)—分析/画逻辑电路图
  20. 转载-高仙机器人落地北京杭州深圳多个城市地铁

热门文章

  1. 2020用vue实现仿美团导航切换功能和淘宝购物车功能,实现默认第一个导航显示效果?
  2. Latex基于longtable环境设置跨页表格,且固定表格宽度、支持跨页标题显示
  3. 微信视频号直播1000个看过多少钱
  4. 屏幕标记软件-Pointofix介绍
  5. 《大数据导论》之数据生命周期和数据使用
  6. 2004年最耐人寻味的言辞,最幽默的戏谑,最无奈的表白与最动听的情话。
  7. 怎么在网络上开期货账户?
  8. 如何用 Python 给照片换色
  9. 这次的深夜食堂来到了普吉岛,只为寻找…
  10. 轩辕剑龙舞云山如何在电脑上玩 轩辕剑龙舞云山模拟器教程