Page MenuHomePhabricator

Build a minimal prototype for Vue server-side rendering (SSR) of special pages in MediaWiki
Closed, ResolvedPublic5 Estimated Story Points

Description

Build a prototype with a limited scope:

  • Only special pages are supported, through class MySpecialPage extends VueSSRSpecialPage
  • The entire special page (minus the skin chrome) must be rendered by a single .vue file (which can require() other .vue files for code organization). Vue SSR special pages can't output any additional HTML or render multiple separate components.
  • The Vue component code being SSRed can require() other .vue files and can load Codex, but other modules (like mediawiki.* utility modules) don't have to be supported
  • The SSR service lives in the MediaWiki repo for now, and accesses .vue files through the file system. This may not be suitable for real-world use and may eventually have to change, but it's good enough for a prototype.

Details

Related Changes in Gerrit:

Event Timeline

Change #1114077 had a related patch set uploaded (by Catrope; author: Eric Gardner):

[mediawiki/core@master] [WIP] Vue SSR Service proof-of-concept

https://gerrit.wikimedia.org/r/1114077

CCiufo-WMF moved this task from Inbox to Needs Refinement on the Design-System-Team board.
Catrope set the point value for this task to 5.Feb 3 2025, 6:58 PM

Remaining questions/explorations:

  • Handle CSS without a FOUC, and render any CSS at all when JS is disabled
  • Should we use Vite, or switch to Rollup? Can we support CJS .vue files with either?