Page MenuHomeSealhub

Dodanie komponentom możliwości tworzenia plików ubocznych
Closed, ResolvedPublic3 Points

Description

Przy review zauważyłem, że komponent responsive-image musi skądś wiedzieć, dokąd ma zapisywać przeskalowane zdjęcia. Myślę, że komponenty najłatwiej będzie pisało się, jeżeli nie będą musiały się przejmować tym, dokąd pisać pliki, w jaki sposób, czy takie pliki już istnieją, itp.

Dlatego proponuję, aby każdy komponent dostawał zawsze dokładnie dwa argumenty:

  1. sealpage - obiekt, który opiszę poniżej
  2. props - tradycyjne propsy danego komponentu

sealpage (może się nazywać inaczej, pozostawiam dowolność) jest obiektem, który będzie używany m.in. do pobierania konfiguracji aktualnego builda oraz zgłaszania wszelkich skutków ubocznych. Powinien zawierać metodę addOutputFile(), która przyjmuje argumenty:

  • relative_path - ścieżka docelowa katalogu dla pliku. relatywna, względem docelowego katalogu outputu
  • base_name - bazowa nazwa pliku,
  • generator - funkcja asyncowa, która resolvuje się do Buffer zawierającego zawartość pliku do zapisania
  • deps - lista zmiennych, które wpływają na to, jaka jest zawartość wyjściowego pliku. Podobnie do deps w Reactowych hookach, jeżeli przy ponownym renderze zostanie wywołany ten sam plik z takimi samymi wartościami w deps, to plik pozostaje bez zmian i go nie generujemy i nie zapisujemy ponownie. Jeżeli deps nie jest podane, to plik za każdym razem się generuje i zapisuje ponownie

Następnie trzeba przerobić ResponsiveImage tak, aby korzystał z tego nowego api.

Event Timeline

kuba-orlik changed the task status from Unknown Status to Unknown Status.May 24 2019, 16:15
kuba-orlik created this task.
kuba-orlik added a parent task: Unknown Object (Maniphest Task).May 24 2019, 16:23
arkadiusz-wieczorek moved this task from Restricted Project Column to Restricted Project Column on the Unknown Object (Project) board.

Przy implementacji okazało się że trzeba wyabstrahować renderFn oraz propsControls klasy Component do oddzielnych części, z uwagi na problem który wyszedł przy implementacji komponentu DownloadFileButton. Przy rejestrowaniu komponentu są problemy przez użycie modułów node'owych:

const fs = require('fs');
const util = require('util');
const path = require('path');

Posprzątałem nasze dzisiejsze zmiany.

kuba-orlik shifted this object from the Restricted Space space to the S5 Publiczna space.Jun 18 2019, 16:55
kuba-orlik changed the visibility from "All Users" to "Public (No Login Required)".
kuba-orlik moved this task from Restricted Project Column to Restricted Project Column on the Unknown Object (Project) board.Jun 25 2019, 15:45
kuba-orlik changed the task status from Unknown Status to Resolved.Jul 2 2019, 13:57
kuba-orlik moved this task from Restricted Project Column to Restricted Project Column on the Unknown Object (Project) board.