Autor Zpráva
joe
Profil
Ahoj, celkem by mě zajímalo, jakou strukturu používáte pro externí soubor v JavaScriptu, jde mi o hlavní soubor se skripty, (ne JavaScript knihoven, který máte určitě nějakým způsobem oddělený), kde musíte řešit situace "tohle proveď na jedné stránce a tohle na jiné". Struktura pak může být podobná této:

$(document).ready(function() {
  
  var $el = $("#myElement");
  if ($el.length > 0) {
    // zde proveď kód pracující s tímto elementem (ten bude například na úvodní stránce)
  }
  
  var $el2 = $("#myElement2");
  if ($el2.length > 0) {
    // zde proveď kód pro jiný element, ten se bude například nacházet na stránce s kontakty
  }
  
});

Při rozsáhlém webu, nejen že se kód hojně rozrůstá, ale stává se rychle nepřehledným a zorientovat se v kódu, který má třeba 2000 řádků a k tomu není dobře komentován, není zrovna moc reálné a zabere nějaký čas. Zajímal by mě tedy váš postup, spíše na "větších" stránkách.

Mnou uvedený způsob má celkem závažný problém, v případě, že se web spravuje přes CMS systém, kde si uživatel může napsat HTML jaké chce, může se tak lehce stát, že se kód pro JavaScript rozbije tím, když vytvoří například nějaký element s ID, se kterým já počítám, že je jedinečný na celém webu.

Jako další možnost, kterou bych asi nejvíce preferoval by bylo volání JavaScriptu přímo v HTML - za požadovaným elementem. Chci validaci daného formuláře? Za tag </form> napíšu <script>validateForm("#myForm");</script>

Díky za vaše názory, postupy a všechny možné rady, jak udělat JavaScript hezčím.
Str4wberry
Profil
Docela se mi osvědčil postup používat atribut id jen pro JavaScript. Šance na vytvoření duplicitního elementu se tím výrazně snižuje a z HTML kódu je jasně patrné s čím JavaScript manipuluje.
Chamurappi
Profil
Reaguji na joa:
volání JavaScriptu přímo v HTML - za požadovaným elementem
Tuto možnost používám. Nejen proto, aby se v externím skriptu dalo vyznat, ale i proto, že při volání často potřebuji parametry, které v okamžiku úpravy JS neznám — buď z důvodu, že je generuje dynamicky server (typicky serverový čas), nebo z důvodu, že je chce později upravovat někdo, kdo není já (typicky znění hlášek při kontrole formuláře).

v případě, že se web spravuje přes CMS systém, kde si uživatel může napsat HTML jaké chce
Tohoto rizika jsem se na mých větších stránkách zbavil tím, že jsem vyrobil vlastní WYSIWYG, který nedovoluje vložit nic, s čím by zbytek kódu nepočítal. Atributy id umožňuji použít i na kotvy, ale dávám jim prefix.

zorientovat se v kódu, který má třeba 2000 řádků
Opravdu dlouhé skripty si většinou rozděluji do více malých souborů. Ve vlastních projektech se mi osvědčil postup, kdy mám hlavní skript rozdělený na dvě větve, schématicky:
if(debug)
{
  načti("jeden.js");
  načti("druhý.js");
  načti("třetí.js");
}
else
{
  // strojově poskládaná zmačkaná verze výše načítaných JS
}
Na poskládání jsem si napsal vlastní skriptík, pro který je takovýto soubor vstupem i výstupem zároveň. Při skládání se dělá i záloha předchozí verze. (Určitě existují více profi postupy, ale tenhle mi stačí.)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0