Подтвердить что ты не робот

Node.js соглашения об именах файлов для файлов и папок

Каковы соглашения об именах для файлов и папок в большом проекте Node.js?

Должен ли я использовать капитал, camelCase или под-счет?

Т.е. считается ли это действительным?

project-name
    app
        controllers
            someThings.js
            users.js
        models
                someThing.js
                user.js
        views
            some-things
                index.jade
            users
                logIn.jade
                signUp.jade
    ...
4b9b3361

Ответ 1

После нескольких лет работы с узлом я могу сказать, что нет соглашений для структуры каталогов/файлов. Однако большинство (профессиональных) экспресс-приложений используют такие настройки, как:

/
  /bin - scripts, helpers, binaries
  /lib - your application
  /config - your configuration
  /public - your public files
  /test - your tests

Примером использования этой настройки является nodejs-starter.

Я лично изменил эту настройку на:

/
  /etc - contains configuration
  /app - front-end javascript files
    /config - loads config
    /models - loads models
  /bin - helper scripts
  /lib - back-end express files
    /config - loads config to app.settings
    /models - loads mongoose models
    /routes - sets up app.get('..')...
  /srv - contains public files
  /usr - contains templates
  /test - contains test files

По моему мнению, последний лучше соответствует структуре каталогов в стиле Unix (тогда как первый немного смешивает).

Мне также нравится этот шаблон для разделения файлов:

Библиотека /index.js

var http = require('http');
var express = require('express');

var app = express();

app.server = http.createServer(app);

require('./config')(app);

require('./models')(app);

require('./routes')(app);

app.server.listen(app.settings.port);

module.exports = app;

Библиотека/статические /index.js

var express = require('express');

module.exports = function(app) {

  app.use(express.static(app.settings.static.path));

};

Это позволяет аккуратно разделить весь исходный код, не беспокоясь о зависимостях. Действительно хорошее решение для борьбы с неприятным Javascript. Пример из реальной жизни - поблизости, который использует эту настройку.

Обновление (имена файлов):

Что касается имен файлов, наиболее распространенными являются короткие, строчные имена файлов. Если ваш файл можно описать только двумя словами, в большинстве проектов JavaScript в качестве разделителя используется подчеркивание.

Обновление (переменные):

В отношении переменных применяются те же "правила", что и для имен файлов. Однако прототипы или классы должны использовать camelCase.

Обновление (руководства по стилю):

Ответ 2

Используйте kebab-case для всех имен пакетов, папок и файлов.

Почему?

Вы должны представить, что любая папка или файл может быть извлечена в свой собственный пакет однажды. Пакеты не могут содержать заглавные буквы.

Новые пакеты не должны иметь заглавных букв в имени. https://docs.npmjs.com/files/package.json#name

Поэтому camelCase никогда не следует использовать. Это оставляет snake_case и kebab-case.

kebab-case на сегодняшний день является самым распространенным соглашением сегодня. Единственное использование подчеркиваний для внутренних пакетов node, и это просто соглашение с первых дней.

Ответ 3

Нет соглашений. Существует некоторая логическая структура.

Единственное, что я могу сказать: Никогда не используйте имена файлов и каталогов camelCase. Зачем? Он работает, но на Mac и Windows нет никаких различий между someAction и некоторыми действиями. Я встретил эту проблему, и не один раз. Мне нужен файл такой:

var isHidden = require('./lib/isHidden');

Но, к сожалению, я создал файл с полным нижним регистром: lib/ishidden.js. Это сработало для меня на Mac. Он отлично работал на Mac моего коллеги. Тесты выполняются без ошибок. После развертывания мы получили огромную ошибку:

Error: Cannot find module './lib/isHidden'

О да. Это ящик для Linux. Поэтому структура каталога camelCase может быть опасной. Этого достаточно для коллеги, который разрабатывает Windows или Mac.

Поэтому используйте разделитель (_) или тире (-), если вам нужно.

Ответ 4

Основано наРуководстве по стилю Google JavaScript'

Имена файлов должны быть строчными и могут содержать подчеркивание (_) или тире (-), но без дополнительной пунктуации. Следуйте соглашению, которое ваш проект использует. Расширение имени файла должно быть .js.

Ответ 5

Большинство людей используют camelCase в JS. Если вы хотите открыть исходный код, я предлагаю вам использовать его: -)

Ответ 6

Node.js не применяет никаких соглашений об именах файлов (кроме index.js). И язык Javascript вообще не является ни тем, ни другим. Здесь вы можете найти десятки потоков, которые предлагают camelCase, дефисы и подчеркивания, любой из которых отлично работает. Так что это зависит от вас. Выберите один и придерживайтесь его.

Ответ 7

По мне: для файлов используйте нижний корпус верблюда, если module.exports - это объект, я имею в виду одноэлементный модуль. Это также применимо к файлам JSON, так как они также являются одним тонном. Используйте верхний корпус верблюда, если module.exports возвращает функцию-конструктор, где он действует как класс.

В папках используются короткие имена. Если необходимо иметь несколько слов, пусть это будет полностью нижний регистр, разделенный символом "-", чтобы он работал на всех платформах последовательно.

Ответ 8

Я уже дал +1 к @bodokaiser. Следующее - это только мой комментарий.

Редакцией.

Есть такие классы, как EventEmitter. они следовали за Java-классом классов именования. Здесь я следую одному пункту. все глобалы - это маленький случай (даже не camelcase), а все упакованные классы - это стиль java - заглавный. что означает, что если вы определяете свой собственный класс, например function MyFunction(){...}, вы обычно хотите его загладить.