Каковы соглашения об именах файлов и папок в большом проекте Node.js?
Должен ли я использовать заглавные буквы, верблюжий случай или занижение?
Т.е. это считается действительным?
project-name
app
controllers
someThings.js
users.js
models
someThing.js
user.js
views
some-things
index.jade
users
logIn.jade
signUp.jade
...
javascript
node.js
Рудигер
источник
источник
require
принимает строку каталога в качестве параметра, поэтому она не полностью ваша. т.е.require('../app/controllers/someThings');
fs
), однословного (events
), подчеркнутого (child_process
) и строчного (querystring
).Ответы:
После нескольких лет работы с node я могу сказать, что нет никаких соглашений о структуре каталогов / файлов. Однако большинство (профессиональных) экспресс-приложений используют такие настройки, как:
Примером, который использует эту настройку, является nodejs-starter .
Я лично изменил эту настройку на:
На мой взгляд, последний лучше соответствует структуре каталогов в стиле Unix (тогда как первый немного смешивает это).
Мне также нравится этот шаблон для разделения файлов:
Lib / index.js
Библиотека / статический / index.js
Это позволяет аккуратно отделить весь исходный код, не беспокоясь о зависимостях. Действительно хорошее решение для борьбы с неприятным Javascript. Реальный пример рядом , который использует эту установку.
Обновление (имена файлов):
Что касается имен файлов наиболее распространенных являются короткими , в нижнем регистре имен файлов. Если ваш файл можно описать только двумя словами, в большинстве проектов JavaScript в качестве разделителя используется символ подчеркивания.
Обновление (переменные):
Что касается переменных, применяются те же «правила», что и для имен файлов. Однако прототипы или классы должны использовать camelCase .
Обновление (руководства по стилям):
источник
bodokaiser
, я слишком лично принимаю это, чтобы вмешаться и попросить, чтобы его мнение по этому поводу было добавлено к его ответу (как ОП первоначально задал в своем вопросе) ( кашель, кашель ).Используйте
kebab-case
для всех имен пакетов, папок и файлов.Зачем?
Вы должны представить, что когда-нибудь любая папка или файл могут быть извлечены в отдельный пакет. Пакеты не могут содержать заглавные буквы.
Поэтому
camelCase
никогда не следует использовать. Это оставляетsnake_case
иkebab-case
.kebab-case
на сегодняшний день является наиболее распространенным условием. Единственное использование подчеркиваний - для пакетов внутренних узлов, и это просто соглашение с первых дней.источник
Нет никаких условностей. Есть какая-то логическая структура.
Единственное, что я могу сказать: никогда не используйте имена файлов и каталогов camelCase. Зачем? Он работает, но на Mac и Windows нет разницы между someAction и some action. Встречался с этой проблемой, и не раз. Мне нужен такой файл:
Но , к сожалению , я создал файл с полным строчными буквами:
lib/ishidden.js
. У меня это сработало на Mac. Он отлично работал на Mac моего коллеги. Тесты проходят без ошибок. После развертывания мы получили огромную ошибку:О да. Это Linux-бокс. Таким образом, структура каталогов camelCase может быть опасной. Этого достаточно для коллеги, который занимается разработкой на Windows или Mac.
Так что используйте разделитель подчеркивания (_) или тире (-), если вам нужно.
источник
const loginPage = browser.page.admin-login()
. У меня ошибкаReferenceError: login is not defined
. Использование подчеркивания (_) в имени файла решило проблему. Я также могу представить, что использование имен файлов с тире в командной строке также может привести к некоторым проблемам. Поэтому я бы сказал, что подчеркивание - самый безопасный разделитель для имен файлов в целом.На основе " Руководства по стилю Google JavaScript "
источник
Большинство людей используют
camelCase
JS. Если вы хотите что-нибудь с открытым исходным кодом, я предлагаю вам использовать это :-)источник
camelCase
для файлов контроллеров. :-) Просто зависит от обстоятельств. Я обычно используюPascalCase
для файлов класса.Node.js не применяет никаких соглашений об именах файлов (кроме
index.js
). И язык Javascript в целом тоже. Здесь вы можете найти десятки тем, которые предлагают верблюжий регистр, дефисы и подчеркивания, любой из которых отлично работает. Так что решать вам. Выберите один и придерживайтесь его.источник
По моему мнению: для файлов используйте нижний регистр верблюда, если module.exports является объектом, я имею в виду одноэлементный модуль. Это также применимо к файлам JSON, поскольку они тоже в некотором смысле тонны. Используйте верхний регистр верблюда, если module.exports возвращает функцию-конструктор, где он действует как класс.
Для папок используйте короткие названия. Если необходимо использовать несколько слов, пусть они будут полностью строчными, разделенными знаком «-», чтобы это работало на всех платформах единообразно.
источник