From c8ec9bc2cc821bd43940550f8933dcbeca46b521 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 28 Sep 2025 05:40:40 +0200 Subject: [PATCH] feat(ui): lazy-load all Vue components (#9444) Some Vue components were already lazy-loaded, but not all. There are three main changes: 1. Move init scripts outside Vue code. 2. Make the init scripts lazy-load the Vue components. 3. Deal with vue linters, because apparently if you do `export default` then some Vue linters will notice that's vue sfc. The rationale for this pull requests is that this reduces the size of the `index.js` file. - Uncompressed: 1.24 MB -> 954.40 kB - Compressed (gzip, via `reverse_proxy` of Caddy): 400.45 kB -> 298.95 kB - Compressed (zstd, via `bindata` tag): 363.75 kB -> 274.22 kB Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/9444 Reviewed-by: Otto Co-authored-by: Gusted Co-committed-by: Gusted --- web_src/js/components/DashboardRepoList.vue | 12 +- web_src/js/components/RepoActionView.vue | 155 ++++++++---------- .../js/components/RepoActivityTopAuthors.vue | 110 ++++++------- .../js/components/RepoBranchTagSelector.vue | 44 +---- .../components/ScopedAccessTokenSelector.vue | 20 +-- web_src/js/features/contextpopup.js | 4 +- web_src/js/features/dashboard-repo-list.ts | 12 ++ web_src/js/features/heatmap.js | 4 +- web_src/js/features/repo-action-view.ts | 55 +++++++ .../js/features/repo-activity-top-authors.ts | 16 ++ .../js/features/repo-branch-tag-selector.js | 36 ++++ web_src/js/features/repo-diff-commitselect.js | 4 +- web_src/js/features/repo-diff-filetree.js | 4 +- web_src/js/features/repo-issue-pr-form.js | 4 +- web_src/js/features/repo-legacy.js | 2 +- .../features/scoped-access-token-selector.ts | 14 ++ web_src/js/index.js | 8 +- 17 files changed, 269 insertions(+), 235 deletions(-) create mode 100644 web_src/js/features/dashboard-repo-list.ts create mode 100644 web_src/js/features/repo-action-view.ts create mode 100644 web_src/js/features/repo-activity-top-authors.ts create mode 100644 web_src/js/features/repo-branch-tag-selector.js create mode 100644 web_src/js/features/scoped-access-token-selector.ts diff --git a/web_src/js/components/DashboardRepoList.vue b/web_src/js/components/DashboardRepoList.vue index e8c1b76a7f..7debf6240e 100644 --- a/web_src/js/components/DashboardRepoList.vue +++ b/web_src/js/components/DashboardRepoList.vue @@ -1,5 +1,4 @@