Různé moduly & různé skripty (javascript, layout, webloader)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Pavel Kravčík
Člen | 1196
+
0
-

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?

  1. 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.
  2. Udělat si více instancí ve webloaderu → tj. webloader: css: a webloader: css1: a pak mít rozdílné abstraktní předky pro presentery → tj. BasePresenter, BasePresenter1.
  3. Viz zmíněné možnosti nahoře (refacktoring, úplně nové projekty)
  4. 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.
  5. Vaše nápady?
Pavel Macháň
Člen | 282
+
0
-

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?

  1. 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.
  2. Udělat si více instancí ve webloaderu → tj. webloader: css: a webloader: css1: a pak mít rozdílné abstraktní předky pro presentery → tj. BasePresenter, BasePresenter1.
  3. Viz zmíněné možnosti nahoře (refacktoring, úplně nové projekty)
  4. 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.
  5. 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
+
0
-

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.

CZechBoY
Člen | 3608
+
0
-

Rozdělení na admin a web je základ.
Podle mě @PavelKravčík myslel spíš rozdělení na moduly pro web.

Grido jsem si forknul a upravil podle svýho, taky upgradnul knhovny, aby to nekolidovalo :-)

Pavel Kravčík
Člen | 1196
+
0
-

@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?