Mam lokalny statyczny plik JavaScript, który chcę dołączyć do całej witryny. Preferuję, aby wszystkie statyczne pliki JavaScript były połączone w jeden plik, ale chcę zarządzać tymi plikami osobno. Gdzie powinny znajdować się statyczne pliki Javascript w projekcie Yesod?Gdzie umieścić statyczny javascript w projekcie Yesod?
Odpowiedz
Istnieje bardziej szczegółowe rozwiązanie.
Istnieje folder dla statycznych plików JavaScript w '' static/js ''.
Jest bardziej konkretne polecenie widget dla javascript: addScript
Dla każdego pliku statycznego, the Static subsite generates a "::Route Static" symbol, zastępując znaki inne niż identyfikator "/ -". z "_" w ścieżce do pliku z '' static/''.
Próbka:
import Yesod.Widget (addScript)
-- given a file path of static/js/my-script.js
addScript $ StaticR js_my_script_js
Jeśli projekt jest częściowo skompilowana, może pojawić się komunikat o błędzie, jak:
Foundation.hs:...: Not in scope: `js_my_script_js'
wówczas
UNIX dotknąć moduł StaticFiles.hs, który generuje symbole trasy, wywołując staticFiles
lub wyczyść kompilację i odbuduj ją, a następnie znika.
Pozdrawiam!
Możesz przeczytać o tym także na mój/(twój) wikipedia article. Możesz go poprawić i uzupełnić.
Możesz użyć addWidget
w swojej funkcji defaultLayout
, aby dodać ją do widgetów, które są połączone w jeden plik.
Na przykład
defaultLayout widget = do
...
pc <- widgetToPageContent $ do
$(widgetFile "mywidget")
... other stuff here ...
...
Teraz wystarczy umieścić plik o nazwie mywidget.julius
do katalogu szablonów i powinno być automatycznie włączone na wszystkich stronach.
Dzieki temu działa tylko problem z tym, że w skompilowanym pliku javascript znajduje się również specyficzny dla strony javascript. – Joost
@Joost tak, to jest to, co robi widżet. Nie jestem do końca pewien, czy istnieje sposób na obejście tego zachowania. Nie wydaje mi się, żeby w większości przypadków była to wielka sprawa, ponieważ pozwoli przeglądarkom buforować wszystkie skrypty za jednym razem i zmniejsza również liczbę żądań. –
Czy to też działa, gdy nie używasz rusztowania? – timwaagh