在2015年,Pinterest决定转向React。但是对于一个有数百万活跃用户的站点来说,谈何容易。Pinterest转向React的故事本质上是Pinterest转向通用JavaScript的故事。
Pinterest的软件工程师Imad Elyafi写道,决定转向React的部分原因是React是“黄金标准”,有着“庞大的开发者社区”以及它“能极大地提升工程效率和质量”。React通常用在通用JavaScript场景下,在此服务器和浏览器使用同一类模板。
Pinterest的服务器端引擎是Django,它使用Jinja模板引擎。然而,Pinterest的客户端的JavaScript使用Nunjucks,它的灵感来源于Jinja,也与之相似。这导致了代码的重复,一份Python版和一份JavaScript版。但是他们无法抛弃一切而转向React,Pinterest的软件工程师Jessica Chan说道。
我们需要一个方案,能让我们在不打断产品组工作和影响用户体验的情况下,迭代地转换数以百计的Pinterest构件。第一步就是要将客户端和服务器端统一到单一的模板渲染引擎,然后再将引擎替换掉。如果服务器能解释JavaScript,使用Nunjucks渲染模板以及共享客户端代码,我们就能进行迭代迁移到React。
在触及React之前,该团队重新设计了服务器渲染引擎的架构以使用现成的Nunjucks模板。Jessica Chan说,他们没有在Django的内部渲染Jinja模板,而是创建了一个进程使用Node来渲染模板。“最终,我们在Nginx代理层后使用常驻的Node进程,将接口架构设计为每一个网络请求都是无状态的渲染过程。我们因此能将请求分发到这些进程组,并在需要的时候扩展进程数。”
一旦该系统上线,他们就能慢慢转向基于React的组件渲染模式。Elyafi说只要可能他们都扩展Nunjucks模板语言来渲染React。
{% if in_react %}
{{ component('MyReactComponent', {pinId: '123'}) }}
{% else %}
{{ module('MyDenzelComponent', pinId='123') }}
{% endif %}
component关键字告诉模板引擎应该使用基于React的组件,而不是基于Nunjucks的。Pinterest转向React的努力还在继续。
原文来自:InfoQ
声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com
Nano Banana(gemini-2.5-flash-image 和 gemini-3-pro-image-preview图像模型)是图像生成与编辑的最佳选择,可集成 Nano Banana API,实现高速预览。
支持通过自然语言文本智能生成高质量短视频。用户只需输入一段描述性文字,即可自动合成画面连贯、风格鲜明、配乐匹配的定制化视频内容。适用于短视频创作、广告预演、社交内容生成、游戏素材制作等场景,为开发者与创作者提供高效、灵活、富有想象力的视频生产新范式。
先进的图像理解和分析能力,它能够快速准确地解析和理解图像内容。无论是自然风景、城市建筑还是复杂的场景与活动,都能提供详细的描述和深入的分析。
根据文本提示(prompt)和图片公网访问链接,编辑原图按照特定风格、场景和氛围感的输出新的图像。广泛应用于电商营销、广告设计、创意灵感等领域,为用户带来高效且个性化的AI图像创作体验。
根据文本提示(prompt),生成生成具有特定风格、场景和氛围感的图像。广泛应用于电商营销、广告设计、创意灵感等领域,为用户带来高效且个性化的AI图像创作体验。