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

青岛住房和城乡建设部网站建设网站建设

青岛住房和城乡建设部网站,建设网站建设,网站怎么申请,安徽电商网站建设前言#xff1a;微前端已经是一个非常成熟的领域了#xff0c;但开发者不管采用哪个现有方案#xff0c;在适配成本、样式隔离、运行性能、页面白屏、子应用通信、子应用保活、多应用激活、vite 框架支持、应用共享等用户核心诉求都或存在问题#xff0c;或无法提供支持。本… 前言微前端已经是一个非常成熟的领域了但开发者不管采用哪个现有方案在适配成本、样式隔离、运行性能、页面白屏、子应用通信、子应用保活、多应用激活、vite 框架支持、应用共享等用户核心诉求都或存在问题或无法提供支持。本文提供一种基于 iframe 的全新微前端方案完善的解决了这些核心诉求。 微前端概念 微前端是借鉴了微服务的理念将一个庞大的应用拆分成多个独立灵活的小型应用每个应用都可以独立开发独立运行独立部署还可以随意组合这样就降低了耦合度从而更加灵活。 微前端特性 技术栈无关 主框架不限制接入应用的技术栈子应用可自主选择技术栈vuereactjqng等独立开发/部署 各个团队之间仓库独立单独部署互不依赖增量升级 当一个应用庞大之后技术升级或重构相当麻烦而微应用具备渐进式升级的特性独立运行时 微应用之间运行时互不依赖有独立的状态管理 场景演示 后台管理系统 最外面一层可以当主应用里面可以放不同的子应用子应用不受技术的限制。 web商店未来趋势 例如一些导航网站,可以提供微前端的接入我们的网站也可以入驻该网站并且还可以提供一些API增加交互有点类似于小程序。小程序可以调用微信的一些能力例如支付扫码等导航类型的网站也可以提供一些API我们的网站接入之后提供API调用可以实现更多有趣的玩法。 微前端方案 iframe 方案 特点 接入比较简单隔离非常稳完美 不足 dom割裂感严重弹框只能在iframe而且有滚动条通讯非常麻烦而且刷新iframe url状态丢失 qiankun 方案 qiankun 方案是基于 single-spa 的微前端方案。 特点 html entry 的方式引入子应用相比 js entry 极大的降低了应用改造的成本完备的沙箱方案js 沙箱做了 SnapshotSandbox、LegacySandbox、ProxySandbox 三套渐进增强方案css 沙箱做了 strictStyleIsolation、experimentalStyleIsolation 两套适用不同场景的方案做了静态资源预加载能力 不足 适配成本比较高工程化、生命周期、静态资源路径、路由等都要做一系列的适配工作css 沙箱采用严格隔离会有各种问题js 沙箱在某些场景下执行性能下降严重无法同时激活多个子应用也不支持子应用保活无法支持 vite 等 esmodule 脚本运行 底层原理 js沙箱使用的是proxy进行快照然后用用 with(window){} 包裹起来 with内的window其实就是proxy.window 我们声明变量 var name 小满 实际这个变量挂到了proxy.window 并不是真正的window css沙箱原理 第一个就是shadowDom隔离 第二个类似于Vue的scoped [data-qiankun-426732] micro-app 方案 micro-app 是基于 webcomponent qiankun sandbox 的微前端方案。 特点 使用 webcomponet 加载子应用相比 single-spa 这种注册监听方案更加优雅复用经过大量项目验证过 qiankun 的沙箱机制也使得框架更加可靠组件式的 api 更加符合使用习惯支持子应用保活降低子应用改造的成本提供静态资源预加载能力 不足 接入成本较 qiankun 有所降低但是路由依然存在依赖 虚拟路由已解决多应用激活后无法保持各子应用的路由状态刷新后全部丢失 虚拟路由已解决css 沙箱依然无法绝对的隔离js 沙箱做全局变量查找缓存性能有所优化支持 vite 运行但必须使用 plugin 改造子应用且 js 代码没办法做沙箱隔离对于不支持 webcompnent 的浏览器没有做降级处理 底层原理 js隔离跟qiankun类似也是使用proxy withcss隔离自定义前缀类似于scoped const prefix micro-app[name${appName}] 复制代码 EMP 方案 EMP 方案是基于 webpack 5 module federation 的微前端方案。 特点 webpack 联邦编译可以保证所有子应用依赖解耦应用间去中心化的调用、共享模块模块远程 ts 支持 不足 对 webpack 强依赖老旧项目不友好没有有效的 css 沙箱和 js 沙箱需要靠用户自觉子应用保活、多应用激活无法实现主、子应用的路由可能发生冲突 底层原理 这个东西有点类似于拆包也可以叫模块共享例如React有个模块可以共享给Vue项目用Vue2的组件可以共享给Vue3用。 无界微前端 方案 预览demo wujie-micro.github.io/demo-main-v…** 特点 接入简单只需要四五行代码不需要针对vite额外处理预加载应用保活机制 不足 隔离js使用一个空的iframe进行隔离子应用axios需要自行适配iframe沙箱的src设置了主应用的host初始化iframe的时候需要等待iframe的location.orign从about:blank初始化为主应用的host这个采用的计时器去等待的不是很悠亚。 底层原理 使用shadowDom 隔离cssjs使用空的iframe隔离通讯使用的是proxy 部分原文juejin.cn/post/712564… 前置知识了解webComponents 演示webComponents的 传参 样式隔离 以及写法 window.onload () {class WuJie extends HTMLElement {constructor() {super()this.init()this.getAttr(url)}init() {const shadow this.attachShadow({ mode: open }) //开启影子dom 也就是样式隔离const template document.querySelector(#wu-jie) as HTMLTemplateElementconsole.log(template);shadow.appendChild(template.content.cloneNode(true))}getAttr (str:string) {console.log(获取参数,this.getAttribute(str));}//生命周期自动触发有东西插入connectedCallback () {console.log(类似于vue 的mounted);}//生命周期卸载disconnectedCallback () {console.log(类似于vue 的destory);}//跟watch类似attributeChangedCallback (name:any, oldVal:any, newVal:any) {console.log(跟vue 的watch 类似 有属性发生变化自动触发);}}window.customElements.define(wu-jie, WuJie) }复制代码 !DOCTYPE html html langenheadmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/titlescript src./index.js/script /headbody!--外层写一个div测试隔离--div我是div/divwu-jie urlxxxxxx/wu-jietemplate idwu-jie!--div的样式是作用于全局的--stylediv {background: red;}/stylediv小满zs测试样式隔离/div/template /body/html 复制代码 可以完美隔离css样式 前置知识2 monorepo架构 我们采用的是微前端一个主应用和多个子应用我们肯定不会一个一个去install安装依赖太傻了我们采用monorepo 架构 一次install 即可安装完成。 第一步需要安装pnpm pnpm内置了对单个代码仓库包含多个软件包的支持是monorepo架构模式的不二速选 npm i pnpm -g 复制代码 最外层建一个main充当主应用然后新建一个web文件夹里面放两个子应用分别是vue和react 配置monorepo 在根目录新建一个 pnpm-workspace.yaml 配置依赖项 packages:# all packages in direct subdirs of packages/- main# all packages in subdirs of components/- web/** 复制代码 配置完成后install一次就行 他会把所有的公共依赖项抽到外层而里层的依赖项都是一些最核心的 无界入门 我们使用Vue3来充当主应用 首先需要安装依赖 vue2 npm i wujie-vue2 -Svue3 npm i wujie-vue3 -Sreact npm i wujie-react -S 复制代码 主应用的main.ts import { createApp } from vue import App from ./App.vue import Wujie from wujie-vue3 createApp(App).use(Wujie).mount(#app)复制代码 主应用hellowWord url填写子应用的url 子应用通过npm run dev启动 templatedivWujieVue width100% height100% namexxx :urlurl /WujieVue/div /templatescript setup langts import { ref, reactive } from vue const url http://127.0.0.1:5174/ /scriptstyle scoped langless/style 复制代码 只需要简单的几行代码就可以实现微前端应用接入成本很低 ----------------------后续讲解生命周期预加载保活机制------------------------------
http://www.hkea.cn/news/14269253/

相关文章:

  • 如何建设公司网站信息叶梓 wordpress 主题
  • 微信链接的微网站怎么做乐陵seo优化信
  • 上饶建设局网站泰来县城乡建设局网站
  • 分析网站建设网站招聘栏怎么做
  • 平台网站怎么做重庆设计集团有限公司
  • 做php门户网站那个系统好公司网站名词解释
  • 安化建设局网站网站开发角色分类
  • 聊城网站建设的地方最好用的建站系统
  • 城乡与建设部网站首页wordpress __语言
  • 怎么做网站卖产品wordpress原图对比插件
  • 网络营销网页制作源代码seo外链群发工具
  • 天助网站厦门网站建设培训班
  • 音乐网站制作教程美术馆网站的建设流程
  • 1核2g 做网站公众号助手app下载
  • 东莞外贸模板建站网站优化电话
  • 东莞网站外包建设网站自学
  • 制作网站的基本步骤株洲网
  • 公司网站建设需要什么银行 网站开发 干什么
  • 阿里巴巴的网站架构wordpress文章没办法显示略缩图
  • 网站建设的组织机构网站上投放广告
  • 三桥网站建设免费网络加速器破解版
  • 有源码做网站百度搜索引擎官网入口
  • 快速建站教程网怎么修改网站上的内容
  • 学做网站的网站网站主办者和所有者区别
  • 集思吧网站怎么做问卷指数函数和对数函数
  • 专业的手机价格网站建设网站首页如何设计
  • 公司微网站建设价格百度手机下载安装
  • 简单网站html模板下载汕头网络科技有限公司
  • 网站建设技术主管自己做网站还有出路吗
  • 怎么建设微信网站佛山h5网站公司