微前端实战看这篇就够了 - Vue项目篇

wl-micro-frontends [wl-qiankun]

本项目采用 vue + qiankun 实践微前端落地。
同时qiankun是一个开放式微前端架构,支持当前三大前端框架甚至jq等其他项目无缝接入。
此项目为了尽可能的简单易上手,以及方便文章讲解,大部分逻辑都在主应用和子应用的main.js来回施展,
实际项目应用可不要如此粗暴,要有优雅的架构设计。

在线地址

项目启动

npm run cinit
npm run init
下载依赖,因为是批量下载所有应用下的依赖,推荐cinit节省下载时间

npm run serve 
运行项目,同样,批量运行所有应用会耗时较久,浏览器页面自动打开后请稍家等待,然后刷新即可

npm run build
打包项目,打包所有应用

微前端 qiankun

微前端是什么、为什么要做微前端、qiankun是什么这些笔者将不再叙述。(文末有彩蛋~)
传送门:可能是你见过最完善的微前端解决方案 & qiankun
下面直接进入实战教程。

实战教程目录详解

鉴于qiankun文档只有寥寥十几行,这里做一个尽量详细的实战示例描述:

  • 微前端主应用与子应用如何构建
  • 主应用与子应用通信(静态,无法监测到值变化)
  • 主、子,各应用间动态通信(动态,各应用间实时监听,同步数据)
  • 主应用资源下发至子应用
  • 微前端鉴权方案
    • 一:异步注册(主应用异步获取子应用注册表并将子应用对应的路由下发至子应用)
    • 二:异步路由(使用应用间通信,通知子应用路由数据,子应用在内部addRoutes异步插入路由)
  • 各应用间路由基础管理
  • 公共资源处理

微前端主应用与子应用如何构建

构建主应用

  1. 创建一个主项目工程目录
  2. npm install qiankun 下载微前端方案依赖
  3. 改造主项目:

在main.js中

    // 导入qiankun内置函数
    import {
        registerMicroApps, // 注册子应用
        runAfterFirstMounted, // 第一个子应用装载完毕
        setDefaultMountApp, // 设置默认装载子应用
        start // 启动
    } from "qiankun";
    
    let app = null;
    /**
     * 渲染函数
     * appContent 子应用html
     * loading 如果主应用设置loading效果,可不要
     */
    function render({ appContent, loading } = {}) {
        if (!app) {
            app = new Vue({
                el: "#container",
                router,
                store,
                data() {
                    return {
                        content: appContent,
                        loading
                    };
                },
                render(h) {
                    return h(App, {
                        props: {
                        content: this.content,
                        loading: this.loading
                        }
                    });
                }
            });
        } else {
            app.content = appContent;
            app.loading = loading;
        }
    }; 
    
    /**
    * 路由监听
    * @param {*} routerPrefix 前缀
    */
    function genActiveRule(routerPrefix) {
        return location => location.pathname.startsWith(routerPrefix);
    }
    
    // 调用渲染主应用
    render();
    
    // 注册子应用
    registerMicroApps(
        [
            {
                name: "vue-aaa"
                entry: "//localhost:7771",
                render,
                activeRule: genActiveRule("/aaa")
            },
            {
                name: "vue-bbb"
                entry: "//localhost:7772",
                render,
                activeRule: genActiveRule("/bbb")
            },
        ],
        {
            beforeLoad: [ 
                app => {
                    console.log("before load", app);
                }
            ], // 挂载前回调
            beforeMount: [
                app => {
                    console.log("before mount", app);
                }
            ], // 挂载后回调
            afterUnmount: [
                app => {
                    console.log("after unload", app);
                }
            ] // 卸载后回调
        }
     )
     
     // 设置默认子应用,参数与注册子应用时genActiveRule("/aaa")函数内的参数一致
    setDefaultMountApp("/aaa");
    
    // 第一个子应用加载完毕回调
    runAfterFirstMounted(()=>{});
    
    // 启动微服务
    start();

注意, 主应用的el绑定dom为#container,因此你也需要修改一下index.hrml模板中的id

在app.vue中,增加一个渲染子应用的盒子

    <template>
        <div id="root" class="main-container">
            <div class="main-container-menu">
                
            </div>
        <!-- 子应用盒子 -->
        <div id="root-view" class="app-view-box" v-html="content"></div>
    </div>
    </template>

    <script>
    export default {
        name: "root-view",
    
  • 7
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
一个前端Vue项目实战案例可以按照以下开发流程进行: 1. 项目立项:包括需求分析、技术选型和确定项目人员等。 2. 产品原型设计:设计产品原型图,并进行UI设计。 3. 项目开发:前端与后端进行开发,前端部分包括设计图和切图,后端部分包括服务端的开发。 4. 项目测试:由测试部门进行测试。 5. 项目上线:由运维和后端负责项目的上线。 开发环境方面,可以使用开发工具如VS Code,并安装Vue开发工具vetur。项目运行环境可以是Node v10,Vue脚手架可以使用vue-cli 4.5.7。代码版本工具可以使用Git/Gitee。 一个具体的前端Vue项目实战案例可以是根据《Vue项目开发实战》开发的项目Vue.js是一套构建用户界面的渐进式框架,相对于其他重量级框架,Vue采用自底向上增量开发的设计,它的核心库只关注视图层,并且非常容易学习和整合到其他库或已有项目中。 该实战案例可以包含以下内容: - 创建登录页面,使用snipaste截图软件进行页面设计。 - 安装element-ui和axios请求库,用于页面的样式和数据请求。 - 配置myaxiosapi文件接口,用于与后端进行数据交互。 - 实现常见的跨域方式,确保前端项目正常与后端进行通信。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Vue综合实战项目](https://blog.csdn.net/m0_45272038/article/details/113828939)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [vue项目开发实战](https://download.csdn.net/download/weixin_38596117/19953278)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值