Open uioz opened 3 years ago
MPA 支持是非常麻烦的一件事情, 单页面只要返回一个 index.html 即可.
index.html
对于多页面应用程序构建后的目录结构各不相同所以无法向 SPA 那样简单.
针对输出的复杂程度, 这里设计了几种不同的方式来支持 MPA 托管.
第一阶段将支持 mfe-route.json 中配置 rewrites 的形式.
mfe-route.json
rewrites
mfe-proxy-server 将会读取 rewrites 来进行处理.
mfe-proxy-server
对于所有构建目录下扩展名称是 HTML 的文件, 如果文件名称使用下划线开头:
_home.html _user.html _shop.html
则会自动生成对应的路由规则:
/home/* /user/* /shop/*
如果在两个单词间使用下划线:
_home_about.html _user_password.html
则将会以下列路由进行匹配:
/home/about/* /user/password/*
如果文件结尾使用下划线:
_home_.html _home_about_.html
则将会以下列路由进行匹配, 即精确匹配:
/home /home/about
此外如果存在 index.html 依然会按照预期的方式进行工作.
在项目打包完成后, 在项目路径下执行:
npx mfe-proxy-cli generate route
mfe-proxy-cli 将会:
mfe-proxy-cli
mfe-config.js
routePath
-f
第三阶段则允许 mfe-route.json 以 JavaScript 的形式定义在 mfe-config.js 中, mfe-config.js (所使用的 javascript 规范目前还未定义).
这样 mfe-route.js 中所定义的 domain 和 rewrites 可以直接被项目所依赖, 同样的配置不再需要被配置两次.
mfe-route.js
domain
当执行:
逻辑如下:
babel
route-path
说明
MPA 支持是非常麻烦的一件事情, 单页面只要返回一个
index.html
即可.对于多页面应用程序构建后的目录结构各不相同所以无法向 SPA 那样简单.
针对输出的复杂程度, 这里设计了几种不同的方式来支持 MPA 托管.
实现
第一阶段
第一阶段将支持
mfe-route.json
中配置rewrites
的形式.工作方式
mfe-proxy-server
将会读取rewrites
来进行处理.第二阶段
对于所有构建目录下扩展名称是 HTML 的文件, 如果文件名称使用下划线开头:
则会自动生成对应的路由规则:
如果在两个单词间使用下划线:
则将会以下列路由进行匹配:
如果文件结尾使用下划线:
则将会以下列路由进行匹配, 即精确匹配:
此外如果存在
index.html
依然会按照预期的方式进行工作.工作方式
在项目打包完成后, 在项目路径下执行:
mfe-proxy-cli
将会:mfe-config.js
文件获取routePath
及其他字段mfe-route.json
mfe-route.json
rewrites
字段-f
进行强制执行)mfe-route.json
中mfe-route.json
第三阶段
第三阶段则允许
mfe-route.json
以 JavaScript 的形式定义在mfe-config.js
中,mfe-config.js
(所使用的 javascript 规范目前还未定义).这样
mfe-route.js
中所定义的domain
和rewrites
可以直接被项目所依赖, 同样的配置不再需要被配置两次.当执行:
逻辑如下:
babel
解析mfe-config.js
查找rewrites
和domain
导出rewrites
是否存在domain
挂载到 JSON 上mfe-config.js
的route-path
路径中