Wpis z mikrobloga

Devykopki - potrzebuje pomocy.

Mianowicie, mam apkę AngularJS + Require.js do ładowania wszystkich JSów tam gdzie ich potrzebuje. Problem się pojawia, gdy używam Hudsona do deployowania wersji na serwerze. Wszystko ładnie się buduje, ale pierdykany #firefox nie chce uznac location.reload(true) i czesc rzeczy wraca z serwera z HTTP 200, a czesc HTTP 304.

Czy ktos z Was wie jak ugryzc assets versioning (wersjonowanie) po stronie grunta, albo chociaz jak skonfigurowac prawidlowo apache, by, gdy zaktualizuje sie jakis plik, to przegladarka wiedziala, ze ma odsniezyc i pobrac nowa wersje z serwera?

Przypominam, ze aktualnie mam zawsze te same nazwy plikow - w #apache leci ETag i If-Modified-Since, ale FF ma to w żopie i już.

Jest może jakiś pakiet w #npm albo #bower ktory pozwoli mi na automatyczne zmienianie nazw plikow np. poprzez dodanie hasha na koncu nazwy pliku - czyli z

app_model.js

zrobic

app_model-12f3ed5332d.js

plus zmiana nazw zaleznosci w srodku plikow JS ktore uzywaja AMD np z

define(['app/_init/app_model'], function (appModel) {
na

define(['app/_init/app_model-12f3ed5332d'], function (appModel) {
?

Proszę, podzielcie się swoimi spostrzeżeniami i pomysłami jak to można rozwiązać, bo ja powoli odpadam...

EDIT: W webkitowych silnikach śmiga.

#webdev #programowanie #javascript #angularjs #angular

THANK YOU FROM THE MOUNTAIN!
  • 10
@michalion: nie znam - przejrzę - ten drugi link wymaga założenia konta ;)
@Marmite: widziałem, ale w tym przypadku muszę chyba napisać sobie jeszcze jakiegoś taska gruntowego, który prze-regexpuje mnie po wszystkich plikach JS + HTML i podmieni nazwy, rajt?
@nCore: No jak to w gruncie, musi być task. Regexpa nie musisz pisać, tym się zajmie wtyczka, trzeba ją tylko skonfigurować. Jakbyś używał webpacka do budowania (gorąco polecam, tym bardziej że używasz modułów) toby wystarczyło tylko dodać [hash] w nazwie pliku wyjściowego i z głowy :P
@Marmite: no to juz wiem o co chodzi...

location.reload(true) dziala pieknie, problem z samym requirejs jest... mianowicie wszystko wraca jako 200 OK, a wszystko co bylo ladowane TYLKO i wylacznie za pomoca require.js wraca jako 200 OK (cached) :D

znalazlem jakies rozwiazanie z urlArgs, ale tez grunt-cache-buster + grunt-filerev ktorego podales.

Ide grzybać. Dzieki i pozdro!
@nCore: A potrzebujesz faktycznie dociągać te skrypty asynchronicznie? Bo tak działa require, ale jeśli nie potrzebujesz części modułów ładować asynchronicznie to możesz je spakować do jednego pliku (webpackiem). Jest też chyba r.js do tego, od autorów require, ale jakoś nigdy go nie ogarnąłem dobrze.
@Marmite: też próbowalem wpiąć r.js (nie - nie - nie - nie - też nie ogarnąłem).

I potrzebuje wszystko ładować - paczka modułów jest ładowana w jednej części aplikacji - kolejna w drugiej - trudne do wytłumaczenia - do przerobienia jeszcze gorzej - ktoś to tak zrobił - no i tak musi zostać :/

Obawiam się, że urlArgs + np. numer commita z gita będzie sensownym rozwiązaniem - zawsze się będzie