fix(runtime): 按参考主题硬切换为 loader/main/auto_fun 单一 DOM 生命周期

- 删除 AksrtFrontend registry/rehydrate 双路架构及 build/public.js 拼包入口,
  前台唯一初始路径为 PHP 本地栈(jQuery 1.9.1 → Bootstrap 3.4.1)
  → loader_js(_win/aksrtData 唯一注入)→ tbquire(['main']) → runtime/main.min.js
- window.auto_fun = debounce(z_auto_fun, 100) 为唯一重扫入口;所有模块改为
  执行一次 + off/on('auto_fun.aksrt-*') 命名空间重扫,data/class 标记幂等
- 局部更新协议统一:HTML 注入 → post_ajax.ed → auto_fun();
  远程 modal → loaded.bs.modal → auto_fun();JSON 成功 → zib_ajax.success
- 灯箱恢复 Miniimgbox/imgbox 唯一 owner(imgbox-container、a[data-imgbox]、
  imgbox_data),删除 AksrtLightbox/data-aksrt-lightbox 第二实现及 CSS/overlay,
  _win.imgbox* 重新接上 post-display 设置
- 死代码清理:runtime 下 11 组被自有实现替代的旧模块副本、无消费 vendored 库、
  顶层 grade.min.js、revenue.js、无调用方的 aksrt_get_win_runtime_config(),
  以及 loader 中 16 条死 mapping
- PHP 入队改为本地栈 + loader_js,routed/widget/submit 依赖统一换绑;
  用户卡片发布按钮恢复 nav_user_newposts_btn 设置门控
- 测试对齐:新增 frontend-lifecycle-contract,重写 navigation/lazyload/toast/
  auth-source/comment/page-display/post-visual 等断言为目标架构契约

验证:node --test widget-system+navigation 223 通过 0 失败;
构建脚本重建 main/imgbox min 与 CSS bundles;改动 PHP php -l、JS node --check
全部通过;git diff --check 干净;credits 重入 harness 通过。
This commit is contained in:
2026-09-03 12:44:31 +08:00
parent 1cd81fb61a
commit 5fd7c212ed
124 changed files with 2128 additions and 17328 deletions
+45 -25
View File
@@ -13,20 +13,37 @@ trait ScriptsPart1b {
$base_uri = get_template_directory_uri();
$version = AKSRT_VERSION;
// Keep the WordPress handle but make its modern core build the only runtime.
$wp_scripts = wp_scripts();
if (isset($wp_scripts->registered['jquery'])) {
$wp_scripts->registered['jquery']->deps = ['jquery-core'];
}
// 本地运行时栈(与参考主题一致):jQuery 1.9.1 → Bootstrap → loader → main。
wp_deregister_script('jquery');
wp_register_script('jquery', $base_uri . '/assets/js/runtime/libs/jquery.min.js', [], '1.9.1', false);
wp_enqueue_script('jquery');
$public_filename = file_exists(get_template_directory() . '/assets/css/build/public.min.css')
? 'public.min.css'
: 'public.css';
$public_bundle = get_template_directory() . '/assets/css/build/' . $public_filename;
wp_enqueue_style(
'bootstrap',
$base_uri . '/assets/css/bootstrap.min.css',
[],
'3.4.1'
);
wp_enqueue_style(
'fontawesome5',
$base_uri . '/assets/fontawesome5/css/all.min.css',
['bootstrap'],
'5.15.4'
);
$main_css_path = get_template_directory() . '/assets/css/main.min.css';
wp_enqueue_style(
'aksrt-main',
$base_uri . '/assets/css/main.min.css',
['fontawesome5'],
file_exists($main_css_path) ? (string) filemtime($main_css_path) : $version
);
wp_enqueue_style(
'aksrt-public',
$base_uri . '/assets/css/build/' . $public_filename,
[],
['aksrt-main'],
file_exists($public_bundle) ? (string) filemtime($public_bundle) : $version
);
@@ -52,6 +69,9 @@ trait ScriptsPart1b {
);
};
// 顶部导航用户卡片(legacy header-userbox 模块样式)。
$enqueue_module('header-userbox');
if (!is_user_logged_in() || (bool) get_query_var('aksrt_sign')) {
$auth_css = get_template_directory() . '/assets/css/routes/sign.css';
wp_enqueue_style(
@@ -82,7 +102,7 @@ trait ScriptsPart1b {
wp_enqueue_script(
'aksrt-vip-coordinator',
$base_uri . '/assets/js/vip-purchase-coordinator.js',
['aksrt-runtime'],
['loader_js'],
(string) filemtime($vip_coordinator),
true
);
@@ -104,7 +124,7 @@ trait ScriptsPart1b {
wp_enqueue_script(
'aksrt-pay-vip',
$base_uri . '/assets/js/pay-vip.js',
['aksrt-runtime', 'aksrt-vip-coordinator'],
['loader_js', 'aksrt-vip-coordinator'],
(string) filemtime($vip_js),
true
);
@@ -272,7 +292,7 @@ trait ScriptsPart1b {
wp_enqueue_script(
'aksrt-report',
$base_uri . '/assets/js/report.js',
['aksrt-runtime'],
['loader_js'],
filemtime($report_js_path) ?: $version,
true
);
@@ -286,7 +306,7 @@ trait ScriptsPart1b {
wp_enqueue_script(
'aksrt-author',
$base_uri . '/assets/js/author.js',
['aksrt-runtime'],
['loader_js'],
(string) filemtime($author_js_path),
true
);
@@ -374,7 +394,7 @@ trait ScriptsPart1b {
wp_enqueue_script(
'aksrt-order-center',
$base_uri . '/assets/js/order-center.js',
['aksrt-runtime'],
['loader_js'],
(string) filemtime($order_center_js),
true
);
@@ -386,14 +406,14 @@ trait ScriptsPart1b {
wp_enqueue_script(
'aksrt-route-user-center-auth',
$base_uri . '/assets/js/routes/user-center-auth.js',
['aksrt-runtime'],
['loader_js'],
(string) filemtime($identity_js),
true
);
}
$user_center_deps = file_exists($identity_js)
? ['aksrt-runtime', 'aksrt-route-user-center-auth']
: ['aksrt-runtime'];
? ['loader_js', 'aksrt-route-user-center-auth']
: ['loader_js'];
if ($has_orders_panel && wp_script_is('aksrt-order-center', 'registered')) {
$user_center_deps[] = 'aksrt-order-center';
}
@@ -449,7 +469,7 @@ trait ScriptsPart1b {
wp_enqueue_script(
'aksrt-page-navs',
$base_uri . '/assets/js/page-navs.js',
['aksrt-runtime'],
['loader_js'],
(string) filemtime($page_navs_js),
true
);
@@ -469,7 +489,7 @@ trait ScriptsPart1b {
wp_enqueue_script(
'aksrt-section-navs',
$base_uri . '/assets/js/section-navs.js',
['aksrt-runtime'],
['jquery'],
(string) filemtime($section_navs),
true
);
@@ -479,7 +499,7 @@ trait ScriptsPart1b {
wp_enqueue_script(
'aksrt-posts-navs-page',
$base_uri . '/assets/js/posts-navs-page.js',
['aksrt-runtime'],
['loader_js'],
(string) filemtime($pn_js),
true
);
@@ -515,7 +535,7 @@ trait ScriptsPart1b {
wp_enqueue_script(
'aksrt-ban-appeal-page',
$base_uri . '/assets/js/ban-appeal-page.js',
['aksrt-runtime'],
['loader_js'],
(string) filemtime($ba_js),
true
);
@@ -538,7 +558,7 @@ trait ScriptsPart1b {
wp_enqueue_script(
'aksrt-messages',
$base_uri . '/assets/js/messages.js',
['aksrt-runtime'],
['loader_js'],
(string) filemtime($messages_js),
true
);
@@ -552,7 +572,7 @@ trait ScriptsPart1b {
wp_enqueue_script(
'aksrt-share-data',
$base_uri . '/assets/js/share-data-builder.js',
['aksrt-runtime'],
['loader_js'],
(string) filemtime($share_data_js),
true
);
@@ -566,7 +586,7 @@ trait ScriptsPart1b {
wp_enqueue_script(
'aksrt-poster-share',
$base_uri . '/assets/js/poster-share.js',
['aksrt-runtime', 'aksrt-share-data'],
['loader_js', 'aksrt-share-data'],
(string) filemtime($poster_js),
true
);
@@ -623,7 +643,7 @@ trait ScriptsPart1b {
wp_enqueue_script(
'aksrt-cms-download',
$base_uri . '/assets/js/cms-download.js',
['aksrt-runtime'],
['loader_js'],
file_exists($cms_download_js_path) ? (string) filemtime($cms_download_js_path) : $version,
true
);
@@ -652,7 +672,7 @@ trait ScriptsPart1b {
wp_enqueue_script(
'aksrt-credits',
$base_uri . '/assets/js/credits.js',
['aksrt-runtime', 'aksrt-vip-coordinator'],
['loader_js', 'aksrt-vip-coordinator'],
file_exists($credits_js_path) ? (string) filemtime($credits_js_path) : $version,
true
);
@@ -665,7 +685,7 @@ trait ScriptsPart1b {
wp_enqueue_script(
'aksrt-signin',
$base_uri . '/assets/js/signin.js',
['aksrt-runtime'],
['loader_js'],
file_exists($signin_js_path) ? (string) filemtime($signin_js_path) : $version,
true
);
@@ -684,7 +704,7 @@ trait ScriptsPart1b {
wp_enqueue_script(
'aksrt-user-badge-actions',
$base_uri . '/assets/js/user-badge-actions.js',
['aksrt-runtime'],
['loader_js'],
(string) filemtime($badge_actions_path),
true
);