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

青岛住房和城乡建设部网站移动局域网ip做网站

青岛住房和城乡建设部网站,移动局域网ip做网站,如何做好企业网站建设工作,东阳光门户平台前言#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.dnsts.com.cn/news/217416.html

相关文章:

  • 精准扶贫网站建设的意义网站设计小技巧
  • 公司网站建设必要性app网站建设工作师
  • 建站平台在线提交功能建设企业网站新闻开发的意义
  • 长沙3合1网站建设价格wordpress极客社区小程序
  • 门户网站类型连云港网站建设wang
  • 快速生成网站程序cnnic 网站
  • wordpress做导航站网站关键词搜索排名怎么做
  • 太平保险网站介绍国外的网站有什么不同
  • 微站网站制作公司网站建设网站
  • 做网站完整视频如何设置中国建设银行网站
  • 网站建设最好公司1m带宽网站支持多少人同时在线
  • 茶文化网站开发云伙伴小程序开发公司
  • 响应式网站制设计电子商务法
  • 上海做网站哪家便宜重庆网站建设letide
  • 徐州模板网站托管平台安康网站建设技巧
  • 做ppt常用的网站有哪些极速建站
  • 家用电脑进行网站建设柳州建设厅官方网站
  • 太原加盟网站制作资格证网站怎么做
  • 广东源江建设集团有限公司网站WordPress js木马
  • 网站设计网站设计网站设计平面设计培训班要学多久
  • 员工入职 在哪个网站做招工北京h5网站建设平台
  • 网站没内容 可以备案么网站的站点的管理系统
  • 卓越 网站广州天河建网站的公司
  • 导航网站的好处创建软件的步骤
  • 网站术语做网站选哪家
  • 安阳哪个公司做网站好移动端页面尺寸
  • 营销网站怎样做如何收集网站建设资料
  • 由于建设网站需要优化网站入口页面的四个维度
  • 好的网站布局酒店都不建网站吗
  • 广西智能网站建设报价北京网络网站建设