前言
上周末的这篇新闻WebAssembly1.0成为W3C推荐标准,也是在浏览器中运行的第四种语言不知道你注意到了吗?今日早读文章由
夏华翻译分享,本文由刘岩推荐。正文从这开始~~
在Figma,我们最近解决了迄今为止最大的工程挑战之一:支持插件。我们的插件API使第三方开发人员可以直接在基于浏览器的设计工具中运行代码,因此团队可以使Figma适应自己的工作流程。他们可以用可访问性检查器测量对比度,用翻译应用程序转换语言,进口商可以用内容填充设计,以及其他需求。
我们必须仔细设计该插件的功能。在整个软件历史中,有很多第三方扩展对平台产生负面影响的例子。在某些情况下,他们拖慢了工具的运行速度,在其他情况下,每当平台有新版本发布时,插件就会中断。我们希望在可控范围内,用户对Figma有更好的插件体验。
此外,我们希望确保插件对用户而言是安全的,因此不能简单地使用eval(PLUGIN_CODE)——不安全的典型定义!但是,本质上运行插件可以归结为eval。
更具挑战性的是,Figma建立在一个非常规的堆栈上,有一些其他工具没有的限制。其中,设计编辑器基于WebGL和WebAssembly,部分用户界面用Typescript&React实现,可以多人同时编辑一个文件。我们依赖于浏览器技术的支持,同时也受到它们的限制。
这篇博客将引导你实现一个完美的插件解决方案。最终,我们的工作归结为一个问题:如何安全地、稳定地、高性能地运行插件?
我们考虑了很多不同路线的方法,进行了数周的讨论、原型制作和头脑风暴。这篇博客仅