2015-09-01 8 views
1

У меня есть «браузерная» библиотека, которая определяет некоторые компоненты React, которые я бы хотел загрузить с HTML-страницы (из приложения Rails), а затем инициировал компоненты React, подаваемые некоторыми данными, помещенными внутри страницы Rails.Доступ к переменной, определенной в библиотеке CommonJS из области глобального браузера

(Большая картина:. У нас есть приложение TurboLinks, и мы хотим использовать некоторые Реагировать компоненты для очень специфических деталей, нуждающимся в большую реактивность
страница Rails будет так загружать и React времени выполнения & необходимые аппликативные компоненты LIB , а затем генерировать минимальное сырье JS создать экземпляр Реагировать компонента по мере необходимости)

Все, что я нашел, были способами выставить внешние ЛИЭС переменных моего LIB, но я хотел бы, чтобы выставить моих переменных в глобальный область браузера.

Я закончил тем, что экспорт классов в довольно уродливом виде (window.Stuff = Stuff;) непосредственно из .jsx исходного файла, но я чувствую, как этот код пахнущие ...

Любое предложение на лучший способ достижения такого вещь?

+0

Я думаю, вы должны отредактировать ссылки на 'Symbol' в вашем вопросе. Это заставляет меня думать о JS 'Symbol'. Я думаю, вы используете его для обозначения чего-то типа «имя модуля». – JMM

+0

Готово. Спасибо за замечание :-) –

ответ

2

Либо выставить модули в вашем browserify пачке, например:

browserify() 
    .require('./whatever', {expose: 'whatever'}) 

Тогда из Rails страницы JS:

require('whatever'); 

Или:

Создать автономный browserify расслоение что-то вроде этого :

browserify('./entry', {standalone: 'something'}) 

entry.js

module.exports = { 
    whatever: require('./whatever') 
}; 

Тогда из Rails страницы JS:

window.something.whatever; 
+0

Отлично! «Автономный» вариант работал как шарм ... Большое спасибо! –

+0

Удивительный! Пожалуйста. – JMM