ugrás a tartalomhoz

The State of JavaScript

MadBence · 2012. Okt. 11. (Cs), 12.11
Összefoglaló a JavaScript jelenlegi helyzetéről és a benne rejlő lehetőségekről.
 
1

gc

Hidvégi Gábor · 2012. Okt. 11. (Cs), 15.02
Átnéztem az egészet, de igazából csak egyvalami hozott lázba, az egyik példában lévő gc() függvény, bővebb szöveg nélkül a példák alapján nem éreztem, hogy sokkal könnyebb vagy hatékonyabb ezektől a munka.

De igazán a forráskódban lévő document.write() teszi komollyá az egészet - most akkor szeretjük vagy nem szeretjük? : )
2

Na?

Pepita · 2012. Okt. 11. (Cs), 21.21
most akkor szeretjük vagy nem szeretjük?
Költői kérdés - tessék megválaszolni! Jó kis vitaindító lehet... :)
Szerintem (kisarkítva): ha gyors kell - szeretjük, ha szép kell - utáljuk.
5

Na

Hidvégi Gábor · 2012. Okt. 16. (K), 09.22
Mindig az idő dönti el, mi a helyes és mi nem (jópár éve az innerHTML-re fújt boldog-boldogtalan, aztán kiderült, hogy ezerszer gyorsabb a DOM műveleteknél), rengeteg felkapott probléma csak azért nevezhető annak, mert valakinek nem tetszik a megoldás. Szerintem semmi baj nincs a document.write-tal, ha valakinek ez tetszik, használja.
7

Már azon kívül, hogy törli az

tgr · 2012. Okt. 18. (Cs), 11.16
Már azon kívül, hogy törli az egész dokumentumot, ha rosszkor hívod meg, nem működik XHTML-ben, és hibát okozhat régi IE-ben. De kétségkívül vannak értelmes felhasználási módjai (pl. most hallottam egy előadáson, hogy a facebookosok azt próbálják megoldani, hogy lehet a like gombot úgy betölteni, hogy az onload-ot ne tartsa fel, és erre valami trükkös javascript:false iframe + document.write megoldást próbálgatnak.
8

A logikát továbbvíve akkor ne

Hidvégi Gábor · 2012. Okt. 18. (Cs), 11.45
A logikát továbbvíve akkor ne használjunk például autót se, mert ha rossz felé vezeted, elüthetsz vele embereket. Analógia: a törvény nem ismerete nem mentesít a betartásától.

Az eredeti felvetésemben az ilyen "mit (ne) használjunk, mert nagyon jó/rossz" divathullámok jogosultságát kérdőjeleztem meg. Úgy látszik, mégsem annyira gonosz a document.write, ha még 2012-ben is használják, valószínűleg azért, mert a problémára - az adott ismereteikkel - ez a leghatékonyabb megoldás.

Ne használj document.write-ot. Ne használj innerHTML-t. Használj teszteket. Használj OOP-t. Használj keretrendszereket. Használj Javascriptet. Használj animációkat. Használj ingyenes szolgáltatásokat. A Microsoftot kerüld el messzire. Ne használj Internet Explorert. Ne használj táblázatokat.
9

Elég vicces összemosni a ne

inf · 2012. Okt. 18. (Cs), 14.38
Elég vicces összemosni a ne használj document.write-ot a használj OOP-vel, meg hasonlókkal :D
10

Mi vicces? Mi hasznos?

Hidvégi Gábor · 2012. Okt. 18. (Cs), 16.23
Ezt majd az idő eldönti. A középkorban is megmosolyogták azokat, akik szerint a Föld nem lapos, hatvan éve pedig hormonkezeléssel csökkentették a libidóját a magát homoszexuálisnak valló Turingnak.

Csak akkor olvass tovább, ha be vagy kötve, mert ez rázós lesz.

Az utóbbi húsz évben, amióta programozással foglalkozom, számtalanszor futottam neki az OOP-nek, de egyszer sem láttam, hogy ez mivel eredményez jobb kódot, és mitől lesz hatékonyabb a munkám így. Egyszerűen semmi pluszt nem adtak hozzá az OO elvek, nélkülük is maradéktalanul el tudtam végezni a feladatot.

Sőt, továbbmegyek.

Ma jöttem rá, hogy a dokumentumtól különváló .css fájlok annak az eredménye, hogy az adatok egyben vannak a megjelenésükkel (a HTML kódban). Ha különválasztjuk őket egy sablonrendszerrel (akár kliens, akár szerveroldalon), akkor hatékonyabb és gyorsabban megjeleníthető HTML-t írhatunk inline stílusokkal. A .css fájlokban maradna pár definíció, jellemzően az :nth-child választók.
11

Én elég sokat találkozom az

inf · 2012. Okt. 18. (Cs), 16.29
Én elég sokat találkozom az OO előnyével, amikor hozzá kell nyúlnom egy-egy kódhoz. Egyébként a html-nek meg a css osztályoknak semmi köze nincs az OO-hoz.
12

Akkor nem volt érthető, amit

Hidvégi Gábor · 2012. Okt. 18. (Cs), 16.37
Akkor nem volt érthető, amit írtam. A lényeg, hogy az épp favorizált dolgok nem biztos, hogy mindenki számára hatékony eszközök. A te tapasztaltaid szerint az OO hasznos, az enyémek szerint meg nem, mégsem nevetlek ki emiatt.
13

Jajj már :D Lehet, hogy nem

inf · 2012. Okt. 18. (Cs), 17.41
Jajj már :D
Lehet, hogy nem voltam teljesen érthető, az, hogy javascriptben a document.write-ot használod vagy az innerHTML-t nagyságrendben köszönőviszonyban sincs egy olyan döntéssel, mint hogy OO-t használsz vagy struktúráltat. Egyébként nem mondanám divathullámnak az OO programozást, legalábbis elég hosszú egy divathullám kéne, hogy legyen. Egyszerűen nagyobb projekt méreteknél minden szempontból sokkal jobb, mint egy struktúrált megoldás. Ennyi.
14

A logikát továbbvíve akkor ne

tgr · 2012. Okt. 20. (Szo), 06.34
A logikát továbbvíve akkor ne használjunk például autót se, mert ha rossz felé vezeted, elüthetsz vele embereket.


Ha van olyan autó, amit rossz felé vezetve sem üthetsz el embereket, nincs jelentős hátránya, és azonos költségvonzat és hozzáférhetőség mellett mégis a hagyományos autót választod, akkor nem csak ostoba vagy, hanem erkölcstelen is. Jelenleg nincs ilyen autó, de viszonylag intenzíven kutatott terület.

A document.write egyszerűbb eset, mert annak a használatával nem tudsz harmadik személynek kárt okozni, csak magadnak és a megrendelődnek, az meg egyéni szociális probléma. De azért népszerű, nagyrészt kezdőknek szóló webprogramozó fórumokon az egyéb lehetőségekkel egyenrangúként beállítani nem szerencsés dolog.

Ne használj document.write-ot. Ne használj innerHTML-t. Használj teszteket. Használj OOP-t. Használj keretrendszereket. Használj Javascriptet. Használj animációkat. Használj ingyenes szolgáltatásokat. A Microsoftot kerüld el messzire. Ne használj Internet Explorert. Ne használj táblázatokat.


Ez egy elég eklektikus felsorolás lett.
  • document.write: katasztrofális hibát okoz xhtml módban, katasztrofális hibát okoz, ha a dokumentum már betöltődött, egzotikus hibákat okozhat különféle böngészőkben (pl. WYCIWYG URL-ek Firefoxban); majdnem mindig script/style beszúrásra használják, amire a DOM manipuláció sokkal jobb megoldás. Sajnos tele van a net bénán megírt 3rd-party adbanner és hasonló scriptekkel, amik ezt használják, és ezzel azt szivatják meg, akinek integrálnia kell őket; abszolút hasznos ökölszabály, hogy ne használd. Aki rejtett iframes asset preloadert ír, annak úgyis megvan a tudása ahhoz, hogy eldöntse, mikor követi az ökölszabályokat.
  • innerHTML: ezt nem tudom, honnan vetted, ilyet szerintem csak nagyon eltévedt egyedek állítottak (lásd pl. a reakciókat erre az SO kérdésre). Ésszel kell használni (két típushiba szöveg beállítására használni, escapelés nélkül, illetve az e.innerHTML += ... DOM elembeszúrás helyett, ami megöli az eseménykezelőket), meg vannak fura inkompatibilitások (mint pl. a remek IE6 innerHTML/select bug), de általában semmi gond vele, illetve nincs is nagyon jó alternatívája.
  • tesztek/OOP: kíváncsi lennék, milyen nagyobb lélegzetvételű kódot írtál, ami nem objektumorientált, nincsenek hozzá tesztek, és úgy gondolod, hogy az utódodnak nem fog problémát okozni a karbantartása. Nyilván egy Hello Worldhöz nem kell osztály és unitteszt, és bizonyára vannak olyan részterületei a webprogramozásnak, ahol hello worldnél nem sokkal bonyolultabb kódokat kell írni, de talán nem ez a tipikus.
  • keretrendszerek: a fentihez hasonlóan, kicsit is bonyolult feladatnál ha nem használsz keretrendszert, az effektíve azt jelenti, hogy lefejleszted a sajátodat. (Vagy spagetti-kódot írsz...) Kellően nagy munkáltatónak ez akár meg is érheti (és elég jó fejlesztőket tud foglalkoztatni ahhoz, hogy vállalható legyen a végeredmény), de nem ez a tipikus.
  • javascript: nem vagyok benne biztos, milyen divathullámra gondolsz, ez inkább üzleti döntés, sokkal jobb felhasználói élményt nyújt, viszont extra munka. Professzionális, nem kizárólag olvasásra szánt oldal mindenesetre elképzelhetetlen JS nélkül (pl. a kliensoldali form validáció egy nagyon alapvető dolog).
  • animációk: lásd javascript.
  • ingyenes szolgáltatások: nem tudom, milyen divatról beszélsz. Teljesen változó, mikor mit éri meg kiszervezni külső szolgáltatóhoz, és hogy az ingyenes-e.
  • Microsoft: régebben volt ilyen divat, de általános felső/gimnázium alsó körül akkor is kinőtte szerintem az emberek nagy része.
  • IE: amikor maga a Microsoft mondja, hogy "friends don't let friends use IE6", akkor nem nagyon van miről vitatkozni.
  • táblázatok: a tableless design mozgalom szerintem abszolút hasznos volt és rengeteget használt a webnek, a CSS gyors fejlődésében jelentős része volt. Nyilván nem kell szentírásként kezelni, ma is vannak olyan esetek, amiket frusztráló táblázat nélkül megoldani (pl. változó méretű tartalom függőlegesen középre pozicionálása változó méretű konténerben), de ritkák, és az esetek 99%-ában a táblázatmenetes layout jobb megoldás: kisebb és olvashatóbb a kód, könnyebb módosítani és karbantartani, kiszámíthatóbb a böngészők viselkedése, gyorsabban renderelődik, használhatóbb mobilon.


Általánosságban az "én akkora önálló gondolkodó vagyok, hogy kényszeresen az ellenkezőjét gondolom mindennek, ami népszerű" ugyan mulatságos dolog, de az ilyen önkifejezés megfelelő terepe egy blog, nem egy kezdőknek is szóló fórum.
15

Általánosságban az "én akkora

Hidvégi Gábor · 2012. Okt. 20. (Szo), 15.58
Általánosságban az "én akkora önálló gondolkodó vagyok, hogy kényszeresen az ellenkezőjét gondolom mindennek, ami népszerű" ugyan mulatságos dolog, de az ilyen önkifejezés megfelelő terepe egy blog, nem egy kezdőknek is szóló fórum.
Sajnálom, ha nem fogalmazok érthetően, ez sokszor szándékos, hogy gondolkozzanak el rajta az emberek. Ha nem lenne soha senki, aki felteszi a kérdést: "Miért kell ennek így és így lennie? Próbáljunk ki valami mást!", akkor ma is ott vakarásznánk egymást a fán. Mennyivel egyszerűbb volt már akkor? Csak ki kellett nyúlni a banánért, semmi felelősség, ehhez képest ma meg azon aggódhatsz minden nap, hogy másnap lesz-e munkád.

Kíváncsi vagyok: az általad felsoroltak negatívumait is le tudnád írni? Be tudnád bizonyítani az ellenkezőjét annak, amit írtál?
3

fura

blacksonic · 2012. Okt. 15. (H), 21.12
kicsit olyan erzesem van, mintha utolag mindent bele akarnanak tuszkolni a nyelvbe...
4

Hát pár dologgal nekem is,

inf · 2012. Okt. 16. (K), 01.12
Hát pár dologgal nekem is, viszont van jó sok olyan, amire tényleg szükség volt eddig is.
6

Én alapvetően úgy fogtam föl

MadBence · 2012. Okt. 16. (K), 15.06
Én alapvetően úgy fogtam föl ezeket a szlájdokat, hogy van a JS most, és ebből az állapotból merre lehet elindulni. Szerintem a szerző sem mondott véleményt, hogy X vagy Y lenne a helyes irány. Kísérletezés nélkül sosem tudjuk meg, "mi lett volna ha".