什么是Next.js
Next.js 是一个 React框架,它为您提供了创建 Web 应用程序的构建块。
我们所说的框架是指 Next.js 处理 React 所需的工具和配置,并为您的应用程序提供额外的结构、功能和优化
优点:
- 首屏加载速度快
NextJS 的产物类似MPA(多页面应用),在请求页面时会对当前页面的资源进行按需加载,而不是去加载整个应用, 相对于 SPA 而言,可以实现更为极致的用户体验。 - SEO优化好
SSR \ SSG \ ISR 支持页面内容预加载,提升了搜索引擎的友好性。 - 内置特性易用且极致
NextJS 内置getStaticProps、getServerSideProps、next/image、next/link、next/script等特性,充分利用该框架的这些特性,为用户提供更高层次的体验。
什么是Federation-module
多个独立的构建可以组成一个应用程序,这些独立的构建之间不应该存在依赖关系,因此可以单独开发和部署它们。
这通常被称作微前端,但并不仅限于此。 我们区分本地模块和远程模块。本地模块即为普通模块,是当前构建的一部分。远程模块不属于当前构建,并在运行时从所谓的容器加载。
加载远程模块被认为是异步操作。当使用远程模块时,这些异步操作将被放置在远程模块和入口之间的下一个 chunk 的加载操作中。如果没有 chunk 加载操作,就不能使用远程模块。
Next.js结合 Federation-module
1 . 初始化两个项目app(作为远程),app1(作为本地)
npx create-next-app@latest
# or
yarn create next-app
2. 配置remote的webpack配置
@module-federation/nextjs-mf第三方包是为了解决webpack提供的federation-module插件会导致加载路径不对
3. 导出组件(懒得写组件,直接导出antd的)
4. 配置local的webpack(next.js资源是放在_next下面)
5.在local中使用远程组件(需要使用dynamic导入)
在local项目中没有安装antd也能通过加载reomote的使用antd组件了
在30001端口可以看到已经成功加载了3000端口的remoteEntry.js文件,也加载了chunks的buttonjs
以上代码托管地址: github.com/chenzhaozha…