Аурелия: Как использовать View/Viewmodel из пакета npm?

Мы используем Aurelia для интерфейса нашего приложения. Поскольку у нас будет несколько разных проектов на его основе, я хотел бы иметь возможность добавить весь наш пользовательский код в некоторые пакеты npm, которые могут быть добавлены разработчиками. Это позволило бы нам создать новый пустой проект, добавить зависимости к нашему повторно используемому коду, не включая его в кодовую базу проекта (чтобы при необходимости его можно было обновлять отдельно).

Например, мне нужен пакет инструментов и пакет услуг. Это, конечно, совсем несложно.

Но я не могу понять, как использовать пакет «ui», который будет содержать все наши пользовательские повторно используемые компоненты. Это вообще возможно? Как мне потребовать компонент в шаблоне html?

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

большое спасибо!


person Gaet    schedule 07.02.2017    source источник


Ответы (1)


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

// from your plugin
aureliaConfig.globalResources([
    './jqm-loader',
    './jqm-page',
    './jqm-footer',
    './jqm-header'
]);

затем импортируйте их в свое приложение:

// aurelia.json
{
    "name": "my-reusable-widgets",
    "path": "../node_modules/my-reusable-widgets",
    "main": "index",
    "resources": [
          "**/*.{css,html}" //to load them all or you can add individual files
     ]
}

затем используйте свои виджеты:

<jqm-loader></jqm-loader>
...

если вы не хотите использовать globalResources, вы также можете использовать require:

<require from="my-reusable-widgets/jqm-header"></require>
<jqm-header></jqm-header>
person Rabah    schedule 07.02.2017
comment
Большое спасибо! Я получил аналогичный ответ от официального канала Gitter, но ваш очень подробный. У меня все еще есть некоторые проблемы с использованием моего плагина, так как я получаю сообщение об ошибке скрипта при загрузке компонента, но я думаю, что мне следует найти выход. - person Gaet; 07.02.2017