2016-08-21 1 views
1

Я пытаюсь написать компонент Javascript, используя метеор, который предназначен для встраивания в сторонние веб-сайты (т. Е. Приложение для поддержки чата поддержки). В идеале я хотел бы, чтобы пользователь мог вставить только небольшой кусок javascript или один тег <script>, чтобы использовать приложение.Как получить переменные __meteor_runtime_config__ с сервера

Проблема в том, что для обычных веб-страниц метеорит динамически генерирует и вводит глобальную переменную __meteor_runtime_config__, которая имеет кучу важных параметров метеорита.

Как я могу получить значение этой переменной, если включить стандартный файл метеода .js или (еще лучше) построить его в файл пакета при развертывании приложения метеоров?

ответ

1

Существует сторонняя утилита, называемая Meteor Build Client, которая позволяет извлекать клиентскую часть любого приложения Meteor, поэтому вы можете вставлять ее на любую веб-страницу отдельно от остальной части вашего приложения Meteor (затем вы подключаете извлеченный клиент код с вашим развернутым сервером Meteor через DDP). Этот инструмент может сэкономить вам некоторое время.

Если вы все еще хотите знать, как правильно работать с настройками __meteor_runtime_config__, взгляните на source of the Meteor Build Client utility (так как это позаботится об этом для вас). Я разместил соответствующую часть ниже:

... 
// ADD the SCRIPT files 
var scripts = '__meteor_runtime_config__'+ "\n"+ 
'  <script type="text/javascript" src="'+ files['js'] +'"></script>'+ "\n"; 

// add the meteor runtime config 
settings = { 
    'meteorRelease': starJson.meteorRelease, 
    'ROOT_URL_PATH_PREFIX': '', 
    meteorEnv: { NODE_ENV: 'production' }, 
}; 
// on url = "default", we dont set the ROOT_URL, so Meteor chooses the app serving url for its DDP connection 
if(program.url !== 'default') 
    settings.ROOT_URL = program.url || ''; 

if(settingsJson.public) 
    settings.PUBLIC_SETTINGS = settingsJson.public; 

scripts = scripts.replace('__meteor_runtime_config__', '<script type="text/javascript">__meteor_runtime_config__ = JSON.parse(decodeURIComponent("'+encodeURIComponent(JSON.stringify(settings))+'"));</script>'); 
... 
Смежные вопросы