当前位置: 首页 > article >正文

Muse-Ant-Desgin-Vue 改造成 Vite+Vue3

后台地址:https://www.creative-tim.com/product/muse-vue-ant-design-dashboard?ref=antdv-official

一、配置 Vite+AntDesginVue

  • 配置Vite+AntDesginVue

Vite+AntDesginVue配置:https://blog.csdn.net/qq_17523181/article/details/143241626

  • 安装vue-router
cnpm i vue-router

二、安装muse-vue-ant-design

  • 下载后台
  • cnpm i,安装依赖
  • 运行查看
    在这里插入图片描述
  • 现在看到 muse-vue-ant-design没有使用vite,也没有使用vue3

三、安装less

  • 原版使用sass,现在我们改用less
cnpm i less
  • vite.config.js里配置,为less设置支持js语法和字符集默认设置
    在这里插入图片描述
  • 制作一个less测试:定义一个样式,定义一个变量,定义一个循环
  • src/less/test.less
    在这里插入图片描述
  • 在main.js里加入
import '@/less/test.less'
  • 在App.vue里简单测下less
    可以看到body的标签起到了作用
    若要使用变量,则需要把less文件引入
    在这里插入图片描述
    写一个bg-primary的class,可以看到样式已经有
    在这里插入图片描述

四、移植Muse-Ant-Desgin-Vue程序到Vite框架

  • 拷贝文件
    在这里插入图片描述

  • 建立一个less文件夹,用于移植scss的内容
    建立一个app.less与base/_variables.less
    app.less下先import一个less
    @import “@/less/base/_variables” ;
    _variables.less文件里,把$替换成@

  • main.js里改为

import { createApp } from 'vue';
// 全局样式
import '@/less/app.less'
// app实例
import App from './App.vue';
const app = createApp(App);
// 路由注册
import router from './router'
app.use(router)
// ant-design-vue注册
import Antd from 'ant-design-vue';
import 'ant-design-vue/dist/reset.css';
app.use(Antd)
// 全局组件注册
import DashboardLayout from './layouts/Dashboard.vue';
app.component("layout-dashboard", DashboardLayout)

app.mount('#app')
  • 在App.vue里
<template>
	<div id="app">
		<component :is="layout">
			<router-view />
		</component>
	</div>
</template>

<script setup>
import {computed} from "vue";
import {useRoute} from 'vue-router'
const route = useRoute();
const layout = computed(()=>{
  return "layout-" + ( route.meta.layout || "default" ).toLowerCase() ;
})

</script>

五、Muse的框架

  • App.vue中,通过component动态组件来实现外部layout结构的切换
    这里的router-view只是示意,没有作用,真正的router-view是写在layout组件中的
<component :is="layout">
  <router-view />
</component>
  • 原版使用动态组件component,来确定框架的vue代码,组件在main.js里注册
    在这里插入图片描述
  • 根据路由不同,选择layout组件
    在这里插入图片描述

六、Router与入口调试

  • router/index.js 修改为vue3的语法,先定义/ 的默认入口,/dashboard 的首页vue
    routes原来定义了layout的参数,用于选择使用什么layout框架;
    vue3需要定义在meta里面
    在这里插入图片描述

  • router加入main.js
    在这里插入图片描述

  • 修改App.vue,实现原来的逻辑
    在这里插入图片描述

  • 把Dashbroad.vue里的组件、js代码全部注释,在html某处写入111,用于测试

  • 把layouts/Dashboard.vue,也同样注释,写入222,用于测试

  • 在main.js里注册layout
    在这里插入图片描述

  • 运行测试,发现2个vue文件都已经加载


七、修改全部sass,变为less

  • 基于之前的结构,一个个改过来,并加入less,改一个,测试一个
  • _utilities.less:
    循环与extend的写法
each(range(0,10), {
	@j: @value * 5;
	.mt-@{j} {
		margin-top: 1px * @j !important;
	}
	.mb-@{j} {
		margin-bottom: 1px * @j !important;
	}
	.ml-@{j} {
		margin-left: 1px * @j !important;
	}
	.mr-@{j} {
		margin-right: 1px * @j !important;
	}
	.my-@{j} {
		&:extend(mt-@{j});
		&:extend(.mb-@{j});
	}
	.mx-@{j} {
		&:extend(.ml-@{j});
		&:extend(.mr-@{j});
	}
	.m-@{j} {
		&:extend(.my-@{j});
		&:extend(.mx-@{j});
	}
});

遇到数字开头的数组,改成

@shadows: {
	s0: @shadow-0;
	s1: @shadow-1;
	s2: @shadow-2;
	s3: @shadow-3;
};

each(@shadows, {
	.shadow-@{index} {
		box-shadow: @value !important;
	}
})

八、修改vue2,变为vue3

  • 注意一:script 后面要加setup,不然会提示defineProps错误啥的
  • 注意二:import组件的时候,需要加上.vue的文件后缀
  • 注意三:一个模块一个模块进行改动,测试,才能清楚哪里没改对
  • 注意四:route的meta使用
import {useRoute} from 'vue-router'
const route = useRoute();
  • 注意五:props的变量,需要在template里的加入props;script里一些this.变量也需要改为props.
let props = defineProps({
  data: {
    type: Object,
  },
  height: {
    type: Number,
  },
})
  • 注意六:在vite.config.js里设置下base目录与publicDir目录
    在这里插入图片描述
  • 注意七:图片的src,可以需要在前面加上/号

九、最后


http://www.kler.cn/a/376642.html

相关文章:

  • 智能离线语音识别不灵敏?如何改善和提升识别率?
  • JS | 如何更好地优化 JavaScript 的内存回收?
  • SSM学习 day02
  • InsuranceclaimsController
  • sshpass scp失败问题记录
  • 抽丝剥茧 分布式服务框架设计 理论设计篇
  • 023集——CAD 窗体交互、多段线进行翻转、错误提示(CAD—C#二次开发入门)
  • Milvus - 基于角色的访问控制(RBAC)
  • transformers 框架使用详解,bert-base-chinese
  • 网页自动化测试和爬虫:Selenium库入门与进阶
  • C++教程(004):程序流程结构之选择结构
  • GB/T 28046.3-2011 道路车辆 电气及电子设备的环境条件和试验 第3部分:机械负荷(1)
  • 免费插件集-illustrator插件-Ai插件-闭合开放路径
  • 设计师赵霂萱:以卓越设计让 Harmony Garden Workspace 荣膺国际大奖
  • Java 集合一口气讲完!(上)||o(*°▽°*)o|Ю [有人吗?]
  • JAVA 基础-多态
  • 2024年第四届“网鼎杯”网络安全大赛-赛前模拟训练
  • DNS服务部署
  • Java网络通信
  • 从0开始学python-day17-数据结构2
  • layui 实现 城市联动
  • git cherry-pick用法详解
  • 顺序表和链表(一)
  • jmeter结合ansible分布式压测--准备工作
  • 深入了解嵌入式硬件设计
  • 视频智能分析平台LiteAIServer入侵检测算法平台部署行人入侵检测算法:智能安防的新利器