Results 12 comments of 水澜

I got the same problem. * node version: 14.9.0 * no docker, just clone the project and run `npm start` I tried `npm run bundler:prod`, but the webpack callback is...

第一个问题 是个 bug,app 的 DataLoader 没有特殊处理,pages 下的组件是正常的 第二个问题是符合预期的

原因分析: RSC 应用实际构建了两份 client 端产物 * 一份原始的 CSR 产物,包含全量模块,用于依赖分析(比如每个页面依赖了哪些 css 文件),不对开发者透出 * 一份 RSC 的产物,只包含 Client Component 因此,上面例子中的 `constant.ts` 其实被两个入口依赖了,这就使得无法命中 webpack 的 Concatenation 逻辑 如果一个模块命中了 Concatenation 逻辑,它会被内联到引用方中,然后基于 minify 中 remove...

目前已知的问题是,Server 端也需要单独的 external 能力,包括: * external weex module * external 一些 Server 端特有的依赖

和 external 关联的问题还包括 https://github.com/alibaba/ice/issues/6103

解决上面两个问题,一种思路是 Server 端需要单独配置所有 external,不能和 Client 复用:(存在的问题是会 breakchagne) ```js export default defineConfig({ server: { format: 'cjs', bundle: true, // 只对 server 端生效,不包括 dataLoader externals: ['@weex-module/mtop', '@weex-module/windvane', '@weex-module/broadcast'], }, // 对 client...

按 Chrome 对的说法,Preload 适用于配置一些不容易被识别的关键资源,例如:样式中的字体文件、背景图、异步加载的脚本 https://web.dev/fetch-priority/ ![image](https://user-images.githubusercontent.com/1303018/237013195-344ca6c4-eea3-41ab-ad1c-42cfcc4a75f2.png)

> 另外 defer 是推迟, 这个语义上貌似有问题 > > like unblocking? or streaming? any words else? 这里 defer 参照的是 react-router 的配置,猜想这里的 defer 应该是跟 script 标签中的 defer 含义类似,先触发加载,但不阻塞渲染

10-25 讨论结论 ### 常规写法(动态) ```js export const dataLoaders = defineDataLoaders(() => { const res = await fetch('https://api.example.com/...'); return res.json(); }); ``` 使用数据 ```js const data = useData(); ``` ### 静态配置...

如果不考虑一个路由组件需要发多个请求的情况,我倾向于保留现有 `getData`, `getServerData`, `getStaticData` 的设计,相比👆🏻的调用方式会简单很多 针对 PHA 静态配置的场景,额外提供 `defineDataLoader` 的能力,只支持传静态配置 ```js export const dataLoader = defineDataLoaders({ prefetchType: 'mtop', api: 'mtop.xxx.xxx.xxx', v: '1.0', data: { param1: 'v1', param2: 'v2', }, extHeaders:...