小红书的前端架构是建立在经典的架构模式之上的。这种架构模式通常包括渲染层和逻辑层两个主要部分。
渲染层主要负责接受渲染指令、进行视图的绘制与用户交互的响应。而逻辑层则用于与系统能力进行交互,在安全的 JS 线程内调度用户业务逻辑。这两层之间通过 js-bridge 进行消息的通讯。
小红书的小程序基础架构也是对齐业界经典架构进行建设,运行时主要分为 渲染层 - Render、逻辑层 - Service。 Service 用于与系统能力进行交互,在安全的 JS 线程内调度用户业务逻辑。 而 Render 则负责接受渲染指令、进行视图的绘制与用户交互的响应。 逻辑层与渲染层则通过 js-bridge 进行消息的通讯,容器则负责接受 api 指令进行端能力的调用。之所以需要一个独立的线程来执行 JS,其主要目的是为了限制 JS 灵活性。
为了提供一个可用的 JS 环境,小红书可能使用浏览器内核提供的 Service worker,来单独运行 service 层 JS 代码,或者使用多个 webview 实例来分别承载双端 js 的执行环境。