首页 > 其他分享 >前端微服务架构1-搭建项目

前端微服务架构1-搭建项目

时间:2023-12-25 16:48:35浏览次数:27  
标签:__ 架构 name 前端 子项目 props app store 搭建

公司项目老旧,迭代时间过久,迭代人员水平一般的情况下还有添加新模块怎么办?

这几天尝试了一下开源的微服务架构,

目前网上有两种开源框架:

1、蚂蚁的qiankun目前15.1k

2、京东的micro-app目前4.9k点赞,

前者的点赞量在github上更高,所以我选择了前者

搭建也不是很难,主要是遇到的一些坑的解决

 

主项目的配置

1、npm i qiankun -S 

2、main.js中添加如下配置

var apps = [
    {
        name: 'cw-wfw1',    //子项目名
        entry: '//localhost:10001',   //子项目的ip和端口
        container: '#wfw1',
        activeRule: '/compliancePromotion',   //子项目的路由
        props: { 
            // routerBase: "/compliancePromotion"  //给子项目传值
        }
    },
];
registerMicroApps(apps, { //子项目的注册及其生命周期
    beforeLoad: app => {
        //app.props.menu = menu;  //也可以在这里给子项目传值,当前我把子项目动态的菜单传给了子项目
        console.log('before load app.name====>>>>>', app)
    },
    beforeMount: [
        app => {
            console.log('[LifeCycle] before mount %c%s', 'color: green;', app.name)
        }
    ],
    afterMount: [
        app => {
            console.log('[LifeCycle] after mount %c%s', 'color: green;', app.name)
        }
    ],
    afterUnmount: [
        app => {
            console.log('[LifeCycle] after unmount %c%s', 'color: green;', app.name)
        }
    ]
})
start({
    // 开启
    // prefetch: false, // 取消预加载
});

 

子项目的配置

1、在子项目main.js同级添加public-path.js

if (window.__POWERED_BY_QIANKUN__) {
  __webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__
}

2、main函数的修改:引入 import './public-path'

function render(props = {}) {   //重写render函数
  const { container, routerBase } = props
  const router = new VueRouter({
    // base: window.__POWERED_BY_QIANKUN__ ? routerBase : process.env.BASE_URL,
    mode: 'history',
    routes
  })

  instance = new Vue({
    router,
    store,
    render: (h) => h(App)
  }).$mount(container ? container.querySelector('#app') : '#app')
}

if (!window.__POWERED_BY_QIANKUN__) {    //当前可以判断是独立运行还是在qiankun环境运行
  // 这里是子应用独立运行的环境,实现子应用的登录逻辑

  // 独立运行时,也注册一个名为global的store module
  // commonStore.globalRegister(store)
  // 模拟登录后,存储用户信息到global module
  const userInfo = { name: '我是独立运行时名字叫张三' } // 假设登录后取到的用户信息
  store.commit('global/setGlobalState', { user: userInfo })

  render()
}

export async function bootstrap() {   //初始化执行,只会执行一次
  console.log('[vue] 子应用初始化')
  store.dispatch("getDataDict")
}

export async function mount(props) {   //进入子应用就会执行,参数是父应用传的值
  console.log('[vue] props from main framework', props)
  var { menu } = props;
  store.commit('setMenu', menu);  //可以把父应用传的值存入vuex
  // commonStore.globalRegister(store, props)

  render(props)
}

export async function unmount() {  //跳出子应用就会执行
  instance.$destroy()
  instance.$el.innerHTML = ''
  instance = null
}

 

标签:__,架构,name,前端,子项目,props,app,store,搭建
From: https://www.cnblogs.com/wscw/p/17926371.html

相关文章

  • 前端工程化工具
    1.名称模板框架多选项生产支持自定义模板特点Create-React-AppReact否是React官方维护VueCLIVue是是Vue官方维护脚手架模板在实际开发中,我们可以通过创建脚手架对应的模板对项目进行「定制化处理」。定制化模板可以「弥补」官方提供基础工具集不满足特定需求的场景。定制化有如下......
  • 最新搭建upload-labs和XSS漏洞测试平台
    搭建upload-labsupload-labs是一个使用PHP语言编写的、专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场,旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含不同的上传方式。GitHub仓库为c0ny1/upload-labs/,推荐使用Windows系统,因为除了Pass-19必须在Linux系统......
  • OpenCV 环境搭建
    一、在Docker中安装Pythonnotebooks并包括OpenCV1.1创建Dockerfile1FROMjupyter/base-notebook23USERroot45#更新系统6RUNapt-getupdate78#安装OpenCV相关依赖9RUNapt-getinstall-ylibsm6libxext6libxrender-dev1011#......
  • CA证书服务器搭建
    演示环境SERVER2019准备一:域服务器搭建  略。。。步骤一:添加角色和功能--添加AD证书服务--一直下一步完成安装步骤二:直接点击安装完成界面上的配置目标服务器上的ActiveDirectory证书服务即可注释:此项选择哈希算法不推荐选择SHA1、MD5存在弱算法漏洞步骤三:此时CA证书服务......
  • 架构与思维:如何应对Redis热Key?
    ★Redis系列文章Redis系列1:深刻理解高性能Redis的本质Redis系列2:数据持久化提高可用性Redis系列3:高可用之主从架构Redis系列4:高可用之Sentinel(哨兵模式)Redis系列5:深入分析Cluster集群模式追求性能极致:Redis6.0的多线程模型追求性能极致:客户端缓存带来的革命Redis系列8......
  • ChatGPT引领AI时代:程序员、项目经理、产品经理、架构师、Python量化交易师的翅膀
    ......
  • 如何搭建一个类似小红书的社区网站?
    社交电商是一种结合社交媒体和电子商务的商业模式。它利用社交媒体的社交功能和用户互动特性,将销售和购物行为融入社交平台中,提供社交化的购物体验。社交电商网站,用户可以通过社交功能和用户互动,且社交电商基本都是围绕商品来开展沟通的,比如对商品的介绍,测评,使用感受等待。场景一:......
  • 【译】自制前端玩具框架
    内容来源于“Let’slearnhowmodernJavaScriptframeworksworkbybuildingone”,我在本文中不会逐字翻译,只会将关键部分列出。React是一个很棒的框架,但本文要实现的“现代JavaScript框架”是指“后React时代的框架”——即Lit、Solid、Svelte、Vue等,并且只讨......
  • 架构基础
    特点,本质软件架构简介抽象而言,架构就是对系统中的实体以及实体之间的关系所进行的抽象描述,是对物/信息的功能与形式元素之间的对应情况所做的分配,是对元素之间的关系以及元素同周边环境之间的关系所做的定义; 软件架构的核心价值,即是控制系统的复杂性,将核心业......
  • 系统架构设计面试指南(01)-微服务和CAP
    系统设计是定义满足特定需求的系统的架构、接口和数据的过程。系统设计通过协同和高效的系统满足您的业务或组织需求。一旦业务或组织确定了其需求,就可以开始构建一个将这些需求融入物理系统设计的过程,以满足客户的需求。您设计系统的方式将取决于您是选择自定义开发、商业解决方案......