Jaka jest konwencja nazewnictwa nazw plików javascript? [Zamknięte]

283

Czy pliki powinny być nazywane czymś z łącznikami.js, camelCased.js, czy czymś innym?

Nie mogę znaleźć odpowiedź na to pytanie tutaj .

ripper234
źródło
2
Dobrą konwencją nazewnictwa jest nazywanie nazw plików tak, jakbyś widział ten byt w kodzie. MyPluginKlasa pójdzie w MyPlugin.js. Zostanie MenuItemwłączony komponent React MenuItem.js. Inni deweloperzy będą wymagali / importowali „twój fajny moduł” i używali z niego wielu symboli, więc nazwij go cool-module.js. -
Dan Dascalescu
1
Ten post nie jest oparty na opcjach. W rzeczywistości jest to ważne. Tutaj masz przewodnik wykonany przez Google - google.github.io/styleguide/jsguide.html#file-name . (Google Style Style Guide)
zwitterion

Odpowiedzi:

184

Jedną z możliwych konwencji nazewnictwa jest użycie czegoś podobnego do schematu nazewnictwa używanego przez jQuery. Nie jest powszechnie przyjęty, ale jest dość powszechny.

product-name.plugin-ver.sion.filetype.js

gdzie para product-name+ pluginmoże również reprezentować przestrzeń nazw i moduł . versionI filetypesą zazwyczaj opcjonalne.

filetypemoże być zależne od zawartości pliku. Często spotykane są:

  • min dla zminimalizowanych plików
  • custom dla niestandardowych plików zbudowanych lub zmodyfikowanych

Przykłady:

  • jquery-1.4.2.min.js
  • jquery.plugin-0.1.js
  • myapp.invoice.js
Bryan Menard
źródło
31
Zgadzam się z tym, co powiedziałeś. Ale jest jedna rzecz, z którą obecnie walczę: co, jeśli „wtyczka” zawiera dwa słowa? Oddzielić je kropkami? jquery.myPlugin-1.0.0.js lub jquery.my.plugin-1.0.0.js lub jquery.my_plugin-1.0.0.js lub jquery.myplugin-1.0.0.js, a może nawet jquery.my-plugin- 1.0.0.js? Może dzięki temu możesz uzupełnić swoje przykłady, dzięki!
maja
4
Co z modułami AMD ? Jeśli używasz wersji w nazwach plików, musisz zmienić wiele plików, jeśli zmieni się numer wersji.
knut
3
@junior, to jest stary post, ale szybkie wyszukiwanie wykazało, że wtyczki jquery nie przestrzegają żadnej określonej konwencji. Wydaje się, że (1) łączenie słów razem, (2) przy użyciu przypadku kręgosłupa i (3) przy użyciu camelCase są używane z mniej więcej równoważną częstotliwością.
bholben
Nie zapominaj, że niektóre wersje i systemy plików mają problemy z rozpoznaniem różnicy między słowem pisanym małymi literami a tym samym słowem un upper lub camelCase (np. „ThisWord” jest taki sam jak „thisword” w niektórych środowiskach). O czym należy pamiętać podczas korzystania z konwencji camelCase.
amypellegrini,
@knut nie powinieneś ładować poprzez nazwy wersji, ale mapowanie nazwy modułu na konkretny plik wersji.
dalore
132

Nie znam żadnej szczególnej konwencji dla plików javascript, ponieważ nie są one tak naprawdę unikalne w sieci w porównaniu do plików css lub html lub innego rodzaju tego typu plików. Istnieje kilka „bezpiecznych” rzeczy, które możesz zrobić, aby zmniejszyć prawdopodobieństwo przypadkowego napotkania problemu międzyplatformowego:

  1. Użyj wszystkich małych nazw plików. Istnieją systemy operacyjne, które nie rozróżniają wielkości liter w nazwach plików, a użycie wszystkich małych liter zapobiega przypadkowemu użyciu dwóch plików, które różnią się tylko w przypadku, gdy mogą nie działać w niektórych systemach operacyjnych.
  2. Nie używaj spacji w nazwie pliku. Chociaż technicznie można to zrobić, istnieje wiele powodów, dla których spacje w nazwach plików mogą powodować problemy.
  3. Łącznik jest odpowiedni dla separatora słów. Jeśli chcesz użyć pewnego rodzaju separatora dla wielu słów zamiast spacji lub obudowy wielbłąda, jak w various-scripts.js, łącznik jest bezpiecznym i użytecznym i często używanym separatorem.
  4. Pomyśl o użyciu numerów wersji w swoich nazwach plików. Jeśli chcesz zaktualizować skrypty, zaplanuj efekty buforowania przeglądarki lub CDN. Najprostszym sposobem na użycie długoterminowego buforowania (dla szybkości i wydajności), ale natychmiastowe i bezpieczne aktualizacje podczas aktualizacji pliku JS to dołączenie numeru wersji do wdrożonej nazwy pliku lub ścieżki (tak jak jQuery robi z jquery-1.6.2.js ), a następnie podbijasz / zmieniasz ten numer wersji przy każdym uaktualnieniu / zmianie pliku. Zagwarantuje to, że żadna strona, która żąda nowszej wersji, nigdy nie zostanie udostępniona starszej wersji z pamięci podręcznej.
jfriend00
źródło
56

Nie ma oficjalnej, uniwersalnej konwencji nazywania plików JavaScript.

Istnieje kilka różnych opcji:

  • scriptName.js
  • script-name.js
  • script_name.js

są wszystkie ważne konwencje nazewnictwa, jednak ja wolę jQuery sugeruje nazewnictwo (dla wtyczek jQuery, chociaż to działa na każdym JS)

  • jquery.pluginname.js

Piękno tej konwencji nazewnictwa polega na tym, że wyraźnie opisuje ona dodawane globalne zanieczyszczenie przestrzeni nazw.

  • foo.js dodaje window.foo
  • foo.bar.js dodaje window.foo.bar

Ponieważ pominąłem wersjonowanie: powinno ono występować po pełnej nazwie, najlepiej oddzielonej łącznikiem, z kropkami między wersjami głównymi i mniejszymi:

  • foo-1.2.1.js
  • foo-1.2.2.js
  • ...
  • foo-2.1.24.js
zzzzBov
źródło
10
+1 za The beauty to this naming convention is that it explicitly describes the global namespace pollution being added., nigdy tego nie zauważyłem
Adrien Be
2
My tylko pytanie co zrobić, jeśli masz plik, który tworzy Foolub myFoo, byś po prostu nazwę pliku Foo.jslub myFoo.jsodpowiednio?
średnik
13

Pytanie w podanym linku mówi o nazywaniu zmiennych JavaScript, a nie o nazwach plików, więc zapomnij o tym w kontekście, w którym zadajesz pytanie.

Jeśli chodzi o nazewnictwo plików, jest to wyłącznie kwestia preferencji i smaku. Wolę nazywać pliki za pomocą łączników, ponieważ wtedy nie muszę sięgać po klawisz Shift, jak to ma miejsce w przypadku nazw plików camelCase; i ponieważ nie muszę się martwić różnicami między nazwami plików Windows i Linux (w nazwach Windows rozróżniana jest wielkość liter, przynajmniej przez XP).

Zatem odpowiedź, podobnie jak wiele innych, brzmi „to zależy” lub „to zależy od ciebie”.

Jedyną zasadą, której należy przestrzegać, jest zachowanie spójności w wybranej konwencji.

Pete Wilson
źródło
6
+1 za rozumowanie łącznika kontra wielbłąd
cellepo
6

Generalnie wolę łączniki z małymi literami, ale jedna rzecz jeszcze nie wspomniana jest taka, że ​​czasami miło jest mieć nazwę pliku dokładnie pasującą do nazwy pojedynczego modułu lub funkcji, która może zostać utworzona.

Na przykład mam zadeklarowany moduł ujawniający var knockoutUtilityModule = function() {...}w swoim własnym pliku o nazwie knockoutUtilityModule.js, chociaż obiektywnie wolę knockout-utility-module.js.

Podobnie, ponieważ używam mechanizmu pakietowania do łączenia skryptów, zacząłem definiować funkcje możliwe do natychmiastowego uruchomienia (modele widoków itp.), Każdy w swoim własnym pliku, w stylu C #, w celu zachowania łatwości obsługi. Na przykład ProductDescriptorViewModel żyje samodzielnie w ProductDescriptorViewModel.js (używam wielkich liter do natychmiastowych funkcji).

Tom W. Hall
źródło