Vue3嵌套导航相对路径问题

有如下的页面设计,页面上方第一次导航,两个菜单,首页和新闻
点击新闻,内容里面嵌套一个左侧和右侧,左侧有4条新闻,点击某一条新闻,右侧显示详情

代码如下:

​
File Path: d:\hello\src\App.vue
<template><div id="app"><nav><router-link to="/">Home</router-link><router-link to="/news">News</router-link></nav><router-view></router-view> <!-- 用于渲染当前路由匹配的组件 --></div>
</template><script lang="ts">
export default {name: 'App'
};
</script><style>
nav {display: flex;justify-content: center;margin-bottom: 20px;
}nav a {margin: 0 15px;text-decoration: none;color: #42b983;
}
</style>File Path: d:\hello\src\views\NewsDetail.vue
<template><div><h2>News Detail {{ id }}</h2><p>This is the detail of the news with ID: {{ id }}</p></div>
</template><script lang="ts">
import { defineComponent, computed, onMounted } from 'vue'; // 确保只导入一次
import { useRoute } from 'vue-router';export default defineComponent({name: 'NewsDetail',setup() {const route = useRoute();const id = computed(() => route.params.id);// 在组件挂载时打印 IDonMounted(() => {console.log('Entered NewsDetail with ID:', route.params.id);});return { id };}
});
</script>File Path: d:\hello\src\router\index.ts
import { createRouter, createWebHistory } from 'vue-router';
import Home from '../views/HomeView.vue'; // 确保路径正确
import News from '../views/News.vue'; // 确保路径正确
import NewsDetail from '../views/NewsDetail.vue'; // 确保路径正确const routes = [{path: '/',name: 'Home',component: Home},{path: '/news',name: 'News',component: News,children: [{path: 'detail/:id', // 使用动态参数name: 'NewsDetail',component: NewsDetail}]}
];const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes
});export default router;File Path: d:\hello\src\views\News.vue
<template><div><h1>News</h1><ul><li><router-link to="detail/1">News Detail 1</router-link></li><li><router-link to="news/detail/2">News Detail 2</router-link></li><a href="detail/1">a标签 news 3</a></ul><router-view></router-view> <!-- 用于渲染子路由的内容 --></div>
</template><script lang="ts">
export default {name: 'News',mounted() {console.log(this.$route.path); // 这里可以访问当前路径}
};
</script>File Path: d:\hello\src\main.ts
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';const app = createApp(App);app.use(router);app.mount('#app');File Path: d:\hello\src\views\HomeView.vue
<template><div><h1>Welcome to the Home Page</h1><p>This is the home page content.</p></div>
</template><script lang="ts">
export default {name: 'HomeView'
};
</script>File Path: d:\hello\src\views\AboutView.vue
<template><div class="about"><h1>This is an about page</h1></div>
</template><style>
@media (min-width: 1024px) {.about {min-height: 100vh;display: flex;align-items: center;}
}
</style>​

首先点击 首页,然后点击新闻,当前的网址是:
http://localhost:5173/news
然后点击News detail 1,发现网址变成了:
http://localhost:5173/detail/1

 并且页面空白了,因为没有找到路由/detail
为什么会跳转到 http://localhost:5173/detail/1 而不是 http://localhost:5173/news/detail/1,这里不是写的相对路径吗?
可以参考下面的a标签,也是这样跳转的,个人觉得在当前路径是http://localhost:5173/news的时候,访问相对路径detail,就相当于一个文件夹是http://localhost:5173/,news相当于news.html,而detail和他是同级的,所以相对路径会解析为http://localhost:5173/detail
而路由中,detail和news不是同级关系
如果要写相对路径,也只能写成

to="news/detail/1"

即使写成./detail/1也不行 
这里是讨论相对路径的问题,当然,写成下面也是可以的

:to="{ name: 'NewsDetail', params: { id: 1 } }"






----------
 

Vue3 嵌套导航相对路径问题

在现代前端开发中,使用 Vue.js 进行单页面应用(SPA)的构建已成为一种趋势。Vue3 引入了许多新特性,使得开发变得更加灵活和高效。然而,在处理嵌套路由时,相对路径的问题往往会让开发者感到困惑。

页面设计

设想一个简单的页面设计:在页面的顶部有一个导航栏,用户可以选择 “首页” 和 “新闻”。当用户点击 “新闻” 时,页面中会显示一个包含左侧和右侧的布局。在左侧,用户可以看到四条新闻,点击其中一条后,右侧会显示该新闻的详细信息。

路由配置

在 Vue3 中,路由的配置是通过 vue-router 来实现的。以下是路由的基本配置:

javascript

Copy

const routes = [{path: '/',name: 'Home',component: Home},{path: '/news',name: 'News',component: News,children: [{path: 'detail/:id',name: 'NewsDetail',component: NewsDetail}]}
];

在这个配置中,/news 路由下嵌套了一个 detail/:id 路由,用于显示新闻的详细信息。

相对路径的问题

当用户在 /news 路由下点击某个新闻链接时,理应跳转到 /news/detail/1。然而,开发者可能会发现,点击链接后,浏览器跳转到了 /detail/1,导致页面空白。这是因为 Vue Router 在解析相对路径时,默认是从根路径 / 开始的。

这种情况下,用户需要明确指定完整的相对路径,例如:

html

Copy

<router-link to="detail/1">News Detail 1</router-link>

或者使用命名路由:

html

Copy

<router-link :to="{ name: 'NewsDetail', params: { id: 1 } }">News Detail 1</router-link>

深入理解 Vue Router

在 Vue Router 中,路由的解析是基于路径的层级结构。当你在 /news 路由下执行相对路径跳转时,Vue Router 会根据当前路由的层级关系来解析路径。因此,理解路由的层级结构对于正确使用相对路径至关重要。

例如,若当前路径为 /news,想要访问 /news/detail/1,则需要使用相对路径 detail/1,而不是直接使用 detail/1。这就像在文件系统中,想要从一个文件夹访问另一个文件夹下的文件,必须明确指定路径。

结论

在 Vue3 中处理嵌套路由时,理解相对路径的解析机制是非常重要的。通过合理配置路由和使用合适的路径表示法,开发者可以避免常见的路径解析错误,从而提升用户体验。希望本文能帮助你更好地理解 Vue3 中嵌套导航的相对路径问题,提升你的开发效率。


 

进一步探索 Vue3 嵌套导航的最佳实践

在深入理解 Vue3 中嵌套导航的相对路径问题后,我们可以探讨一些最佳实践,以确保在项目中高效且无误地使用这些特性。

1. 使用命名路由

命名路由不仅能提高代码的可读性,还能减少路径错误的可能性。使用命名路由时,开发者可以避免手动拼接路径,从而提高代码的可维护性。例如:

html

Copy

<router-link :to="{ name: 'NewsDetail', params: { id: news.id } }">{{ news.title }}
</router-link>

这种方式使得代码更具可读性,并且在路由变化时,开发者不需要担心路径的调整。

2. 路由守卫

在复杂的应用程序中,可能需要在路由切换时执行一些逻辑,比如权限验证或数据预加载。使用 Vue Router 的路由守卫,可以在进入某个路由之前进行检查:

javascript

Copy

router.beforeEach((to, from, next) => {if (to.name === 'NewsDetail' && !userIsLoggedIn()) {next({ name: 'Login' });} else {next();}
});

这种方式能够确保用户在访问特定页面前满足某些条件,从而提升应用的安全性。

3. 动态路由匹配

在处理新闻详情时,通常会有多个新闻项。利用动态路由匹配,可以轻松实现这一功能。通过在路由中定义动态参数,Vue Router 会自动解析并传递参数:

javascript

Copy

{path: '/news/detail/:id',name: 'NewsDetail',component: NewsDetail
}

在 NewsDetail 组件中,可以通过 this.$route.params.id 获取当前新闻的 ID,从而加载相应的数据。

4. 组件懒加载

为了提升应用的性能,尤其是在大型应用中,使用组件懒加载是一个不错的选择。通过 import() 函数,可以实现路由的按需加载:

javascript

Copy

const NewsDetail = () => import('./components/NewsDetail.vue');const routes = [{path: '/news/detail/:id',name: 'NewsDetail',component: NewsDetail}
];

这种方式不仅可以减少初始加载时间,还能提升用户体验。

5. 设计良好的用户体验

在嵌套导航中,良好的用户体验至关重要。可以考虑以下几点:

  • 面包屑导航:帮助用户了解当前页面的位置,并方便地返回上级页面。
  • 加载指示器:在数据加载时提供视觉反馈,提升用户的等待体验。
  • 错误处理:处理路由错误时,提供友好的错误页面,避免用户感到困惑。

6. 维护良好的代码结构

在大型项目中,代码的结构和组织显得尤为重要。建议将路由配置、组件和视图分开管理,保持代码的清晰和可维护性。例如,可以在 router 目录中集中管理所有路由配置,在 views 目录中集中管理所有视图组件。

总结

在 Vue3 中,嵌套导航和相对路径的管理虽然可能会带来一些挑战,但通过合理的设计和最佳实践,可以有效地解决这些问题。无论是使用命名路由、动态路由匹配,还是组件懒加载,都是提升开发效率和用户体验的有效手段。

希望通过本篇文章的深入探讨,能够帮助开发者在实际项目中更好地应用 Vue3 的嵌套导航特性,构建出更高效、用户友好的应用。随着前端技术的不断发展,掌握这些技巧将为你的开发之路铺平道路。


 

深入理解 Vue3 的嵌套导航与状态管理

在构建复杂的 Vue3 应用时,除了嵌套导航和路由管理,状态管理同样是一个不可忽视的方面。Vuex 是 Vue.js 官方的状态管理库,能够帮助我们在多个组件间共享状态。结合 Vue Router 使用时,可以使得应用的结构更加清晰和高效。

1. Vuex 与嵌套导航的结合

在处理嵌套导航时,可能需要在不同的页面之间共享数据。例如,在新闻列表页面和新闻详情页面之间,用户可能需要看到相同的新闻数据。通过 Vuex,我们可以将这些数据存储在全局状态中,方便各个组件访问。

Vuex Store 示例

javascript

Copy

import Vue from 'vue';
import Vuex from 'vuex';Vue.use(Vuex);export default new Vuex.Store({state: {newsList: [],currentNews: null},mutations: {setNewsList(state, news) {state.newsList = news;},setCurrentNews(state, news) {state.currentNews = news;}},actions: {fetchNews({ commit }) {// 假设有一个 API 获取新闻数据fetch('/api/news').then(response => response.json()).then(data => {commit('setNewsList', data);});},fetchNewsDetail({ commit }, id) {fetch(`/api/news/${id}`).then(response => response.json()).then(data => {commit('setCurrentNews', data);});}}
});

在这个例子中,我们定义了一个 Vuex store,包含新闻列表和当前新闻的状态,以及相应的 mutations 和 actions。

2. 在组件中使用 Vuex

在新闻列表组件中,我们可以通过 Vuex 获取新闻数据:

javascript

Copy

<template><div><h1>新闻列表</h1><ul><li v-for="news in newsList" :key="news.id"><router-link :to="{ name: 'NewsDetail', params: { id: news.id } }">{{ news.title }}</router-link></li></ul></div>
</template><script>
import { mapState } from 'vuex';export default {computed: {...mapState(['newsList'])},created() {this.$store.dispatch('fetchNews');}
};
</script>

在新闻详情组件中,我们可以根据路由参数获取当前新闻的数据:

javascript

Copy

<template><div><h1>{{ currentNews.title }}</h1><p>{{ currentNews.content }}</p></div>
</template><script>
import { mapState } from 'vuex';export default {computed: {...mapState(['currentNews'])},created() {const newsId = this.$route.params.id;this.$store.dispatch('fetchNewsDetail', newsId);}
};
</script>

3. 处理异步数据与加载状态

在处理数据时,尤其是从 API 获取数据时,可能会遇到加载状态和错误处理的问题。可以在 Vuex 中添加状态管理,以便在组件中进行相应的处理。

Vuex Store 示例(添加加载状态)

javascript

Copy

export default new Vuex.Store({state: {newsList: [],currentNews: null,isLoading: false,error: null},mutations: {setLoading(state, isLoading) {state.isLoading = isLoading;},setError(state, error) {state.error = error;}},actions: {async fetchNews({ commit }) {commit('setLoading', true);try {const response = await fetch('/api/news');const data = await response.json();commit('setNewsList', data);} catch (error) {commit('setError', error.message);} finally {commit('setLoading', false);}}}
});

在组件中,我们可以根据 isLoading 和 error 状态来显示相应的加载指示器或错误信息:

javascript

Copy

<template><div><h1>新闻列表</h1><div v-if="isLoading">加载中...</div><div v-if="error">错误: {{ error }}</div><ul><li v-for="news in newsList" :key="news.id"><router-link :to="{ name: 'NewsDetail', params: { id: news.id } }">{{ news.title }}</router-link></li></ul></div>
</template><script>
import { mapState } from 'vuex';export default {computed: {...mapState(['newsList', 'isLoading', 'error'])},created() {this.$store.dispatch('fetchNews');}
};
</script>

结论

通过结合 Vue Router 和 Vuex,我们可以构建出更加高效和灵活的 Vue3 应用。嵌套导航和状态管理的合理使用,不仅提升了应用的性能和用户体验,也使得代码的可维护性大大增强。在实际开发中,掌握这些技巧将帮助你更好地应对复杂的应用需求,提升开发效率。希望这篇文章能够为你的 Vue3 学习之旅提供帮助和启发。

 

进阶:优化 Vue3 应用的性能

在构建复杂的 Vue3 应用时,性能优化是一个不可忽视的方面。随着应用规模的扩大,用户的体验可能会受到影响。因此,了解并应用一些性能优化的策略是非常重要的。以下是一些有效的优化方法:

1. 组件懒加载

如前所述,使用组件懒加载可以显著减少初始加载时间。结合 Vue Router 的动态导入,可以在用户访问特定路由时才加载相应的组件。

javascript

Copy

const NewsDetail = () => import('./components/NewsDetail.vue');

这种方法不仅能减少初始包的大小,还能提高应用的响应速度。

2. 使用计算属性和侦听器

在 Vue 中,计算属性是基于其依赖进行缓存的,只有在依赖发生变化时才会重新计算。这意味着,如果你有一些复杂的逻辑,可以将其放入计算属性中,从而避免不必要的重复计算。

javascript

Copy

computed: {filteredNews() {return this.newsList.filter(news => news.isVisible);}
}

同样,侦听器可以帮助你监控数据变化,并在数据变化时执行某些操作。例如,在用户输入搜索条件时,你可以使用侦听器来更新显示的新闻列表。

3. 使用虚拟滚动

当展示大量数据时,直接渲染所有数据会导致性能下降。使用虚拟滚动技术可以只渲染可见区域的组件,从而提升性能。可以借助第三方库如 vue-virtual-scroller 来实现这一功能。

html

Copy

<virtual-scroller :items="newsList"><template v-slot="{ item }"><div>{{ item.title }}</div></template>
</virtual-scroller>

4. 事件节流和防抖

在处理频繁触发的事件(如滚动、输入等)时,使用节流和防抖技术可以有效减少事件处理的次数,从而提高性能。

  • 防抖:在事件触发后,延迟执行函数,只有在特定时间内没有再次触发时才会执行。

javascript

Copy

methods: {debounce(func, delay) {let timer;return function(...args) {clearTimeout(timer);timer = setTimeout(() => func.apply(this, args), delay);};}
}

  • 节流:限制函数在一定时间内只能执行一次。

javascript

Copy

methods: {throttle(func, limit) {let lastFunc;let lastRan;return function(...args) {if (!lastRan) {func.apply(this, args);lastRan = Date.now();} else {clearTimeout(lastFunc);lastFunc = setTimeout(() => {if (Date.now() - lastRan >= limit) {func.apply(this, args);lastRan = Date.now();}}, limit - (Date.now() - lastRan));}};}
}

5. 适时使用 v-if 和 v-show

在 Vue 中,v-if 和 v-show 用于条件渲染组件。v-if 会在条件为假时完全销毁组件,而 v-show 仅仅是切换组件的显示状态。对于频繁切换的组件,使用 v-show 更加高效;而对于不常显示的组件,使用 v-if 则更节省资源。

html

Copy

<div v-if="isVisible">这个组件会被销毁</div>
<div v-show="isVisible">这个组件不会被销毁</div>

6. 使用 Web Workers

对于计算密集型的任务,可以考虑使用 Web Workers。在主线程中执行繁重的计算会导致 UI 卡顿,而 Web Workers 可以在后台线程中处理这些任务,从而保持界面的流畅性。

javascript

Copy

const worker = new Worker('path/to/worker.js');
worker.postMessage(data);
worker.onmessage = function(event) {console.log('Result from worker:', event.data);
};

结论

优化 Vue3 应用的性能是一个持续的过程。通过合理使用组件懒加载、计算属性、虚拟滚动、事件节流和防抖等技术,可以显著提升应用的响应速度和用户体验。此外,结合 Vuex 进行状态管理,可以有效地减少不必要的渲染和数据请求,进一步提高性能。

希望这篇文章为你的 Vue3 开发提供了有价值的见解和实用的建议。随着技术的不断进步,保持学习和实践的态度,将帮助你在前端开发的道路上走得更远。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/55189.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自感式压力传感器结构设计

自感式压力传感器的结构如图2-35 和图 2-36所示&#xff0c;分为变隙式、变面积式和螺管式三种&#xff0c;每种均由线网、铁心和衔铁三部分组成。 图2-35 自感式压力传感器的结构 1-线圈 2-铁心 3-衔铁 图2-36 螺管式 1-线图 2-铁心 3一衔铁 自感式压力传感器按磁路变化可…

QT的核心机制 对话框资源

案例 1、键盘按下w&#xff0c;s&#xff0c;a&#xff0c;d键分别为标签向上&#xff0c;下&#xff0c;左&#xff0c;右移动 鼠标按下获取本地坐标&#xff0c;全局坐标 鼠标双击获取本地坐标&#xff0c;全局坐标 鼠标移动获取本地坐标&#xff0c;全局坐标 让鼠标跟踪…

Midjourney零基础学习

Midjourney学习笔记TOP04 Midjourney的各种参数设置 Midjourney的用户操作界面没有醒目的工具栏、属性栏&#xff0c;所有的操作都是通过调用各种指令和参数进行的。 【MJ Version】 Midjourney在2023年3月份就已经更新到了V5版本&#xff0c;V5版本除了画质有所提升外&#…

interwirelessac9560感叹号,电脑无法连接wifi,无法搜索到wifi

interwirelessac9560感叹号 电脑无法连接wifi&#xff0c;无法搜索到wifi 原因 这可能是wifl模块出现了问题。 解决方案 1、winx 打开&#xff0c;选择【设备管理器】 2、选择网络适配器 右键打开wireless-AC&#xff0c;选择【卸载设备】。 3、关机2分钟后&#xff0c…

SpringBoot智慧外贸平台

专业团队&#xff0c;咨询就送开题报告&#xff0c;欢迎大家私信留言&#xff0c;联系方式在文章底部 摘 要 网络的广泛应用给生活带来了十分的便利。所以把智慧外贸管理与现在网络相结合&#xff0c;利用java技术建设智慧外贸平台&#xff0c;实现智慧外贸的信息化。则对于进…

数据结构-5.9.树的存储结构

一.树的逻辑结构&#xff1a; 二.双亲表示法(顺序存储)&#xff1a; 1.树中除了根结点外每一颗树中的任意一个结点都只有一个父结点(双亲结点)&#xff1b; 2.结点包括结点数据和指针&#xff1b; 3.上述图片中右边的顺序存储解析&#xff1a;比如A结点左边的0&#xff0c;就…

ASML业绩暴雷,股价一度跌超16%

KlipC报道&#xff1a;当地时间10月15日&#xff0c;阿斯麦&#xff08;ASML&#xff09;原定于周三公布的三季度业绩报告由于技术原因被短暂地提前公布&#xff0c;业绩报告显示&#xff0c;阿斯麦第三季度总净销售额75亿欧元&#xff0c;毛利率50.8%&#xff0c;净利润21亿欧…

社招高频面试题

1.单例模式 面试突击50&#xff1a;单例模式有几种写法&#xff1f; 2.Mybatis缓存机制 MyBatis的一、二级缓存查询关系 一级缓存是SqlSession级别&#xff0c;不能跨SqlSession共享&#xff0c;默认开启。 二级缓存是基于mapper namespace级别的&#xff0c;可以跨SqlSessi…

Scala入门基础(10)高级函数

一.什么是高阶函数 二.map函数 三.foreach函数 四.filter函数 五.flatten函数 正文&#xff1a; 一.什么是高阶函数 高阶函数&#xff1a;是一个特殊的函数&#xff0c;特殊之处在于&#xff1a;它指使用其他函数作为参数或返回值 &#xff08;演示&#xff09; 二.map函…

SpringSecurity(一)——认证实现

一、初步理解 SpringSecurity的原理其实就是一个过滤器链&#xff0c;内部包含了提供各种功能的过滤器。 当前系统中SpringSecurity过滤器链中有哪些过滤器及它们的顺序。 核心过滤器&#xff1a; &#xff08;认证&#xff09;UsernamePasswordAuthenticationFilter:负责处理…

python yolov8半自动标注

首先标注一部分图片&#xff0c;进行训练&#xff0c;生成模型&#xff0c;标注文件为xml方便后面统一做处理。 1、标注数据&#xff08;文件为xml, 转为txt用于训练&#xff0c;保留xml标签文件&#xff09; 2、模型训练&#xff08;训练配置、训练代码、&#xff09; 3、使用…

极狐GitLab 发布安全补丁版本 17.4.1、17.3.4、17.2.8

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…

[已解决]DockerTarBuilder永久解决镜像docker拉取异常问题

前阵子发现阿里云的docker加速镜像失效了&#xff08;甚至连nginx都拉取不了&#xff09;&#xff0c;重新换了并且加多了网络上比较常用的dokcer加速源&#xff0c;可以解决一部分问题&#xff0c;但仍然有一些镜像的某个版本或一些比较冷的镜像就是拉取不了&#xff0c;原因未…

『网络游戏』数据库表格转储【25】

避免勿删数据库表格&#xff0c;可以将表格存储 放到桌面即可 现在将表格删除后点击 浏览桌面表格保存即可 修改客户端脚本&#xff1a;NetSvc.cs 目的是在数据库更新异常时弹出提示以便修改 本章结束

进程间通信、无名管道、有名管道

一、进程 1.1 进程间通信的概念 线程通信通过全局变量即可。 进程间通信是相互独立的&#xff0c;但是所有进程都共用一份内核空间&#xff0c;所以进程和进程之间的通信可以通过内核去进行。 1.2 进程间通信方式 共7种: 传统的进程间通信方式&#xff1a; 无名管道有名管道…

VSCode 查看 Git 的历史记录的三种技巧

前言 在我们日常开发工作过程中&#xff0c;可能经常会看到一些离谱的历史代码&#xff0c;或者当项目发生线上事故时&#xff0c;如何快速定位是谁提交的代码导致的&#xff1f; 作为前端开发者&#xff0c;VSCode 是目前最为流行的代码编辑工具&#xff0c;也是日常最常打开…

OPC UA与PostgreSQL如何实现无缝连接?

随着工业4.0的推进&#xff0c;数据交换和集成在智能制造中扮演着越来越重要的角色。OPC UA能够实现设备与设备、设备与系统之间的高效数据交换。而PostgreSQL则是一种强大的开源关系型数据库管理系统&#xff0c;广泛应用于数据存储和管理。如何将OPC UA与PostgreSQL结合起来&…

python pip安装requirements.txt依赖与国内镜像

python pip安装requirements.txt依赖与国内镜像 如果网络通畅&#xff0c;直接pip安装依赖&#xff1a; pip install -r requirements.txt 如果需要国内的镜像&#xff0c;可以考虑使用阿里的&#xff0c;在后面加上&#xff1a; -i http://mirrors.aliyun.com/pypi/simple --…

基于System.js的微前端实现(插件化)

目录​​​​​​​ 写在前面 一、微前端相关知识 &#xff08;一&#xff09;概念 &#xff08;二&#xff09; 优势 &#xff08;三&#xff09; 缺点 &#xff08;四&#xff09;应用场景 &#xff08;五&#xff09;现有框架 1. qiankun 2. single-spa 3. SystemJ…

GO之流程控制

一、流程控制简述 一&#xff09;流程控制的作用 流程控制语句是用来控制程序中语句执行顺序的语句&#xff0c;可以把语句组合成能完成一定功能的小逻辑块 二&#xff09;流程控制的分类 控制语句分为三类&#xff1a;顺序、选择和循环 顺序结构&#xff1a;依次执行&#xf…