Структура папок для узла.проект 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, который поддерживается в течение многих лет.
надеюсь, что это помогает.