<div class="ceshi">
<p>1</p><p>2</p><p>3</p>
</div>
<script>
setInterval(function(){addLine();},2000)
function addLine() {
var html=$(".ceshi p:nth-child(1)").html();
$(".ceshi p:nth-child(1)").remove()
$('.ceshi p:last-child').after("<p>"+html+"</p>");
}
</script>
用到的方法有:.
remove()删除
after()最后的位置追加
家好,我叫Echa哥。
微前端已经是一个非常成熟的领域了,但开发者不管采用哪个现有方案,在适配成本、样式隔离、运行性能、页面白屏、子应用通信、子应用保活、多应用激活、vite 框架支持、应用共享等用户核心诉求都或存在问题,或无法提供支持。本文提供一种基于 iframe 的全新的微前端方案,完善地解决了这些核心诉求。
目前较成熟的微前方案有 qiankun、micro-app、EMP 方案,下面分别分析这三个微前端方案:
qiankun 方案是基于 single-spa 的微前端方案。
特点
不足
micro-app 是基于 webcomponent + qiankun sandbox 的微前端方案。
特点
不足
EMP 方案是基于 webpack 5 module federation 的微前端方案。
特点
不足
qiankun 方案对 single-spa 微前端方案做了较大的提升同时也遗留下来了不少问题长时间没有解决;
micro-app 方案对 qiankun 方案做了较多提升但基于 qiankun 的沙箱也相应会继承其存在的问题;
EMP 方案基于 webpack 5 联邦编译则约束了其使用范围;
目前的微前端方案在用户的核心诉求上都没有很好的满足,有很大的优化提升空间。
无界微前端方案基于 webcomponent 容器 + iframe 沙箱,能够完善地解决适配成本、样式隔离、运行性能、页面白屏、子应用通信、子应用保活、多应用激活、vite 框架支持、应用共享等用户的核心诉求。
文档地址,demo 地址:https://wujie-micro.github.io/demo-main-vue/home,git 地址:https://github.com/Tencent/wujie
下面就成本、速度、隔离、功能等多个方面进行阐述。
无界微前端的成本非常低,主要体现在主应用的使用成本、子应用的适配成本两个方面。
主应用使用无界不需要学习额外的知识,无界提供基于 vue 封装的 wujie-vue 和基于 react 封装的 wujie-react,用户可以当初普通组件一样加载子应用,以 wujie-vue 举例:
<WujieVue
width="100%"
height="100%"
name="xxx"
url="xxx"
:sync="true"
:fiber="true"
:degrade="false"
:fetch="fetch"
:props="props"
:plugins="plugins"
:beforeLoad="beforeLoad"
:beforeMount="beforeMount"
:afterMount="afterMount"
:beforeUnmount="beforeUnmount"
:afterUnmount="afterUnmount"
></WujieVue>
子应用加载和普通 vue 组件加载并无二致,所有配置都收敛到组件的属性上。
子应用首先需要做支持跨域请求改造,这个是所有微前端框架运行的前提,除此之外子应用可以不做任何改造就可以在无界框架中运行,不过此时运行的方式是重建模式。
子应用在无界中会根据是否保活、是否做了生命周期适配进入不同的运行模式:
其中保活模式、单例模式、重建模式适用于不同的业务场景,就算复杂点的单例模式用户也只是需要做一点简单的生命周期改造工作,可以说子应用适配成本极低。
无界微前端非常快,主要体现在首屏打开快、运行速度快两个方面。
目前大部分微前端只能做到静态资源预加载,但是就算子应用所有资源都预加载完毕,等到子应用打开时页面仍然有不短的白屏时间,这部分白屏时间主要是子应用 js 的解析和执行。
无界微前端不仅能够做到静态资源的预加载,还可以做到子应用的预执行。
预执行会阻塞主应用的执行线程,所以无界提供 fiber 执行模式,采取类似 react fiber 的方式间断执行 js,每个 js 文件的执行都包裹在 requestidlecallback 中,每执行一个 js 可以返回响应外部的输入,但是这个颗粒度是 js 文件,如果子应用单个 js 文件过大,可以通过拆包的方式降低体积达到 fiber 执行模式效益最大化。
子应用的 js 在 iframe 内运行,由于 iframe 是一个天然的 js 运行沙箱,所以无需采用 with (fakewindow) 这种方式来指定子应用的执行上下文,从而避免由于采用 with 语句执行子应用代码而导致的性能下降,整体的运行性能和原生性能差别不大。
无界微前端实现了 css 沙箱和 js 沙箱的原生隔离,子应用不用担心污染问题。
无界将子应用的 dom 放置在 webcomponent + shadowdom 的容器中,除了可继承的 css 属性外实现了应用之间 css 的原生隔离。
无界将子应用的 js 放置在 iframe(js-iframe)中运行,实现了应用之间 window、document、location、history 的完全解耦和隔离。
无界在底层采用 proxy + Object.defineproperty 的方式将 js-iframe 中对 dom 操作劫持代理到 webcomponent shadowRoot 容器中,开发者无感知也无需关心。
无界微前端的功能非常强大,支持子应用保活、子应用内嵌、多应用激活、去中心化通信、生命周期、插件系统、vite 框架支持、兼容 IE9、应用共享。
当子应用设置为保活模式,切换子应用后仍然可以保持子应用的状态和路由不会丢失。
无界支持子应用多层嵌套,嵌套的应用和正常应用一致,支持预加载、保活、同步、通信等能力,需要注意的是内嵌的子应用 name 也需要保持唯一性,否则将复用之前渲染出来的应用
无界支持一个页面同时激活多个子应用并且保持这些子应用路由同步的能力。
无界提供多种通信方式:window.parent 直接通信、props 数据注入、去中心化 EventBus 通信机制:
无界提供完善的生命周期钩子供主应用调用:
无界提供强大的插件系统,方便用户在运行时去修改子应用代码从而避免将适配代码硬编码到仓库中。
无界插件主要能力如下:
无界子应用运行在 iframe 中原生支持 esm 的脚本,而且不用担心子应用运行的上下文问题,因为子应用读取的就是 iframe 的 window 上下文,所以无界微前端原生支持 vite 框架。
由于无界采用了 webcomponent + shadowdom + proxy 的方案,在某些低版本浏览器上无法运行时,无界微前端会自动降级。
降级方案采用:
自动降级后无界依然可以保证子应用的 css 和 js 原生隔离,但是由于 dom-iframe 的限制,弹窗将只能在子应用内部打开
一个微前端系统可能同时运行多个子应用,不同子应用之间可能存在相同的包依赖,那么这个依赖就会在不同子应用中重复打包、重复执行造成性能和内存的浪费。
无界提供一种工程上的策略结合无界的插件能力,可以有效的解决这个问题(其他微前端框架也可以做到),这里以一个场景举例:主应用使用到了 ant-design-vue,子应用 A 也使用到了相同版本的 ant-design-vue。
主应用:
1、修改主应用的 index.js,将共享包挂载到主应用的 window 对象上
// index.js
import Antdv from "ant-design-vue";
// 将需要共享的包挂载到主应用全局
window.Antdv=Antdv;
2、加载子应用时注入插件,将主应用的 Antdv 赋值到子应用的 window 对象上
<WujieVue name="A" url="xxxxx" :plugins="[{ jsBeforeLoaders: [{ content: 'window.Antdv=window.parent.Antdv' }] }]">
</WujieVue>
子应用: webpack 设置 externals
module.exports={
externals: {
"ant-design-vue": {
root: "Antdv",
commonjs: "Antdv",
commonjs2: "Antdv",
amd: "Antdv",
},
},
};
如果子应用需要单独运行可以参考文档
无界微前端采用 webcomponent + iframe 的来加载子应用,具有成本低、速度快、原生隔离、功能强大等一系列优点,在满足用户核心诉求的同时让使用微前端的体验就像使用普通组件一样简单,极大的降低了使用门槛。
无界已经开源 ,欢迎 star ??????:https://github.com/Tencent/wujie
次的ae 2020 mac版带来了更多新功能和改进,比如快速创建和编辑形状、Cinema 4D Lite R21、预览和播放性能改进、EXR工作流程增强、图形和文字增强、表情改善、内容感知填充以改进视频等,after effects 2020中文版的功能更加全面,用户体验更佳。
Adobe After Effects 2020 for mac官方介绍
Adobe After Effects简称“AE”是Adobe公司推出的一款图形视频处理软件,适用于从事设计和视频特技的机构,包括电视台、动画制作公司、个人后期制作工作室以及多媒体工作室。属于层类型后期软件。
Adobe After Effects软件可以帮助您高效且精确地创建无数种引人注目的动态图形和震撼人心的视觉效果。利用与其他Adobe软件无与伦比的紧密集成和高度灵活的2D和3D合成,以及数百种预设的效果和动画,为您的电影、视频、DVD和Macromedia Flash作品增添令人耳目一新的效果。
https://mac.orsoon.com/Mac/174607.html
after effects 2020 mac版全新功能
预览和播放性能改进
此版本的After Effects提供了线程改进,可提供更快,更清晰的预览播放。您还可以利用新的GPU加速显示系统核心来获得设计的准确视图,而又不会破坏您的创意流程。GPU渲染增强了预览回放性能,并为您提供了清晰,详细的项目实时预览。
增强的EXR工作流程
现在,您可以将分层的EXR文件作为合成文件导入,以加快合成过程。它使您能够将多个效果应用于合成图层,而无需先执行复杂的设置过程。您可以单独处理每个图层并应用效果,以使渲染在其环境中看起来更自然。改进的性能使处理大型文件的响应速度更快。
- 将时间码值从合成写入标头信息
- 现在,它包括Cryptomatte。
- 直接将alpha写入EXR文件。
更快的形状
此版本的After Effects在处理形状以加快创意迭代时提供了改进的响应能力。通过改进对分组控件的访问,可以更轻松地导航和管理大量形状。
- 包含形状图层的项目总体上提高了性能。
- 现在,您可以右键单击以对形状图层进行分组或取消分组。在“ 时间轴”面板中选择多个形状,右键单击并选择分组/取消分组形状。另一个选项是在预览窗口中选择多个形状,单击鼠标右键,然后从“ 蒙版和形状”路径中使用“分组/取消分组”。
图形和文字增强
此版本的After Effects具有多个图形和文本增强功能。
下拉菜单控制效果
作为After Effects迁移创建者,请使用新的“ 下拉菜单控件” 效果将项目中图层的属性连接到下拉菜单。在早期版本中,After Effects使您可以将图层的属性连接到滑块和复选框,以在项目中驱动动画。Mogrt创建者还共享滑块和复选框作为可编辑控件,以更改Premiere Pro中Mogrt的属性。
但是,对于更复杂和冗长的动画,滑块和复选框可能并不总是很直观。例如,您必须将一周的7天连接到不同的颜色。您可以使用日期列表创建一个下拉菜单,并使用颜色列表创建另一个菜单,以便在编辑时更容易选择。您还可以在表达式,运动图形模板和“主属性”中引用下拉菜单。通过此菜单,可以轻松一次调整多个设置,并设计模板,这对于Premiere Pro中的编辑人员而言更加容易。
https://mac.orsoon.com/Mac/174607.html
使用表达式编辑文本属性
现在,您可以使用表达式对项目中的文本属性进行全局更改。当您处理任何文本表达式和文本时,新表达式可以控制文本样式和文本本身。例如,您的项目具有主标题和结尾标题,并且您希望始终使用统一的文本样式。为此,使用表达式将标题链接在一起,并立即更新其样式。单个文本层的参考属性,可轻松在整个合成中应用更改。这使您可以在After Effects和Mogrts中的多个文本层之间保持字体,大小和样式同步。
替代文字矩形
- 如果在文本“ 编辑属性”对话框中为文本控件启用了“ 备用文本框”后,创建了After Effects Mogrt ,请使用指定的备用层为该文本层确定文本rect。
- 在Premiere Pro中,将此替代文本矩形用于该文本层,红色悬停矩形是替代文本的大小或位置。在红色悬停矩形内单击,将激活该aeText上的文本编辑。
- 后备文本框信息存储在After Effects Mogrt中,并序列化到After Effects项目。
- 当After Effects计算要在Premiere Pro程序监视器中编辑的文本矩形时,如果已设置,它将使用备用图层。
表情改善
此版本的After Effects提供了以下表达改进:
表达式编辑器的改进
- 现在,您可以使用新的滚动功能来防止在通过键入返回字符调整框大小时滚动调整不正确。
- 如果变量以数字开头,则防止数字在自动完成列表中匹配。更智能的自动完成功能可避免覆盖右方括号和引号。
- 现在,您可以缩放Hi-DPI显示的字体大小。
- 图形编辑器现在为所有打开的图形编辑器提交首选项更改。
- 如果启用语法突出显示,则UI中的折叠图标按钮现在将使用默认和背景色,或行号颜色和背景色。
表达表现的改善
- After Effects现在尝试检测在整个合成过程中不会改变的表达式,并且仅计算一次该表达式。加载您喜欢的表达式填充的伴奏并体验改进的性能。
- 现在,使用posterizeTime(0)的任何表达式对于整个comp仅计算一次,而不是在每个帧上计算一次。
扩展格式和更好的播放支持
新格式支持包括Canon XF-HEVC。处理10位H.265 HD / UHD和HEVC HD / UHD文件时,体验更好的播放效果。还提供了改进的ProRes解码性能。此外,还可以使用带有增量帧的MJPEG和动画编解码器文件的新本机支持访问旧版QuickTime文件。
新的Cineware渲染器和Cinema 4D Lite R21
此版本的After Effects引入了新的Cinema 4D Lite R21。下面列出的是详细信息:
- 当您安装After Effects时,After Effects安装程序会将Maxon Cinema 4D R21文件夹安装在您常用应用程序位置的磁盘上。
- 此文件夹包括Cinema 4D Lite R21。首次启动时,您需要按照屏幕上的说明创建一个Maxon用户帐户。当您通过Cineware启动时,也可能会以试用模式启动完整版的Cinema 4D。
- 需要一个帐户来启动Cinema 4D,但不需要使用Cineware或Cinema 4D 3D渲染器在After Effects中进行渲染。
内容感知填充以改进视频
借助新的性能改进并减少了内存使用,可以更快,更有效地从视频中删除不需要的对象。
其他增强
- 系统兼容性报告 - After Effects检测到并提醒您有关计算机上使用的特定硬件和较旧的硬件驱动程序的任何已知问题。如果您收到问题警报,但您认为它无效,请提交错误,以便我们直接检查兼容性问题。
- Mac上的OpenCL支持已删除。请使用金属或软件渲染。
- After Effects现在不支持光线追踪的3D渲染器。
- 预览在其中缓存了所有帧(或在启用回放之前缓存帧)的comp时,即使与UI交互,也应保持目标comp帧率。
- 从EXR文件读取时更好地遵守本机FPS
- 内容感知填充更新:
内存使用量减少了66%。
性能提高了10-25%。
修复了第一次使用Content Aware Fill时显示的警告对话框。
修复了少量透明度可能导致参考框架出现问题的问题。
- 选择标签组不会选择害羞的图层,现在也可以从“编辑”菜单中使用。
- 修复了在After Effects中报告为丢帧的非丢帧时间码EXR序列。
- 更新了“另存为以前的版本”以支持AE版本15和16。
- 形状层:Polystar不再卡在0内半径处。
- 更新了Photoshop导入库。确保您的Photoshop文件导入并正确显示在After Effects中。
- 更新到MacOS渲染以使用Metal并开始弃用OpenGL。
- 现在,在合成中拖动时,参考线和标尺会捕捉到整个像素。如果需要较小的增量,请右键单击指南以设置特定值。
- Mocha插件已更新为最新版本。
*请认真填写需求信息,我们会在24小时内与您取得联系。