[email protected] шаблоны компонентов в аддоне

Мне интересно, какое соглашение использовать при создании компонента внутри проекта надстройки ... Если я сгенерирую компонент в своем проекте надстройки, используя [email protected], план создаст файл js в addon / components , шаблон в addon / templates / components и файл js в app / components. Я не совсем понимаю, где должны размещаться шаблоны для этих компонентов. Если мой шаблон компонента требует частичного, мне нужно поместить частичный шаблон в каталог app / templates. Если он находится в каталоге addon / templates, его нельзя решить. Итак, вопрос заключается в следующем: лучше ли поместить все шаблоны (шаблон компонента и части) в каталог app / templates или оставить шаблон компонента в каталоге addon / templates / components, а частичный - в каталоге app / templates ? Последнее кажется немного дезорганизованным, а первое кажется более правильным только из-за поведения чертежа. У кого-нибудь есть понимание?

Заранее спасибо.


person Ryan Connolly    schedule 26.03.2015    source источник


Ответы (1)


Ember-cli находится в стадии интенсивной разработки, поэтому большая часть файловой структуры, вероятно, скоро изменится, но здесь мы расскажем о текущем состоянии структуры папок и о том, почему она устроена так, как есть:

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

Некоторые люди предпочитают помещать весь код своих компонентов в app/, но это плохая идея, потому что папка addon/ существует не только как разделение кода ваших надстроек, но и как способ его импорта с использованием импорта ES6. Итак, хотя вы не можете напрямую получить доступ к компонентам в addon/components/, вы можете импортировать их в свое приложение следующим образом:

import SomeComponent from 'some-addon/components/some-component'

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

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

import Ember from 'ember';
import layout from '../templates/components/some-component';

export default Ember.Component.extend({
  layout: layout
});

Стили для дополнений могут быть помещены в addon/styles/ или app/styles/. В addon/styles/ они также предварительно скомпилированы и по умолчанию включены в приложение. Я настоятельно рекомендую включать стили в app/styles, потому что это делает их доступными с помощью импорта препроцессора в базовом приложении:

@import some-addon/main.css

Это делает их полностью необязательными для пользователей дополнения, не прибегая к app.import и config уловкам (что хорошо, потому что вложенные дополнения _ не поддерживают app.import. Не используйте его.)

ПРИМЕЧАНИЕ. Они не помещаются в пространство имен автоматически, поэтому вам следует поместить свои стили в папку, чтобы убедиться, что они не конфликтуют со стилями других надстроек.

В итоге:

  • Любой дополнительный код, который не обязательно должен быть доступен для базового приложения напрямую через помощники, инициализаторы и т. Д., Должен находиться в addon/
  • Все, что вы хотите сделать доступным для импорта из ES6, должно находиться в addon/
  • Шаблоны должны находиться в addon/templates/ и импортироваться вручную.
  • Заглушки компонентов, инициализаторы и другие файлы, которые должны быть включены в стандартную цепочку сборки Ember, должны находиться в app/
  • Стили должны находиться в app/styles/ и располагаться в пространстве имен в папке (например, app/styles/some-addon/)
  • Не используйте app.import.
person pzuraq    schedule 10.05.2015