cloud-web-corejs 1.0.54-dev.755 → 1.0.54-dev.756

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "cloud-web-corejs",
3
3
  "private": false,
4
- "version": "1.0.54-dev.755",
4
+ "version": "1.0.54-dev.756",
5
5
  "scripts": {
6
6
  "dev": "vue-cli-service serve",
7
7
  "lint": "eslint --ext .js,.vue src",
@@ -22,6 +22,12 @@ const REGISTRY_TIMEOUT = 8000;
22
22
  const CONTAINER_WRAPPER_ID = "Appmicro";
23
23
  const DEBUG_APP_CODE_REG = /^[A-Za-z][A-Za-z0-9_-]*$/;
24
24
 
25
+ // 本机调试的约定默认值:包内兜底,各应用 settings.js 无需声明。
26
+ // 需要偏离约定(改端口 / 调真实 appCode 的菜单派发)才在应用 settings.js 里覆盖,
27
+ // 或用 ?microDebug=appB=http://... 单次指定。
28
+ const DEBUG_DEFAULT_APP_CODE = "debugApp";
29
+ const DEBUG_DEFAULT_ENTRY = "http://localhost:17527/";
30
+
25
31
  // 保活管理:appCode → { instance, el };离开子应用路由只隐藏容器不卸载,
26
32
  // 切回直接显示并经 update 生命周期同步路由,页面状态(页签/表格/表单)得以保留
27
33
  let microAppConfigs = {};
@@ -68,19 +74,52 @@ export function getAppRegistry() {
68
74
  }
69
75
 
70
76
  /**
71
- * 本机调试覆盖,两种形态(localStorage 优先):
72
- * 1) settings.microDebugEnabled = true —— 本地起主应用时免设 localStorage,
73
- * 直接按 settings.microDebugAppCode/microDebugEntry 挂载调试子应用;
74
- * 仅非 production 构建生效,防误留 true 发版后所有用户被指向 localhost。
75
- * 2) localStorage.micro_app_debug —— 仅当前浏览器生效,用于"发布环境主应用 +
76
- * 本机子应用"的联调,不影响其他用户。四档写法:
77
+ * 从 URL 读调试开关并落盘 localStorage,读到后即从地址栏抹掉(避免被收藏/分享扩散)。
78
+ * 支持 hash 前后两种位置:?microDebug=xx#/... #/...?microDebug=xx。
79
+ * 取值同 localStorage 四档写法;microDebug=off 清除调试态。
80
+ * 存在意义:settings.microDebugEnabled 是构建期常量、全体用户共用,生产构建里必须失效;
81
+ * 生产环境主应用要装本机子应用,只能靠这种"按浏览器生效"的通道。
82
+ */
83
+ function readDebugFromUrl() {
84
+ const href = window.location.href || "";
85
+ const matched = href.match(/[?&]microDebug=([^&#]*)/);
86
+ if (!matched) return;
87
+ const value = decodeURIComponent(matched[1] || "").trim();
88
+ try {
89
+ if (!value || value === "off" || value === "0") {
90
+ window.localStorage.removeItem(DEBUG_STORAGE_KEY);
91
+ } else {
92
+ window.localStorage.setItem(DEBUG_STORAGE_KEY, value);
93
+ }
94
+ } catch (e) {
95
+ console.error("[microRouter] 调试开关写入 localStorage 失败:", e.message);
96
+ return;
97
+ }
98
+ try {
99
+ const cleaned = href
100
+ .replace(/([?&])microDebug=[^&#]*&?/, "$1")
101
+ .replace(/[?&](?=#|$)/, ""); // 抹掉后可能残留的空查询串
102
+ window.history.replaceState(null, "", cleaned);
103
+ } catch (e) {
104
+ // replaceState 失败不影响开关本身,忽略
105
+ }
106
+ }
107
+
108
+ /**
109
+ * 本机调试覆盖,三种触发方式(localStorage 优先于 settings 开关):
110
+ * 1) URL 参数 ?microDebug=xx —— 任何环境(含生产构建)都生效,值写入 localStorage
111
+ * 后自动从地址栏抹掉;?microDebug=off 清除。生产环境主应用只能用这种。
112
+ * 2) localStorage.micro_app_debug —— 仅当前浏览器生效,不影响其他用户。四档写法:
77
113
  * "1" → settings.microDebugAppCode + microDebugEntry
78
114
  * "appB" → appB + 默认调试入口
79
- * "appB=http://localhost:9530/" → 指定入口;多个用逗号分隔,可混写
115
+ * "appB=http://localhost:17528/" → 指定入口;多个用逗号分隔,可混写
80
116
  * '[{"appCode":"..","entry":".."}]' → 完整条目数组
117
+ * 3) settings.microDebugEnabled = true —— 本地起主应用时免设 localStorage;
118
+ * 仅非 production 构建生效,防误留 true 发版后所有用户被指向 localhost。
81
119
  * 与注册表按 appCode 合并:已存在的条目覆盖 entry 并强制 enabled,不存在的追加。
82
120
  */
83
121
  function getDebugOverrides() {
122
+ readDebugFromUrl();
84
123
  let raw = null;
85
124
  try {
86
125
  raw = window.localStorage.getItem(DEBUG_STORAGE_KEY);
@@ -89,8 +128,8 @@ function getDebugOverrides() {
89
128
  }
90
129
  raw = raw ? raw.trim() : "";
91
130
  const defaults = {
92
- appCode: settings.microDebugAppCode || "",
93
- entry: settings.microDebugEntry || "",
131
+ appCode: settings.microDebugAppCode || DEBUG_DEFAULT_APP_CODE,
132
+ entry: settings.microDebugEntry || DEBUG_DEFAULT_ENTRY,
94
133
  };
95
134
  let restoreHint
96
135
  = "删除 localStorage." + DEBUG_STORAGE_KEY + " 后刷新恢复";