Що таке умовна назва імені файлу javascript? [зачинено]


283

Чи повинні файли називатися щось з-hyphens.js, camelCased.js чи щось інше?

Я не знайшов відповідь на це питання тут .


2
Хороша умова іменування - називати імена файлів так, як ви бачили цю сутність у коді. MyPluginКлас буде йти MyPlugin.js. MenuItemРеагувати компонент буде йти MenuItem.js. Інші розробники вимагатимуть / імпортуватимуть 'ваш-cool-модуль' та використовуватимуть з нього кілька символів, тому назвіть його cool-module.js. -
Дан Даскалеску

1
Ця публікація не заснована на опціях. Насправді це важливо. Тут ви маєте керівництво, створене Google - google.github.io/styleguide/jsguide.html#file-name . (Посібник зі стилів Google JavaScript)
zwitterion

Відповіді:


184

Одне з можливих умов іменування - використовувати щось подібне до схеми іменування, яку використовує jQuery. Це не є загальновизнаним, але є досить поширеним.

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

де пара product-name+ pluginтакож може представляти простір імен та модуль . Зазвичай вони є versionі filetypeнеобов'язковими.

filetypeможе бути чимось відносно того, яким є вміст файлу. Часто зустрічаються:

  • min для мінімізованих файлів
  • custom для вбудованих або модифікованих файлів

Приклади:

  • jquery-1.4.2.min.js
  • jquery.plugin-0.1.js
  • myapp.invoice.js

31
Я згоден з тим, що ви сказали. Але є одне, з чим я зараз боюся: що робити, якщо "плагін" містить два слова? Відокремити їх крапками? jquery.myPlugin-1.0.0.js або jquery.my.plugin-1.0.0.js або jquery.my_plugin-1.0.0.js або jquery.myplugin-1.0.0.js або, можливо, навіть jquery.my-plugin- 1.0.0.js? Можливо, ви можете доповнити свої приклади цим, дякую!
травня

4
Що з модулями AMD ? Якщо ви використовуєте версію у назви файлів, вам потрібно змінити багато файлів, якщо номер версії зміниться.
кнут

3
@junior, це стара публікація, але швидкий пошук в ящику виявляє, що плагіни jquery не відповідають певній умові. Виявляється, що (1) зіштовхування слів разом, (2) використання хребта і (3) використання camelCase використовуються з приблизно однаковою частотою.
bholben

Не забувайте, що деякі версії та файлові системи мають проблеми з розпізнаванням різниці між словом у малому регістрі та тим самим словом un верхнього чи camelCase (наприклад: "ThisWord" - це те саме, що "thisword" у деяких середовищах). Що потрібно пам’ятати при використанні конвенції camelCase.
amypellegrini

@knut не слід завантажувати через назви версій, а зіставляти ім'я модуля в конкретний файл версії.
dalore

132

Я не знаю жодної конкретної конвенції для файлів javascript, оскільки вони насправді не є унікальними в Інтернеті проти файлів css або html-файлів чи будь-якого іншого типу файлів. Ви можете зробити кілька "безпечних" речей, які роблять меншою ймовірність, що ви випадково наткнетеся на проблему міжплатформ:

  1. Використовуйте всі маленькі імена файлів. Є деякі операційні системи, які не відрізняються від регістру до імен файлів, а використання всіх малих регістрів запобігає ненавмисному використанню двох файлів, які відрізняються лише у випадку, якщо вони не можуть працювати в деяких операційних системах.
  2. Не використовуйте пробіли у імені файлу. Незважаючи на те, що це технічно можна змусити працювати, є багато причин, через які пробіли у назви файлів можуть призвести до проблем.
  3. Дефіс в порядку для розділювача слів. Якщо ви хочете використовувати якийсь роздільник для декількох слів замість пробілу чи верблюда, як в various-scripts.js, дефіс - це безпечний і корисний і широко використовуваний роздільник.
  4. Подумайте про використання номерів версій у своїх іменах. Коли ви хочете оновити свої сценарії, сплануйте ефекти кешування браузера чи CDN. Найпростіший спосіб використання кешування в довгостроковому періоді (для швидкості та ефективності), але негайне та безпечне оновлення під час оновлення файлу JS полягає в тому, щоб включити номер версії до розгорнутого імені файла або шляху (як, наприклад, jQuery з jquery-1.6.2.js ), а потім додаєте / змінюєте цей номер версії щоразу, коли ви оновлюєте / змінюєте файл. Це гарантуватиме, що жодна сторінка, яка запитує нову версію, ніколи не надсилатиме старішу версію з кеша.

56

Не існує офіційної, універсальної конвенції щодо іменування файлів JavaScript.

Є кілька різних варіантів:

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

є усіма правильними умовами іменування, однак я віддаю перевагу запропонованій jQuery умові іменування (для плагінів jQuery, хоча це працює для будь-якого JS)

  • jquery.pluginname.js

Краса цієї угоди про іменування полягає в тому, що вона чітко описує глобальне забруднення простору імен, що додається.

  • foo.js додає window.foo
  • foo.bar.js додає window.foo.bar

Тому що я вийшов із версії: вона повинна входити після повного імені, бажано розділеного дефісом, з періодами між головною та другорядною версіями:

  • foo-1.2.1.js
  • foo-1.2.2.js
  • ...
  • foo-2.1.24.js

10
+1 для The beauty to this naming convention is that it explicitly describes the global namespace pollution being added., ніколи цього не помічав
Адрієн Будь

2
Єдине моє запитання - що робити, якщо у вас є файл, який створює, Fooчи myFooпросто ви назвете файл Foo.jsабо myFoo.jsвідповідно?
крапка з комою

13

Питання у посиланні, яке ви давали, розповідає про іменування змінних JavaScript, а не про іменування файлів, тому забудьте про це для контексту, в якому ви ставите своє запитання.

Що стосується імен файлів, то це суто питання переваги та смаку. Я вважаю за краще називати файли дефісами, тому що тоді мені не доводиться дотягуватися до клавіші shift, як це роблю при роботі з іменами файлів camelCase; і тому, що мені не потрібно турбуватися про відмінності між іменами файлів Windows та Linux (назви файлів Windows не чутливі до регістру, принаймні через XP).

Тож відповідь, як і стільки, - це "це залежить" або "це залежить від вас".

Одне правило, якого слід дотримуватися, - це бути послідовними у вибраній конвенції.


6
+1 за дефісом проти camelCase.
cellepo

6

Як правило, я віддаю перевагу дефісам з малих регістрів, але одне, що ще не було згадано, - це те, що іноді приємно, щоб ім’я файлу точно відповідало імені одного модуля або миттєвої функції, що міститься в ньому.

Наприклад, у мене є розкриваючий модуль, декларований var knockoutUtilityModule = function() {...}у своєму власному файлі під назвою knockoutUtilityModule.js, хоча об'єктивно я віддаю перевагу knockout-utility-module.js.

Так само, оскільки я використовую механізм поєднання для комбінування сценаріїв, я взяв до визначення функцій, що створюються миттєво (шаблонні моделі перегляду тощо), кожен у власному файлі, стиль C #, для ремонтопридатності. Наприклад, ProductDescriptorViewModel живе самостійно всередині ProductDescriptorViewModel.js (я використовую верхній регістр для миттєвих функцій).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.