• 02SingleSpa实战


    一、构建子应用
     
     
    注: #vue:挂在到父应用中的id为vue的标签中
    注:导出的三个方法是协议接入,我定好了协议,父应用会调用这些方法
    注:我们需要父应用加载子应用,将子应用打包成一个个的lib去给父应用使用
     
     
    注:配置子路由基础路径
     
    二、配置库打包
    在vue.cpnfig.js中配置
    注:umd模式会把子应用暴露出的那三个方法挂在到window对象上
     
    注:配一个开发服务devServer
     
     
    三、主应用搭建
    注:当路径切换到/vue的时候去加载vue应用
    注:将子应用挂载到id="vue"标签中
     
    注册子应用
    npm install single-spa
    注:registerApplication第一个参数,随便起,加载应用的名字
    注:第二参数是调用的加载方法,要求必须是个promise函数,结果必须返回那三个方法{ bootstrap,mount,unmount }
    注:第三个参数是什么时候激活它,可以拿到location对应, 例子中表示用户切换到/vue的路径下,我需要加载刚才定义子应用
    注:还有第三个参数,可以传自定义的属性,自定的属性会传到子应用中
    注:最后start() 开启应用
     
     
    问题一:
    这时候点击Home和About会有问题,访问不到子应用,访问的还是父应用
    因为子应用里路由配置的是/和 /about
     
    修改子路由,增加一个虚拟路径:base
     
    问题二:
    点击Avout切换不过去,它加载的还是父应用里的about,不是子应用里的about,所以我们应该限定死请求资源的路径
    我们希望跳转的时候加载的是子应用的资源,要动态设置子应用publicPath
    在子应用的main.js中
    注:window.singleSpaNavigate为true则代表父应用加载了子应用
    注:这样我们发请求的时候,这个路径就会拼在前面,就变成了一个绝对路径,请求的都是子应用的资源
     
    问题三
    我们加载文件的话,得自己加载对应的子应用标签,那我哪知道加载哪个标签呢,可能有N多个,这是singleSpa的缺陷之一,不够灵活,不能动态加载js文件
     
    问题四:
    样式不隔离  没有js沙箱的机制
     
    问题五:
    如果我们现在单独去访问子应用,我们还希望是能正常访问
    在子应用main.js中,判断如果当前不是父应用引用,则要去new vue
    这样子应用也可以单独跑了
     
    后续我会出解决隔离方案的博客,以及qiankun实战
     
     
    陌生人,愿你永不迷失自己,心中永远有梦去追逐。 ---随笔签名写于2020.1.3 00:28:00 博主VX:stf569318425
  • 相关阅读:
    基于Lucene 4.x的ikanalyzer
    scala实现HighCharts生成的SVG图像下载
    使用solrj和EasyNet.Solr进行原子更新
    Bootstrap 2.3.0自定Grid布局
    无法删除打印机Failed to remove driver ZDesigner ZT210300dpi ZPL. Failed to remove package zdesigner.inf. Driver package is in use.
    彩云披月镜,委蛇藏花芯。朝辞浮云晓,元初破日衣。
    python browser.find_element_by 方法过期browser.find_element_by_tag_name;browser.find_element_by_class_name;browser.find_element_by_id;browser.find_element_by_name;
    c++中按位取反
    typedef用法总结
    Visual C++开发工具与调试技巧整理
  • 原文地址:https://www.cnblogs.com/tengfeiS/p/15013999.html
Copyright © 2020-2023  润新知