« 1 2 »
Autor Zpráva
joe
Profil
Ahoj,

rád bych věděl, jakou používáte adresářovou strukturu pro vaše projekty? Třeba i v práci. Kam ukládáte CSS, JavaScript, fonty, obrázky (layoutové a obsahové). Zkoumal jsem různé CMS a weby, ale pořád to není ono. Záměrně zatím nebudu uvádět žádné své tipy na vítěze :)

Díky
Taps
Profil
joe:
možná hledáš architekturu MVC - viz např. http://doc.nette.org/cs/presenters
joe
Profil
Taps:
Ne, jednak nemyslím návrhový vzor, ale myslím skutečně adresářovou strukturu a ne ani tak pro aplikaci jako takovou (tj. třídy, aplikace, konfigurace, apod.), ale strukturu pro obrázky, JavaScript, různé soubory atp., viz to, co jsem napsal :)
Sir Tom
Profil
joe:
Rozděl jsi ty soubory podle druhů (obrázky, js, css, viz to - co jsi napsal...), jednotlivé druhy můžeš ještě rozdělit (např. u js na vlastní js kódy a cizí js kódy) - takže si vytvoříš několik skupin a podskupin a ty pak vložíš do různých souborů (popř. balíčků, jmených prostor, ...).
Camo
Profil
joe:
Ja mám taký hybrid odvodený z MVC.
Mám jeden kontróler a jednotlivé moduly mám ako adresáre. Každý ten modul má vlastný JS, IMG, Template a pod. adresár. Ja som usúdil, že nieje dobré to mať všetko v jednom napr. IMG adresáry, ale neni ani dobré mať všetko rozsekané na 1000 podadresárov. Malo by to byť niečo medzi tým. Proste ak chceš upraviť JS napr. na hlavnej stránke tak vieš, že to máš napr. v súbore OBSAH/JS/default.js. A eshop bude mať trebárs ESHOP/JS/kosik.js.
Takto mi to príde najlogickejšie. Ale možno existujú aj lepšie návrhy...
Chamurappi
Profil
Reaguji na joa:
CSS, JS, flashe a obrázky dáváme v práci na separátní doménu, protože nepotřebují cookies. Každý typ dat je ve svém podadresáři.
Obsahové obrázky jsou v podadresářích podle času a podle formátu (a také na jiné doméně).
aDAm
Profil
Reaguji na joa:
pokud ti jde o strukturu staci files tak třeba takto:

web_dir
....scripts
.........core
.............vlastni js knihovny co sou prave pro to dane cms
.........nette
.............js soubory co sou soucasti nette
.........jquery
.............plugins
.................ui
....................js jquery pluginy co se tykaji ui
.................forms
....................js jquery pluginy co se tykaji formularu
.................tables
....................js jquery pluginy co se tykaji datatables atd.
.................core
....................js pro samotne jquery core
....themes
.........theme_1
..............images
..............css
..................css soubory daneho tematu
..............fonts
..................fonty

atd..
joe
Profil
Možná by bylo dobré u jména zobrazovat počet příspěvků, třeba bych tu pak některým nebyl za úplného začátečníka :-)

Camo:
Takto mi to príde najlogickejšie. Ale možno existujú aj lepšie návrhy...
Je mi úplně jedno jakýkoli doporučovaný návrh, řídím se sám sebou a používám to, co se mi líbí, asi tak jako většina a jsem hodně vybíravej.

Čekal jsem odpovědi jako od aDAma, ale děkuju za všechny, moc jsem se zatím neinspiroval :-)

Sir Tom:
Rozděl jsi ty soubory podle druhů (obrázky, js, css, viz to - co jsi napsal...), jednotlivé druhy můžeš ještě rozdělit
Neptám se jak to můžu rozdělit, ptám se na to, co používáte.

Camo:
Možná šikovné, ale zase se mi to zdá méně přehledné. Podobně to řeší třeba v PrestaShopu, kdy něco dají přímo k modulům, něco jiného do tématu. A pak aby se v tom člověk vyznal, kde co je. Takovýho stavu rozhodně nechci nikdy docílit.

Chamurappi:
A používáte tu doménu pro více projektů? Tím myslim, jestli třeba jedna knihovna (na jedné URL) se používá ve více projektech? Pokud ano, co děláte, pokud takový server spadne? Nepojede žádný projekt? :-)

aDAm:
Zdá se mi to moc roztahané a složité. Pokud píšu JavaScript a určuju si u něj jmenné prostory, dávám ho pak do složek odpovídající jmennému prostoru, něco jako balíky v Javě.

---

www
    index.php / index.html
    (public|files)/
        css /
            (global|main|common).css
            print.css
        js /
        images /
            layout /
            content /
1Pupik1989
Profil
No já mám v základu 4 adresáře a to "css,js,images,gallery" (pokud je tam galerie, či cokoliv kde neukládám obrázky přímo pro web). V js mám něco jako "graphics.object.js nebo math.matrix4.js". Zkrátka první mám název skupiny do které ten soubor patří a druhý konkrétní název v té skupině. Dělám to tak s většinou souborů (javascript, php) a nikdy jsem v tom neměl zádrhel.
Str4wberry
Profil
Nevím, jestli lze něco universálního doporučit.

Pokud není web obří, může stačit mít jeden CSS soubor a jeden JS soubor i pro vývoj. Potom uspořádání css/styl.css a js/javascript.js trochu ztrácí smysl.

Problém je, že se často dopředu neví, zda bude web velký nebo malý. Další problém je s cizími skripty, které mají nějakou svou adresářovou logiku. Třídit si je do svých adresářů a upravovat v nich cesty je dost nepraktické.

Na tvém nástřelu se mi subjektivně nelíbí obrázky k designu a obrázky k obsahu ve společné složce.
aDAm
Profil
reguji na joa:
no můj návrh je možná roztahaný, ale to z toho důvodu že mám nějaké globální JS, které je více méně založené jen na jQuery, namespace tam nehrajou a tyto js jsou společné jak pro admin, tak pro fornt a samo pro X instalovaných projektů. Zbytek je v themes rozděleno podle jednotlivých témat a tam jsou pak podsložky pro images, fonts, css a js co už se týká konkrétního tématu. A pak je ještě v rootu webu složka media do které se nahrávají fota, videa atd pro konkrétní webovou prezentaci, jednoduše media položky obsahu webu.
Camo
Profil
joe:
Úprimne povedané, ja som raz skúšal preskúmať štruktúru Joomly a dodnes nechápem, ako sa im mohlo podariť vytvoriť takú obludu. Prestashop bude asi podobný, ale ten nepoznám...
1Pupik1989
Profil
Str4wberry: Obrázky k designu a obrázky k obsahu beru jako jedno a to samé. Rozlišuji pouze obrázky které přidal uživatel a ty které nepřidal (neměnné, pevně dané layoutem, zkrátka součást stránky). Nicméně by asi nebyl problém složku images dále rozčlenit. Spíše bych ale použil něco na styl jak jsem psal, čili rodič.název_potomka.koncovka
aDAm
Profil
Reaguji na 1Pupik1989: brát obrázky co tvoří layout(design) a obrázky co tvoří obsah jako to same je IMO hloupost už jen proto jak se na web aplikují - kaskády vs img tagy.
margin
Profil *
1Pupik1989:
neměnné, pevně dané layoutem, zkrátka součást stránky
To jsou snad obrázky designu.

aDAm:
Třebas logo je součást obsahu, vkládá se jako img a patří do layoutu stránky. Dávat logo jako pozadí je hloupost.
aDAm
Profil
Reaguji na margin
to záleží jak se na to logo díváš a jak je celkově projekt postaven. V okamžiku kdy je to nějaké CMS co je založeno na tematech tak to logo je v obsahové části a tudíž dostupné uživateli.
Str4wberry
Profil
Reakce na 1Pupika1989:
Já takové obrázky beru jako nějaká uživatelská data, která mě při vývoji nezajímají, tedy je vhodné, když se pletou co nejméně.

Reakce na margina:
Třebas logo je součást obsahu, vkládá se jako img a patří do layoutu stránky. Dávat logo jako pozadí je hloupost.
Proč je to hloupost?
margin
Profil *
Str4wberry:
Protože logo je obsah. Logo je něco jiného, než ilustrační obrázek v hlavičce, ten patří do CSS.
Chamurappi
Profil
Myslím, že dává smysl rozdělovat soubory do adresářů nikoliv přímo podle typů, ale podle lidí (nebo přesněji profesí), kteří s nimi pravidelně pracují. Je to vlastně jen prodloužení výše zmíněné logiky, že uživatelem dodané obrázky jsou jinde než grafika webu. To je moje, tohle je tvoje, tamto jeho… každý si hlídá své teritorium, každý ví, za kým přibližně jít, když chce něco změnit nebo když se něco rozbije. Pokud se kodér stará jen o CSS, nechť má oddělený adresář pro CSS, pokud pracuje i s obrázky, měl by mít společný adresář na obrázky i CSS (klidně si může dělat podadresáře, ale spíš podle dílčích částí projektu než podle typů). Pokud je vedle redakční systém, kde se o všechno starají serveroví programátoři, měly by být související styly zase někde při ruce u něj a ne u zbytku CSS. Udržení jisté typově-logické struktury je důležité jen pro nováčky, aby se rychleji zorientovali, tudíž pokud projekt nestřídá přehnaně často pracovní síly, je komfort při vývoji přínosnější.

Sám si na svých malých webech dávám CSS i JS do jednoho adresáře, protože je často měním oba naráz. Tady na DJPW to vlastně je také tak.


Reaguji na joa:
A používáte tu doménu pro více projektů?
V podstatě ano. Ale všechny projekty jsou víceméně naše.

Pokud ano, co děláte, pokud takový server spadne?
Mrtvé brouky :-)
Fyzicky to není jen jeden server, takže stoprocentní pády jsou extrémně vzácné (tím spíš, že je to jen hloupé skladiště souborů).

Nepojede žádný projekt?
Nepojedou styly a skripty. To není zase taková tragédie.


Reaguji na aDAma:
tyto js jsou společné jak pro admin, tak pro fornt a samo pro X instalovaných projektů
Pak se nabízí otázka, proč vlastně nejsou spojené v jednom souboru…
Str4wberry
Profil
Reakce na margina:
Protože logo je obsah. Logo je něco jiného, než ilustrační obrázek v hlavičce, ten patří do CSS.
Dobrá. Ale hodilo by se také v tom vidět nějaký reálný přínos než jen vyhovění definici.

1) CSS obrázek i <img> obrázek se návštěvníkovi zobrazí stejně.
2) Uživatel obrazové čtečky asi <img> obrázek loga neocení.
3) CSS obrázkem se ušetří jeden HTTP požadavek.
4) CSS obrázek je flexibilnější a vhodnější pro responsive design. Lze mít několik variant (velikostí) loga a dle velikosti okna prohlížeče je vyměňovat než se spoléhat na nekvalitní zmenšení <img>.
5) Z posice vyhledávače asi také není logo příliš zajímavé.

Co tu máme dál? Komplikovanější možnost obrázek uložit, nezobrazení bez stylů, to jsou spíš detaily.

Tedy mi vychází, že CSS logo rozhodně hloupostí není.
joe
Profil
Rád bych si vymyslel takovou strukturu, která bude snadno rozšiřitelná a ponese hezké a zároveň odpovídající názvy adresářů.

Str4wberry:
Potom uspořádání css/styl.css a js/javascript.js trochu ztrácí smysl.
Nemyslím si, že by ztrácelo smysl. Kdykoli může přijít požadavek na další rozšíření, klasicky třeba galerie - nutnost nějakého lightboxu (nebo jeho klonu) a ten už se zase skládá z více souborů (CSS, JS, obrázky). Otrava ale je, když taková knihovna "nerespektuje" moji adresářovou strukturu, protože pak je třeba cesty v CSS přepsat a nebo třeba celou knihovnu přesunout do zvláštního adresáře, kde budou knihovny, ...

1Pupik1989:
Obrázky k designu a obrázky k obsahu beru jako jedno a to samé
Málokdo to bere jako jedno a to samé.

Co když budeš mít nějaké produkty a k nim jednotlivé obrázky? Dáš je do adresáře, kde máš ostatní obrázky a nebo je radši zanoříš? Co když pak dojde k rozdělení prodktů na letní a zimní kolekci? ...

Chamurappi:

dávám CSS i JS do jednoho adresáře, protože je často měním oba naráz
Často měnit naráz lze i soubory, které jsou v odlišných složkách :-) Ale chápu, není ideální se pořád překlikávat do jiných adresářů. Pokud jde o jednoduchý web, proč ne...

Mrtvé brouky :-)
Já něco podobného navrhoval, zamítlo se to z důvodu toho, že to je nesmysl, že se bojí, co se stane s jinýma webama, kdyby náhodou to "hloupé skladiště souborů" vypadlo z prozovu. Takže raději kopírujeme tisíce stejných souborů z projektu do projektu a pokud něco měníme, tak jen tam, kde to právě měníme a ne všude pro všechny projekty naráz.

Nepojedou styly a skripty. To není zase taková tragédie.
Pro klienta nepojede web, velká tragédie a určitě spousta e-mailů a telefonátů.

Str4wberry:
2) Uživatel obrazové čtečky asi <img> obrázek loga neocení.
Z jakého důvodu? Teď z hlavy přesně nevím, co hlasová čtečka ohlásí, nalezne-li obrázek, co řešení takové, že na úvodní stránce by byl tag <img> nahoře a na ostatních dole?

3) CSS obrázkem se ušetří jeden HTTP požadavek.
Nevidím důvod proč, požadavek se přece vyšle, ať se načítá obrázek z HTML nebo z CSS nebo ne?

---

CSS obrázek je flexibilnější a vhodnější pro responsive design
Bohužel se v dnešní době "musí" (vypadá to hezky) vytvářet obrázky pro různá zařízení, jinak to jsou lehce rozmazané fleky místo hezkých obrázků.
Str4wberry
Profil
Otrava ale je, když taková knihovna "nerespektuje" moji adresářovou strukturu, protože pak je třeba cesty v CSS přepsat a nebo třeba celou knihovnu přesunout do zvláštního adresáře, kde budou knihovny, ...
Což je v podstatě každá knihovna. A člověk pak stojí před dilematem, zda si takovou knihovnu roztřídit do svých adresářů (a tím značně zkomplikovat budoucí upgrade knihovny), nebo na takové členění resignovat.

Z jakého důvodu? Teď z hlavy přesně nevím, co hlasová čtečka ohlásí, nalezne-li obrázek, co řešení takové, že na úvodní stránce by byl tag <img> nahoře a na ostatních dole?
Tak teoreticky, kdyby bylo v altu loga něco jako „Logo diskuse jak psát web, skládá se z fotografie bílé klávesy á“, tak by to asi výhoda byla. :–)

Nevidím důvod proč, požadavek se přece vyšle, ať se načítá obrázek z HTML nebo z CSS nebo ne?
Předpokládám, že na stránce bude více obrázků, tedy půjde logo přidat mezi ostatní obrázky do společného obrázku.
margin
Profil *
Str4wberry:
Předpokládám, že na stránce bude více obrázků, tedy půjde logo přidat mezi ostatní obrázky
To nevylučuje použití IMG.
http://jsfiddle.net/gPYqk/
joe
Profil
margin:
To nevylučuje použití IMG.
Tohle řešení se mi teda vůbec nelíbí, kromě toho, že když stránku vytiskneš, může se ti místo loga vytisknout celá plachta s obrázkama a taky když pak budeš hledat logo, může být zaindexovaná opět stejná plachta.

Str4wberry:
Předpokládám, že na stránce bude více obrázků ...
Ok, nedošlo mi, že v tom spojení myslíš sprite.
1Pupik1989
Profil
joe:
Málokdo to bere jako jedno a to samé.
>
>
Co když budeš mít nějaké produkty a k nim jednotlivé obrázky? Dáš je do adresáře, kde máš ostatní obrázky a nebo je radši zanoříš? Co když pak dojde k rozdělení prodktů na letní a zimní kolekci? ...

Ovšem obrázky produktu beru jako uživatelsky napsané, čili je mám ve složce gallery jak jsem psal výše. :) viz.:[#9]
Chamurappi
Profil
Reaguji na joa:
Ale chápu, není ideální se pořád překlikávat do jiných adresářů. Pokud jde o jednoduchý web, proč ne...
Nabízí se otázka, jestli vlastně existují jiné než jednoduché weby. Občas mi připadá, že komplikovaní jsou jen tvůrci webů :-)
Velké weby se skládají z menších jednoduchých celků, na nichž obvykle pracují různí lidé, a na ně jde také pohlížet odděleně. Třeba když vyrábím nějaký ovládací prvek do velkého redakčního systému, tak si také vyrobím adresář spíš speciálně pro něj (pro obrázky, CSS i JS), než abych jednotlivé součásti roztahal do adresářů vyhrazených pro dané typy souborů. Na rozpoznání typu souboru stačí přípona.

co se stane s jinýma webama, kdyby náhodou to "hloupé skladiště souborů" vypadlo z prozovu
Ono by to hloupé skladiště nemuselo být fyzicky na jiném serveru. Může padat synchronně se zbytkem webu a přesto být na jiné doméně.

Pro klienta nepojede web, velká tragédie a určitě spousta e-mailů a telefonátů.
Nebo má většinu statického obsahu v keši a výpadku si skoro nevšimne.
aDAm
Profil
reaguji na Chamurappiho:
Pak se nabízí otázka, proč vlastně nejsou spojené v jednom souboru…
protože se s nimi pracuje a sám musíte uznat že se lépe pracuje s oddělnými daty než kilometrovou nudlí. Samotná aplikace pak vše "slepí" a minifikuje sama.
peta
Profil
[#20]
6) Obrazek v css nabira 1/3 na velikosti.
7) Obrazek v css, pokud si to nedefinujes dobre jako class, musis duplikovat, protoze css neumi skladat.
(Jen doplneni)
[#26] Priklad toho je CK editor (FCK), jako plugin ma vlastni adresare, strukturu a nezajima ho cms. Jestli je to spatne nebo dobre jsem se nerozhodl.
Dobre by bylo, kdyby nekdo oficialne stanovil strukturu, ktera by byla programatory povazovana za prijatelnou a zacali ji respektovat (ucitele ucit na skolach, jenze zatm se ti zadny takovy navyk nesnazi vnuti, jen ti vysvetli princip jazyka).
pcmanik
Profil
peta:
Odkiaľ si zobral, že veľkosť obrázku v CSS je o 1/3 väčšia? Totižto je to dosť veľké číslo a zatiaľ som o tom nepočul.
Chamurappi
Profil
Reaguji na pcmanika:
Zřejmě nějakou záhadnou úvahou dospěl k názoru, že obrázek bude v CSS zapsaný jako data:image/něco v base64. Což samozřejmě nemusí být, peta se pouze snaží naplnit svoji kvótu blábolovosti.
« 1 2 »

Vaše odpověď

Mohlo by se hodit

Příspěvky nesouvisející s webem budou odstraněny.

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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