Структура папок для узла.проект js

Я замечаю, что узел.проекты js часто включают такие папки:

/ libs, /vendor, /support, /spec, / tests

Что именно они означают? В чем разница между ними, и где я должен включать ссылочный код?

5 ответов


относительно папок, которые вы упомянули:

  • /libs обычно используется для таможни classes/functions/modules
  • /vendor или /support содержит сторонние библиотеки (добавлено как git суб-модуль при использовании git в качестве управления версиями)
  • /spec содержит спецификации для тестов BDD.
  • /tests содержит модульные тесты для приложения (с помощью тестирование Framework см. В разделе здесь)

Примечание:/vendor и /support устарели, так как NPM представил чистое управление пакетами. Рекомендуется обрабатывать все сторонние зависимости с помощью NPM и пакета.файл json

при создании довольно большого приложения я рекомендую следующие дополнительные папки (особенно если вы используете какой-то MVC - / ORM-Framework, например экспресс или мангуста):

  • /models содержит все ваши модели ORM (называемые Schemas в мангуста)
  • /views содержит ваши view-шаблоны (используя любой язык шаблонов, поддерживаемый в express)
  • /public содержит все статическое содержимое (изображения, таблицы стилей, клиентский JavaScript)
    • /assets/images содержит изображения файлы
    • /assets/pdf содержит статические pdf-файлы
    • /css содержит таблицы стилей (или скомпилированные выходные данные движком css)
    • /js содержит клиентскую сторону JavaScript
  • /controllers содержит все ваши экспресс-маршруты, разделенные модулем / областью вашего приложения (Примечание: при использовании функции начальной загрузки express эта папка называется /routes)

я привык организовывать свои проекты таким образом, и я думаю, он работает довольно хорошо.

обновление для экспресс-приложений на основе CoffeeScript (с помощью connect-активы):

  • /app содержит ваш скомпилированный JavaScript
  • /assets/ содержит все клиентские активы, которые требуют сборник
    • /assets/js содержит файлы CoffeeScript на стороне клиента
    • /assets/css содержит все ваши LESS / Stylus style-sheets
  • /public/(js|css|img) содержит статические файлы, которые не обрабатываются никакими компиляторами
  • /src содержит все ваши серверные конкретные файлы CoffeeScript
  • /test содержит все единицы тестирование скриптов (реализовано с использованием testing-framework по вашему выбору)
  • /views содержит все ваши экспресс-представления (будь то jade, ejs или любой другой шаблонный движок)

существует обсуждение GitHub из-за вопроса, похожего на этот: https://gist.github.com/1398757

вы можете использовать другие проекты для руководства, поиск в GitHub для:

  • ThreeNodes.js-на мой взгляд, похоже, имеет определенную структуру, не подходящую для каждого проекта;
  • светлый - более простая структура, но не хватает немного организации;

и, наконец, в книге (http://shop.oreilly.com/product/0636920025344.do) предлагает такую структуру:

    .HTML-код
  • js/
    • main.js
    • модели/
    • вид/
    • сборники/
    • шаблоны/
    • libs/
      • позвоночника/
      • подчеркивание/
      • ...
  • css/
  • ...

пример моего архитектурного проекта вы можете увидеть здесь:

├── Dockerfile
├── README.md
├── config
│   └── production.json
├── package.json
├── schema
│   ├── create-db.sh
│   ├── db.sql
├── scripts
│   └── deploy-production.sh 
├── src
│   ├── app -> Containes API routes
│   ├── db -> DB Models (ORM)
│   └── server.js -> the Server initlializer.
└── test

в основном, логическое приложение разделено на папки DB и APP внутри src dir.


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

Я считаю, что это разочаровывает и огромные накладные расходы, но не менее важно. Это своего рода преуменьшенная версия (но ИМО важнее)вопрос гид по стилю. Мне нравится это потому, что ответ один и тот же: не имеет значения, какую структуру вы используете, если она хорошо определена и когерентный.

поэтому я бы предложил найти комплексное руководство, которое вам нравится, и дать понять, что проект основан на этом.

Это непросто, особенно если вы новичок в этом! Ожидайте потратить часы на исследования. Вы найдете большинство руководств, рекомендующих структуру, подобную MVC. Хотя несколько лет назад это могло быть солидным выбором, в настоящее время это не обязательно так. Например вот еще один подход.


это косвенный ответ, на самой структуре папок, очень связанный.

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

теперь, выполнив несколько проектов, в дополнение к объяснению во всех других ответах, на сама структура папок, я бы настоятельно рекомендовал следовать структуре узла.сам js, который можно увидеть по адресу:https://github.com/nodejs/node. Он имеет большую подробную информацию обо всех, скажем, linters и других, какая структура файлов и папок у них есть и где. В некоторых папках есть README, который объясняет, что находится в этой папке.

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

надеюсь, что это помогает.