2015-08-01 1 views
0

Можно ли добавить компонент верхнего уровня Aurelia без маршрутизатора? Целью является создание компонента без маршрутизатора, поскольку мое приложение не нуждается в навигации по URL.Компонент верхнего уровня Aurelia без маршрутизации

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

Вместо этого я хотел бы просто добавить разметку для компонента верхнего уровня на главной странице index.html:

<my-component bind.current="'123456'"></my-component> 

Я хотел бы определить компоненты без маршрутизатора и использовать только шаблонный и связывание данных возможностей Аурелия.
Возможно ли это?

Пробовал это в index.html (внутри тела тега проекта по умолчанию)

<require from='./dist/my-component'></require> 
<my-component></my-component> 

Но не похоже, чтобы поднять его. В идеале я хотел бы просто определить его в разметке на странице обслуживаемого с сервера, так как это позволило бы мне Брусчатка атрибуты динамически на элементах

<my-component current.bind={{someServerGeneratedId}}></my-component> 

В приведенном выше я хотел бы использовать рамки шаблонный, как усы динамически оказывать Aurelia, когда страница подается с сервера. Я мог бы обернуть компонент в другой компонент «посадку», но это затрудняет работу с создаваемыми сервером привязками.

UPDATE: ответ Per Роба: https://github.com/aurelia/framework/issues/175#issuecomment-126965417 - Он ожидает, чтобы добавить возможность добавлять корневой компонент на целевую страницу в будущих версиях. Я понимаю, что есть способы не использовать маршрутизатор, но все равно зависит от частичного просмотра при загрузке приложения. Это не использует маршрутизатор напрямую, но концептуально это на самом деле просто подразумеваемая/конвенциональная клиентская сторона nav. В конце есть запрос на стороне клиента, чтобы вывести его в вид, что означает, что я не могу генерировать html динамически из исходного ответа сервера.

ответ

2

Да, вы можете сделать это очень легко без маршрутизатора. Просто удалите конфигурацию маршрутизатора из app.js и в app.html удалите также код маршрутизатора.

Я думаю, что проблема, с которой вы работаете, заключается в том, что вы снова указываете папку dist в своем index.html. Вы должны просто ссылаться на это следующим образом:

<require from="my-component"></require> 
<my-component current.bind="someServerGeneratedId"></my-component> 

Это будет правильно связываться.

+0

Похоже, что возможность добавлять его в index.html напрямую входит в будущую версию: https://github.com/aurelia/framework/issues/175#issuecomment-126965417 – TGH

+0

Добавьте, что именно? Маршрутизатор? Моя плохая мысль, что вы пытались ее удалить. Если это не так, дайте мне знать, и я могу попытаться понять, чего вам не хватает. –

+0

Мое понимание, основанное на комментарии Роба, заключается в том, что возможность добавлять компонент непосредственно в index.html - это то, над чем они продолжают работать. Похоже, они добавляют его в будущую версию. Мне нужно, чтобы динамически генерировать аргументы - переданные компоненту из ответа сервера – TGH

0

Я думаю, вы пропустили концепцию маршрута здесь.

На момент написания статьи, страница index.html Aurelia - это ваша начальная страница, на которой вы помещаете свои материалы «загрузки», и где Aurelia загружает все приложение.

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

Если вы не изменили какую-либо конфигурацию на Aurelia, он будет искать ваш app.html для загрузки вашего приложения, и там вы можете иметь все, что хотите (маршруты или нет, не имеет значения). Таким образом, вы должны разместить свой компонент там, помимо других тегов/компонентов/etc, которые вам нужны.

Я сделал плункер без какой-либо маршрутизации и с пользовательским компонентом в app.html, и что-то, что имитирует то, что вам нужно.

<template> 
    <require from='./my-component'></require> 

    <my-component current.bind="serverGeneratedID"></my-component> 
</template> 

http://plnkr.co/edit/mLb8Ym638b4V2e9LDp0A?p=preview

Если вам нужно что-нибудь еще, комментарии здесь, и я буду стараться идти дальше.

+0

Я понимаю, откуда вы, но это не то решение, которое я ищу. Ответ Роба: https://github.com/aurelia/framework/issues/175#issuecomment-126965417 - возможность добавления корневого компонента непосредственно на целевой странице поступает в будущую версию. Ваше решение является обходным решением, но это не то, что мне нужно, поскольку для этого потребуется еще один запрос ajax, инициированный клиентом, чтобы добавить app.html. Моя цель - не делать никаких аякс-запросов, поскольку это мешает мне динамически создавать разметку из первоначального синхронного веб-запроса. – TGH

+0

По сути ваше решение очень похоже на определение одного корневого маршрута, но вместо этого мы разрешаем Aurelia вводить начальное представление. Он не использует маршрутизатор, но это неявно те же понятия, что и корневой маршрут. – TGH

+0

Да, я знаю, чего вы хотите, и мне это тоже нужно. Как я уже сказал, «на момент написания», к сожалению, мы не можем этого сделать. Но это будет возможно в будущих выпусках, и это то, с чем я разговариваю с Робом почти ежедневно, и у нас будут отличные возможности, которые помогут улучшить производительность первой загрузки и SEO. – Buzinas