Поиск…


Вступление

Перед выпуском Meteor 1.3 разработчики Meteor были разочарованы обработкой Meteor.js файловых зависимостей и глобальных переменных. В ответ Метеор установил новые стандарты для проектных структур, чтобы сделать систему зависимостей проекта более упорядоченной. В этом разделе объясняется стандартизованная структура проекта и принципы, лежащие в его основе.

замечания

клиент
Весь код в каталоге клиента запускается только на стороне клиента или в веб-браузере.

клиент / совместимость
Каталог совместимости содержит устаревший или сторонний код, например библиотеки jQuery и т. Д.

Lib
Каталог lib загружается перед другими каталогами в вашем проекте Meteor и загружается как на сервере, так и на клиента. Это предпочтительное место для определения моделей данных, изоморфных библиотек и бизнес-логики.

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

пакеты
Каталог пакетов - это где пользовательские пакеты хранятся во время локальной разработки. При использовании стандартной команды meteor add package:name для добавления пакета Meteor будет выглядеть первым в этом каталоге, если локальный пакет имеет соответствующее имя описания в файле package.js . Если нет, он будет опросить Атмосферу как обычно.

частный
Частный каталог содержит статические файлы, которые должны быть доступны только на веб-сервере.

общественности
Общий каталог содержит статические файлы, доступные только на клиенте приложения. Это может включать в себя активы брендинга и т. Д.

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

тесты
Каталоги тестов опущены по умолчанию, когда ваше приложение в комплекте и развернуто.

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

Таким образом, вы можете хранить файлы под контролем версий, не имея метеор для борьбы с ним.

Классические структуры каталогов

Первое, что вам нужно знать при структурировании ваших приложений, - это то, что инструмент Meteor имеет некоторые каталоги, жестко закодированные с определенной логикой. На самом базовом уровне следующие каталоги «запекаются» в пакете «Метеор».

client/                                  # client application code
client/compatibility/                    # legacy 3rd party javascript libraries
imports/                                 # for lazy loading feature 
lib/                                     # any common code for client/server.
packages/                                # place for all your atmosphere packages
private/                                 # static files that only the server knows about
public/                                  # static files that are available to the client
server/                                  # server code
tests/                                   # unit test files (won't be loaded on client or server)

Справочная страница: Руководство Meteor> Специальные каталоги

Структура каталога только для пакета

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

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

client/                                  # client application code
packages/                                # place for all your atmosphere packages
packages/foo/client                      # client application code
packages/foo/lib                         # any common code for client/server
packages/foo/server                      # server code
packages/foo/tests                       # tests
server/                                  # server code

Структура каталогов импорта / модулей

Самые последние версии корабля Метеор с поддержкой ecmascript , иначе ES6 или ES2015. Вместо пакетов Javascript теперь поддерживает import и модули, что заменяет необходимость в приложениях только для пакетов. Последняя структура каталогов похожа на структуру только для пакетов, но использует каталог /imports вместо /packages .

imports                                 #
imports/api                             # isomorphic methods 
imports/lib                             # any common code for client/server
imports/client                          # client application code
imports/server                          # server code

Структура каталога смешанного режима

И, конечно же, вы можете смешивать эти подходы и использовать как пакеты, так и импорт вдоль вашего кода, специфичного для вашего приложения. Структура смешанного режима наиболее распространена в трех ситуациях: приложение franken, которое просто немного отвлекает отсюда - и - там без какой-либо общей стратегии; приложение, которое активно реорганизуется из структур Classic или Package-Only в структуру Imports / Modules.

client/                                  # client application code
client/compatibility/                    # legacy 3rd party javascript libraries
imports                                  #
imports/api                              # isomorphic methods 
imports/lib                              # any common code for client/server
imports/client                           # client application code
imports/server                           # server code
lib/                                     # any common code for client/server.
packages/                                # place for all your atmosphere packages
packages/foo/client                      # client application code
packages/foo/lib                         # any common code for client/server
packages/foo/server                      # server code
packages/foo/tests                       # tests
private/                                 # static files that only the server knows about
public/                                  # static files that are available to the client
server/                                  # server code
tests/                                   # unit test files (won't be loaded on client or server)

Порядок загрузки каталога

Файлы шаблонов HTML всегда загружаются перед всем остальным

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

Затем загружаются файлы внутри любого каталога lib /

Затем загружаются файлы с более глубокими путями

Затем файлы загружаются в алфавитном порядке по всему пути

Ссылка ссылки

Справочная страница: Руководство Meteor> Структура приложения> Порядок загрузки файлов по умолчанию



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow