Changeset 369aa60 in Klonkt for src/assets/js/mod/post-edit.js


Ignore:
Timestamp:
09/04/2026 11:48:29 AM (4 days ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
aa521c3
Parents:
4425cc2
Message:

Cache-busting reikt nu ook tot wat de modules zelf ophalen (shaer-724)

De bootstrap hing al ?v= aan elke module die hij zelf laadt. Twee soorten
paden ontsnapten daaraan, en /assets wordt buiten ontwikkeling een jaar
gecachet:

een import BINNEN een module is relatief, en zo\x27n specifier erft de
query niet: ./lib.js naast post.js?v=63 wordt gewoon
/assets/js/mod/lib.js. Elf modules importeren lib.js zo, en juist dat
bestand is gedeeld -- een fout erin overleefde elke MOD_V-bump.

een vendorbestand dat een module zelf ophaalt. read.js deed het goed met
?v=VENDOR_V; lib.js (mijn eigen import van gisteren) en de twee
cropper-verwijzingen in post-edit deden het niet.

Een importmap in de head lost het eerste op zonder die elf imports aan te
raken: hij vertaalt de opgeloste URL naar zijn geversioneerde vorm. MOD_V
staat daarvoor nu als EJS-variabele bovenaan de shell, zodat de importmap
en de bootstrap niet twee nummers kunnen worden. VENDOR_V staat in lib.js
en wordt door read.js en post-edit gedeeld, om dezelfde reden.

Drie toetsen die de REGEL bewaken en niet deze ene plek: elke relatieve
import tussen modules heeft een ingang in de importmap, elk vendorpad
draagt een versie, en de twee nummers zijn er een. Tegenbewijs: haal de
ingang weg of de versie eraf en precies die toets valt.

Volle suite 1248 groen.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/assets/js/mod/post-edit.js

    r4425cc2 r369aa60  
    55// het houdt een apostrof in een vertaling uit de HTML die hier geplakt wordt.
    66
    7 import { pageData, esc, makeSweeper } from './lib.js';
     7import { pageData, esc, makeSweeper, VENDOR_V } from './lib.js';
    88// Dezelfde regel die de server gebruikt -- zie shared/post-music-type.js voor
    99// waarom hij daar staat en niet twee keer.
     
    173173      if (!document.querySelector('link[data-cropper-css]')) {
    174174        const l = document.createElement('link');
    175         l.rel = 'stylesheet'; l.href = '/assets/vendor/cropper.min.css'; l.setAttribute('data-cropper-css', '');
     175        // Met versie, net als het script eronder (shaer-724): /assets wordt een
     176        // jaar gecachet en deze twee bestanden dragen geen versie in hun naam.
     177        l.rel = 'stylesheet'; l.href = `/assets/vendor/cropper.min.css?v=${VENDOR_V}`; l.setAttribute('data-cropper-css', '');
    176178        document.head.appendChild(l);
    177179      }
    178180      const s = document.createElement('script');
    179       s.src = '/assets/vendor/cropper.min.js';
     181      s.src = `/assets/vendor/cropper.min.js?v=${VENDOR_V}`;
    180182      s.onload = () => resolve();
    181183      s.onerror = () => reject(new Error('cropper load failed'));
Note: See TracChangeset for help on using the changeset viewer.