Různé moduly & různé skripty (javascript, layout, webloader)
- Pavel Kravčík
- Člen | 1196
Jak v Nette řešíte různé client-side skripty pro různé modely na stejném projektu? Nejlepší je mít pro každou aplikaci vlastné framework (to bohužel nejde – sdílení db uživatelů apod.) a nebo refaktoring starších modulů (je jich hodně, peníze, čas).
Následující situace, existuje starý modul na akvizice (jquery, drag&drop), ale funguje jen s určitým jQuery a na něj navázanými skripty (autocomplete, history apod.), teď pokud chci použít nové jquery s novým doplňek, který však není kompatibilní s některými starými. Hlavně pak nastává problém například s Grido, protože se tam používá stará verze, která přestane s novým jQuery fungovat autocomplete apod.
Takže potřebuju rozdělit client-side podle modulů (tj. prasárna cestou nejmenšího odporu). Jak to udělat, co nejčistěji?
- Udělat specifický @layout pro konkrétní moduly, kde se konkrétní části budou měnit, občas mi ale přišlo, že v include šablony, která má include už nefungují javascript přes vnořené bloky.
- Udělat si více instancí ve webloaderu → tj.
webloader: css:
awebloader: css1:
a pak mít rozdílné abstraktní předky pro presentery → tj.BasePresenter
,BasePresenter1
. - Viz zmíněné možnosti nahoře (refacktoring, úplně nové projekty)
- Postupně ty závislosti předělávat do LESS/SASS? To by se ale spíše hodilo pro nový projekt, než to dávat to rozdělaného.
- Vaše nápady?
- Pavel Macháň
- Člen | 282
Pavel Kravčík napsal(a):
Jak v Nette řešíte různé client-side skripty pro různé modely na stejném projektu? Nejlepší je mít pro každou aplikaci vlastné framework (to bohužel nejde – sdílení db uživatelů apod.) a nebo refaktoring starších modulů (je jich hodně, peníze, čas).
Následující situace, existuje starý modul na akvizice (jquery, drag&drop), ale funguje jen s určitým jQuery a na něj navázanými skripty (autocomplete, history apod.), teď pokud chci použít nové jquery s novým doplňek, který však není kompatibilní s některými starými. Hlavně pak nastává problém například s Grido, protože se tam používá stará verze, která přestane s novým jQuery fungovat autocomplete apod.
Takže potřebuju rozdělit client-side podle modulů (tj. prasárna cestou nejmenšího odporu). Jak to udělat, co nejčistěji?
- Udělat specifický @layout pro konkrétní moduly, kde se konkrétní části budou měnit, občas mi ale přišlo, že v include šablony, která má include už nefungují javascript přes vnořené bloky.
- Udělat si více instancí ve webloaderu → tj.
webloader: css:
awebloader: css1:
a pak mít rozdílné abstraktní předky pro presentery → tj.BasePresenter
,BasePresenter1
.- Viz zmíněné možnosti nahoře (refacktoring, úplně nové projekty)
- Postupně ty závislosti předělávat do LESS/SASS? To by se ale spíše hodilo pro nový projekt, než to dávat to rozdělaného.
- Vaše nápady?
@PavelKravčík Řeším to pomocí webloaderu. Pro administraci mám vlastní workspace (taky proč by na front se měli sosat scripty a css pro admina)
webloader:
css:
font: ...
cms: ...
js:
font: ...
cms: ...
Editoval Pavel Macháň (29. 10. 2015 10:15)
- Oli
- Člen | 1215
Přesně proto jsme začali používat bower. Protože, když jsme nějak nastavili skripty a nějakej se aktualizoval (zejména taky grido :-)) tak se to prostě rozsipalo. Bower je composer pro skripty, takže by se ti měl postarat o závislosti. Ve webloderu si jen nastavíš správnou cestu…
btw. Rozdělní na admin a frontend používáme ve webloderu taky.
- Pavel Kravčík
- Člen | 1196
@CZechBoY: Tak ono je to v podstatě to samé. Máš modul admin a modul frontend. Pravděpodobně se to vyřeším webloaderem a přetěžováním v presenterech. Zase taková hrůza to není a možná by se vyplatilo si pro každý modul napsat vlastní nastavení .js.
Teď to funguje, že načtu 20 JS a i ty, které se na dané stránce nepoužívají.
Jak je to s Bowerem a tak? Ten vytváří mimifikovanou verzi také ze všeho? Nebo se tam dá volit, které soubory se mají kdy tahat?