2014-08-12 4 views
1

Кто-нибудь здесь знает, как вводить данные в приложение Browserify?Введенные данные в приложении Browserify

Я имею в виду, я использую Browserify для создания файла app.js большого пакета.

Но когда начинается одностраничное приложение, сервер также добавляет некоторые загрузочные данные на HTML-страницу, загружающую приложение, так что приложение не должно выполнять запросы ajax на сервер для получения этих данных.

На данный момент шаблон HTML, оказываемая сервером для запуска приложения выглядит следующим образом:

<script type="text/javascript" > 
window.bootstrapData = @Html(utils.CustomSerializer.serialize(bootstrapData)); 
</script> 

<script type="text/javascript" src="@{reactAppBaseUrl}/app.js"></script> 

А внутри app.js (Browserified одной страницы приложения), мы используем window.bootstrapData, чтобы получить эти данные внутри Браузер.

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

+0

Вы можете сделать функцию вместо этого, но это будет просто глобальной функцией. Но FWIW, глобалы не всегда злы. – Scimonster

ответ

1

Используйте external require.

Когда вы связывайте ваше приложение, используйте опцию -r для включения внешнего требуя для конкретной услуги:

browserify -r appBootstrap > app.js 

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

<script type="text/javascript" src="@{reactAppBaseUrl}/app.js"></script> 

<script> 
    var serializedData = @Html(utils.CustomSerializer.serialize(bootstrapData)) 
    require('appBootstrap').load(serializedData); 
</script> 
+0

спасибо, что он отлично работает. Но не удалось заставить его работать с опцией «раскрывать», любая идея, как она работает? –

+0

Мне удалось получить опцию экспонирования для работы как в командной строке, так и с использованием API, здесь [gist] (https://gist.github.com/majgis/433fe8cc89a1b50a24b4). –

+0

Я получаю его работу только при использовании, поскольку выставляют имя с тем же именем (я имею в виду использование 'app.js' с expose' app', но я получаю сообщение об ошибке при использовании другой строки, чем 'app', которая кажется странной –

Смежные вопросы