Я пытался сделать следующее в течение нескольких дней безрезультатно:
У меня есть приложение GWT, которое при запуске выполняет несколько вызовов RPC для загрузки исходных данных. По большей части эти данные относительно статичны, поэтому я бы пропустил вызов RPC, если бы мог. Но данные изменяются чаще, чем приложение, поэтому я бы предпочел не включать их во время компиляции.
Вместо этого я беру данные и сохраняю их в формате JSON в статическом файле .js. Я включаю это в загрузочный HTML для приложения:
HTML
... GWT загружает вещи ...>
script src = "staticstuff.js"> / script> // это преднамеренно неправильно, поэтому будет отображаться при стеке
HTML
со статическим материалом, похожим на:
var startupdata = [JSON .....];
Затем в самом приложении мы делаем следующее:
private native JsArrayString getStaticData()/*-{
return $wnd.startupdata;
}-*/;
Это прекрасно работает, когда наши данные - это массив, или строка, или какой-либо другой собственный объект JS. Кажется, я не могу сделать следующее:
private native OurMoreComplexObject getStaticData()/*-{
return $wnd.startupdata;
}-*/;
Я мог бы извлекать объекты js и анализировать их в моем графе объектов самостоятельно, но я бы предпочел этого не делать, тем более что GWT уже создал для меня конвертер (поскольку OurMoreComplexObject) уже возвращается в вызовах RPC.
Кто-нибудь пытался что-то подобное раньше? Если да, то как мне заставить его работать? Есть ли другой способ сделать это? (Основная цель заключается в том, что если данные хранятся в файле, я могу загрузить их на нашу CDN вместо того, чтобы каждый раз пересылать вызовы на наши серверы при запуске)