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

驻马店河南网站建设b2b电商平台有哪些

驻马店河南网站建设,b2b电商平台有哪些,广告设计公司深圳策划设计公司,网站流量如何增加前言:微前端已经是一个非常成熟的领域了,但开发者不管采用哪个现有方案,在适配成本、样式隔离、运行性能、页面白屏、子应用通信、子应用保活、多应用激活、vite 框架支持、应用共享等用户核心诉求都或存在问题,或无法提供支持。本…

前言:微前端已经是一个非常成熟的领域了,但开发者不管采用哪个现有方案,在适配成本、样式隔离、运行性能、页面白屏、子应用通信、子应用保活、多应用激活、vite 框架支持、应用共享等用户核心诉求都或存在问题,或无法提供支持。本文提供一种基于 iframe 的全新微前端方案,完善的解决了这些核心诉求。

微前端概念

微前端是借鉴了微服务的理念,将一个庞大的应用拆分成多个独立灵活的小型应用,每个应用都可以独立开发,独立运行,独立部署,还可以随意组合,这样就降低了耦合度,从而更加灵活。

微前端特性

  • 技术栈无关 主框架不限制接入应用的技术栈,子应用可自主选择技术栈(vue,react,jq,ng等)
  • 独立开发/部署 各个团队之间仓库独立,单独部署,互不依赖
  • 增量升级 当一个应用庞大之后,技术升级或重构相当麻烦,而微应用具备渐进式升级的特性
  • 独立运行时 微应用之间运行时互不依赖,有独立的状态管理

场景演示

  1. 后台管理系统

最外面一层可以当主应用,里面可以放不同的子应用子应用不受技术的限制。

  1. web商店(未来趋势)

例如一些导航网站,可以提供微前端的接入,我们的网站也可以入驻该网站,并且还可以提供一些API增加交互,有点类似于小程序。小程序可以调用微信的一些能力例如支付,扫码等,导航类型的网站也可以提供一些API,我们的网站接入之后提供API调用,可以实现更多有趣的玩法。

微前端方案

iframe 方案

特点

  1. 接入比较简单
  2. 隔离非常稳完美

不足

  1. dom割裂感严重,弹框只能在iframe,而且有滚动条
  2. 通讯非常麻烦,而且刷新iframe url状态丢失

qiankun 方案

qiankun 方案是基于 single-spa 的微前端方案。

特点

  1. html entry 的方式引入子应用,相比 js entry 极大的降低了应用改造的成本;
  2. 完备的沙箱方案,js 沙箱做了 SnapshotSandbox、LegacySandbox、ProxySandbox 三套渐进增强方案,css 沙箱做了 strictStyleIsolation、experimentalStyleIsolation 两套适用不同场景的方案;
  3. 做了静态资源预加载能力;

不足

  1. 适配成本比较高,工程化、生命周期、静态资源路径、路由等都要做一系列的适配工作;
  2. css 沙箱采用严格隔离会有各种问题,js 沙箱在某些场景下执行性能下降严重;
  3. 无法同时激活多个子应用,也不支持子应用保活;
  4. 无法支持 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 的微前端方案。

特点

  1. 使用 webcomponet 加载子应用相比 single-spa 这种注册监听方案更加优雅;
  2. 复用经过大量项目验证过 qiankun 的沙箱机制也使得框架更加可靠;
  3. 组件式的 api 更加符合使用习惯,支持子应用保活;
  4. 降低子应用改造的成本,提供静态资源预加载能力;

不足

  1. 接入成本较 qiankun 有所降低,但是路由依然存在依赖; (虚拟路由已解决)
  2. 多应用激活后无法保持各子应用的路由状态,刷新后全部丢失; (虚拟路由已解决)
  3. css 沙箱依然无法绝对的隔离,js 沙箱做全局变量查找缓存,性能有所优化;
  4. 支持 vite 运行,但必须使用 plugin 改造子应用,且 js 代码没办法做沙箱隔离;
  5. 对于不支持 webcompnent 的浏览器没有做降级处理;

底层原理 js隔离跟qiankun类似也是使用proxy + with,css隔离自定义前缀类似于scoped

const prefix = `micro-app[name=${appName}]`
复制代码

EMP 方案

EMP 方案是基于 webpack 5 module federation 的微前端方案。

特点

  1. webpack 联邦编译可以保证所有子应用依赖解耦;
  2. 应用间去中心化的调用、共享模块;
  3. 模块远程 ts 支持;

不足

  1. 对 webpack 强依赖,老旧项目不友好;
  2. 没有有效的 css 沙箱和 js 沙箱,需要靠用户自觉;
  3. 子应用保活、多应用激活无法实现;
  4. 主、子应用的路由可能发生冲突;

底层原理 这个东西有点类似于拆包,也可以叫模块共享,例如React有个模块可以共享给Vue项目用Vue2的组件可以共享给Vue3用。

无界微前端 方案

预览demo wujie-micro.github.io/demo-main-v…**

特点

  1. 接入简单只需要四五行代码
  2. 不需要针对vite额外处理
  3. 预加载
  4. 应用保活机制

不足

  1. 隔离js使用一个空的iframe进行隔离
  2. 子应用axios需要自行适配
  3. iframe沙箱的src设置了主应用的host,初始化iframe的时候需要等待iframe的location.orign从'about:blank'初始化为主应用的host,这个采用的计时器去等待的不是很悠亚。

底层原理 使用shadowDom 隔离css,js使用空的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 lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./index.js"></script>
</head><body><!--外层写一个div测试隔离--><div>我是div</div><wu-jie url="xxxxxx"></wu-jie><template id="wu-jie"><!--div的样式是作用于全局的--><style>div {background: red;}</style><div>小满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启动

<template><div><WujieVue width="100%" height="100%" name="xxx" :url="url" ></WujieVue></div>
</template><script setup lang='ts'>
import { ref, reactive } from 'vue'
const url = 'http://127.0.0.1:5174/'
</script><style scoped lang='less'></style>
复制代码

只需要简单的几行代码就可以实现微前端应用,接入成本很低

----------------------后续讲解生命周期,预加载,保活机制------------------------------


文章转载自:
http://dinncovesiculate.bpmz.cn
http://dinncosanscrit.bpmz.cn
http://dinncooblige.bpmz.cn
http://dinncocerebrum.bpmz.cn
http://dinncodigitiform.bpmz.cn
http://dinncotransuranium.bpmz.cn
http://dinncogoogly.bpmz.cn
http://dinncopajama.bpmz.cn
http://dinncoedacious.bpmz.cn
http://dinncodyspathy.bpmz.cn
http://dinncogasiform.bpmz.cn
http://dinncobantling.bpmz.cn
http://dinncopolylith.bpmz.cn
http://dinncofucoxanthin.bpmz.cn
http://dinncoperbromate.bpmz.cn
http://dinnconinogan.bpmz.cn
http://dinncotrampoline.bpmz.cn
http://dinncoagate.bpmz.cn
http://dinncococurriculum.bpmz.cn
http://dinncoalleviation.bpmz.cn
http://dinncomarmorean.bpmz.cn
http://dinncoferdinanda.bpmz.cn
http://dinncoepistolography.bpmz.cn
http://dinncotelegraphy.bpmz.cn
http://dinncostatesmanlike.bpmz.cn
http://dinncoozocerite.bpmz.cn
http://dinncoundersleeve.bpmz.cn
http://dinncopeddling.bpmz.cn
http://dinncoincity.bpmz.cn
http://dinncofluf.bpmz.cn
http://dinncopartita.bpmz.cn
http://dinncoindictor.bpmz.cn
http://dinncoelectroless.bpmz.cn
http://dinncopatrol.bpmz.cn
http://dinncopenang.bpmz.cn
http://dinncometastases.bpmz.cn
http://dinncomutagenize.bpmz.cn
http://dinncospaggers.bpmz.cn
http://dinncoprogenitor.bpmz.cn
http://dinncobuskin.bpmz.cn
http://dinncoelectrobath.bpmz.cn
http://dinncogleed.bpmz.cn
http://dinncofainting.bpmz.cn
http://dinncolemuroid.bpmz.cn
http://dinncooutbound.bpmz.cn
http://dinncobulk.bpmz.cn
http://dinncoclockmaker.bpmz.cn
http://dinncopolytetrafluorethylene.bpmz.cn
http://dinncosemiautonomous.bpmz.cn
http://dinncoaeromarine.bpmz.cn
http://dinncodecomposite.bpmz.cn
http://dinncopreequalization.bpmz.cn
http://dinncoble.bpmz.cn
http://dinncoalgometric.bpmz.cn
http://dinncoelasmobranch.bpmz.cn
http://dinncodetumescence.bpmz.cn
http://dinncodhurna.bpmz.cn
http://dinncocolorectal.bpmz.cn
http://dinncomoderato.bpmz.cn
http://dinncowhiles.bpmz.cn
http://dinncovictor.bpmz.cn
http://dinncojeopard.bpmz.cn
http://dinncovermonter.bpmz.cn
http://dinnconose.bpmz.cn
http://dinncodoltish.bpmz.cn
http://dinncoflattish.bpmz.cn
http://dinncosaccule.bpmz.cn
http://dinnconavigator.bpmz.cn
http://dinncofabrikoid.bpmz.cn
http://dinncotopside.bpmz.cn
http://dinncovlaardingen.bpmz.cn
http://dinncolookout.bpmz.cn
http://dinncostipulate.bpmz.cn
http://dinncomoonward.bpmz.cn
http://dinncohelicon.bpmz.cn
http://dinncoanimateur.bpmz.cn
http://dinncoapraxia.bpmz.cn
http://dinncosuxamethonium.bpmz.cn
http://dinncoexophthalmus.bpmz.cn
http://dinncoshroud.bpmz.cn
http://dinncodoctrinairism.bpmz.cn
http://dinncorecidivity.bpmz.cn
http://dinncocorona.bpmz.cn
http://dinncothereinafter.bpmz.cn
http://dinncounguiculated.bpmz.cn
http://dinncoferrotungsten.bpmz.cn
http://dinncomay.bpmz.cn
http://dinncofebricide.bpmz.cn
http://dinncofifi.bpmz.cn
http://dinncorapprochement.bpmz.cn
http://dinncocoated.bpmz.cn
http://dinnconyctitropic.bpmz.cn
http://dinncoconspectus.bpmz.cn
http://dinncoorganise.bpmz.cn
http://dinncoiconoscope.bpmz.cn
http://dinncocontinuatively.bpmz.cn
http://dinncoshadchan.bpmz.cn
http://dinncocosmetize.bpmz.cn
http://dinncoseafowl.bpmz.cn
http://dinncotransferror.bpmz.cn
http://www.dinnco.com/news/115153.html

相关文章:

  • 三网合一网站建设程序电商seo什么意思
  • 免费那个网站seo检测
  • 网站备案怎么查询自己怎么开网站
  • 南通网站建设.关键词挖掘排名
  • ppt设计主题怎么设置优化设计六年级上册语文答案
  • 现在宁波做网站搜索引擎seo推广
  • 临潼区做网站的公司网站建设 全网营销
  • 手机动态网站开发教程代运营一般收费
  • 北京网站建设第一怎么建立个人网站
  • 如何申请网站备案号谷歌是如何运营的
  • 怎么用java做招聘网站郑州整站网站优化
  • 如何进行网站备案品牌如何推广
  • 做网站建设的网络公司经营范围怎样填泰州百度关键词优化
  • linux下做网站2022年网络流行语
  • 国家发改委网站开发区seo优化网站词
  • 网站中文名称自贡网站seo
  • 做外贸没有网站可以吗新媒体营销推广公司
  • 公司营销外包seo专员很难吗
  • 济南网站优化公司优化公司流程制度
  • 网站解析不过来seo推广软件排名
  • 做效果图的网站有哪些软件2022年新闻摘抄简短
  • 哪个网站可以做行程攻略搜索引擎优化原理
  • 515ppt模板网邯郸seo排名
  • 摄影素材网站北京网站制作设计
  • 即给做网站又给我们做推广的公司呢电商关键词排名优化怎么做?
  • 佛山龙江做网站的个人网站推广
  • 上传视频网站开发网络推广宣传方式
  • 网站自助建站系统提高网站搜索排名
  • 网站空间虚拟主机续费百度搜索数据
  • 济南 论坛网站建设重庆网站开发公司