Nahradit NetteQ za jQuery?
- David Grudl
- Nette Core | 8227
S myšlenkou pohánět Debugger Bar pomocí jQuery si pohrávám od jeho vzniku. Knihovna NetteQ vznikla proto, že mi jQuery připadalo příliš velké pro výpis na konci souboru (NetteQ je cca 11× menší), nezdálo se mi košér ho linkovat z CDN a obával jsem se případných kolizí.
Aniž bych to čekal, tvorba rozšíření pro Debugger Bar se stala velmi populární a jako klíčové se mi zdá nabídnout standardní API v podobě jQuery. Takže NetteQ bych dal pryč, jQuery tahal z CDN (nastavitelné přes nějakou proměnnou). Programovat NetteQ byla výborná a příjemná zkušenost, ale asi je čas mu dát sbohem, ne?
Taktéž netteForms.js bych hodil někam do doplňků a dal do distibuce novou verzi postavenou na jQuery, využívající třeba live bindování (AJAX) a live validování (něco hezkého místo alert).
Nějaké postřehy?
- Patrik Votoček
- Člen | 2221
Tenhle krok se mě určitě líbí! A jsem 1000× pro!
Ad netteForms.js
moc to s tím nesouvisí ale nemohl by
v data-nette-rules být validní JSON (tj. 'foo': 'bar'
). Kdysi
jsem na to narazil (už nevím proč zkusím pohledat).
- arron
- Člen | 464
Ja jsem taky rozhodne pro:-) Akorat bude potreba zajistit, aby se v pripade formularu nenahravalo jQuery pokud uz v projektu bude nahrane (v debugu to tolik nevadi). A mozna by mohl nastat problem s verzemi, protoze nekdo treba bude mit starou verzi a mohl by mit problem upgradovat (ackoliv si nejsem jisty jak je to presne s kompatibilitou).
- Lopo
- Člen | 277
arron napsal(a):
Ja jsem taky rozhodne pro:-) Akorat bude potreba zajistit, aby se v pripade formularu nenahravalo jQuery pokud uz v projektu bude nahrane (v debugu to tolik nevadi). A mozna by mohl nastat problem s verzemi, protoze nekdo treba bude mit starou verzi a mohl by mit problem upgradovat (ackoliv si nejsem jisty jak je to presne s kompatibilitou).
osobne mam jquery aj jquery-ui rovno v hlavicke … kedze napr aj flash spravicky mam animovanie pomocou kusu kodu z datagrid-u …
co sa tyka ajax skriptov formularov tak v BailIff-e to mam riesene skriptami povodne od Hosiplan-a linkovanymi cez head.js takze viacnasobne nahravanie by nemalo nastavat …
celkovo budem rad ak sa aktualne nette skripty prerobia do jQuery podoby
mozno sa najdu ludia ktori by ich vedeli portnut potom aj do inych JS frameworkov
nebolo by odveci mat moznost nejakym parametrom nette povedat ktoru verziu ma pouzivat – nejaky globalny param urcujuci pouzitie jQuery / MooTools / Prototype / … predsa len pocitam ze sa najdu ludia ktori pouzivaju nejaky iny jsfw nez jQuery …
- Ondřej Mirtes
- Člen | 1536
Já bych trochu brzdil. To jQuery bude includované jen v momentě, kdy bude zobrazený debugbar? Nebo si ho každý bude muset přidat do layoutu, jinak netteForms.js a debug bar nebudou fungovat?
Co když někdo používá jiný javascriptový framework a zároveň chce použít netteForms.js?
- nanuqcz
- Člen | 822
Mě už se takhle jako běžnému programátorovi moc nelíbí, že si musím
do stránek linkovat nějaký netteForms.js
. Nejlepší to promě
bylo v Nette 0.9, kde si Nette potřebné javascripty (nějak)
natahalo samo.
Pokud by to tak šlo vymyslet i u jQuery (Nette by si nějakou verzi jQuery
tahalo samo někde z hlubin složky Nette
, zároveň by
programátorovi nedělalo problém si v <head>
natahat,
třeba starší, verzi jQuery), pak by to byl podle mě velký přínos. Toť
můj názor. Otázka je, jestli to tak jde vůbec udělat.
Editoval xxxObiWan (16. 6. 2011 13:07)
- Honza Marek
- Člen | 1664
jQuery se dá natáhnout krásně líně až v případě potřeby.
if (!jQuery) {
var jQueryScript = document.createElement('script');
jQueryScript.setAttribute('src', 'http://gugl.com/jquery.js');
document.getElementsByTagName('head')[0].appendChild(jQueryScript);
jQuery.noConflict();
}
- David Grudl
- Nette Core | 8227
Asi by to fungovalo takto: pokud je jQuery k dispozici (možná s ověřením nějaké major verze), tak se použije, jinak se stáhne ze CDN a umístí mimo globální prostor. To už by dnes mělo jQuery umět.
- westrem
- Člen | 398
Presun k jQuery je urcite dobry krok, ale rovnako si myslim, ze trosku pribrzdit a zamysliet sa nie je zly napad.
Podla mna treba vyriesit nasledovne otazky // problemy:
- nevnucovat uzivatelom Nette CDN, ale umoznit im appendovat lokalne verzie
- v pripade CDN dovolit jednoduchym sposobom urcit, ktora verzia sa ma linkovat
- nelinkovat jQuery viackrat – tzn. ak uz je uvedena v layoute alebo nejakom snippete nelinkovat ju aj pre potreby debug baru
- vyriesit kolizie s inymi FW ako napr. Scriptalicious, Prototype apod.
- 22
- Člen | 1478
@westrem:
- Nette má nějaké CDN?
- Nette by němělo nijak uživatele omezovat v použití verze jQuery, čili verzi si určí každý sám příslušným linkem na CDN, pokud není připojeni k internetu, stačil by nějaký <noscript>, který na tuto skutečnost upozorní programátora, že si má knihovnu stáhnout manuálně.
- jQuery se ukladá do cache – teoreticky je to tedy jedno.
- jQuery má podporu pro kolize s jinými knihovnami
Editoval 22 (16. 6. 2011 13:59)
- Matúš Matula
- Člen | 257
Este doplnim, ze problem pre intranetove app nie je. Da sa specifikovat local fallback v pripade nedostupnosti CDN
{* http://blogs.sitepoint.com/whats-new-in-jquery-16/ *}
{* load jQuery from CDN or fallback to local copy *}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"></script>
<script>window.jQuery || document.write("<script src='{!$basePath}/js/jquery-1.6.1.min.js'>\x3C/script>")</script>
- juzna.cz
- Člen | 248
Mela by byt moznost velice jednoduse zmenit CDN za lokalni url, je dost firem ktere se „boji“ tahat cizi javascript do svych stranek. A zaroven i dat pozor na ty ostatni js frameworky (jQuery.noConflict), u nas se pouziva MooTools, tak potrebuji aby debug panel fungoval i s tim.
- Honza Marek
- Člen | 1664
Když si to nějak vložíte sami, tak už to Nette nebude natahovat. Co je na tom k nepochopení?
- Honza Kuchař
- Člen | 1662
Bylo by určitě moc fajn, kdyby to jQuery existovalo jen v kontextu debugbaru. (i za cenu toho, že bude načítáno 2x)
Tedy nějak takto:
(function(){
// pokud není jQuery k dispozici
// umístit se zdrojáky jQuery - které bude tím pádem čistě lokální
// De bude kód debugbaru
})();
// zde může být cokoliv dalšího. Toto už nebude ovlivněno debugbarem...
- David Grudl
- Nette Core | 8227
Tak ještě jednou: Asi by to fungovalo takto: pokud je jQuery k dispozici (možná s ověřením nějaké major verze), tak se použije, jinak se stáhne ze CDN a umístí mimo globální prostor. To už by dnes mělo jQuery umět.
- joe
- Člen | 313
viz #12, děláte, jakoby existovala jen funkce jQuery a nic víc. Ne každý jQuery používá, tak proč ho nutit třeba kvůli validacím formuláře? Kdo chce, ten si ten skript na validování může upravit s pomocí jQuery a chyby ve formuláři zobrazit přesně tak, jak potřebuje. Není třeba, aby každý web postavený na Nette měl stejný způsob zobrazení oznámení chyb, že ne? :-)
A debugbar na jQuery, ten nebudu moci používat když nebudu připojený k internetu?