第 73 期 - 携程商旅在 Remix 升级中对 Vite 动态模块加载优化的实践
logoFRONTALK AI/1月5日 16:32/阅读原文

摘要

携程商旅前端团队将 Remix 框架从 1.0 升级到 2.0 时,Vite 对动态模块加载优化引发资源加载问题,如 404 错误。文章探讨了 Vite 优化 DynamicImport 机制,以及商旅团队的定制化处理。

一、引言部分

二、模块懒加载

import React, { Suspense, useState } from 'react'; 
// 出行人组件,立即加载
const Travelers = () => {
    return <div>出行人组件内容</div>;
};
// 联系人组件,使用 React.lazy 进行懒加载
const Contact = React.lazy(() => import('./Contact'));
const App = () => {
    const [showContact, setShowContact] = useState(false);
    const handleAddContactClick = () => {
        setShowContact(true);
    };
    return (
        <div>
            <h1>页面标题</h1>
            {/* 出行人组件立即展示 */}
            <Travelers />
            {/* 添加按钮 */}
            <button onClick={handleAddContactClick}>添加联系人</button>
            {/* 懒加载的联系人组件 */}
            {showContact && (
                <Suspense fallback={<div>加载中...</div>}>
                    <Contact />
                </Suspense>
            )}
        </div>
    );
};
export default App;

三、Vite 中如何处理懒加载模块

3.1 表象

3.2 机制

3.3 原理

3.3.1 扫描 / 替换模块代码 - transform

3.3.2 增加 preload 辅助语句 - resolveId/load

3.3.3 开启预加载优化 - renderChunk

3.3.4 寻找 / 加载需要预加载模块 - generateBundle

四、商旅对于 DynamicImport 的内部改造

五、结尾

 
Made by 捣鼓键盘的小麦 / © 2025 Front Talk 版权所有