2015-11-08 4 views
0

Я пишу гибридное приложение, есть несколько отдельных html/js, которые будут загружены в различные веб-просмотры Android.Лучший способ конфигурировать baseUrl для нескольких файлов js

Для отладки, я должен изменить Базовый URL для моего AJAX запроса, в связи с различным сетевым соединением, различными сотрудниками ...

Но разные адреса во многих JS-файлов.

//file1.js 
baseUrl = "192.168.1.114:3000"; 


//file2.js 
baseUrl = "192.168.1.114:3000"; 


//file3.js 
// there are the same baseUrl; 

Я хотел бы настроить и изменить все эти поля одновременно для производства или отладки. Как? Имея Грунт? или Ajax конфигурационный файл перед ajax другим url?

Каков наилучший способ решить эту проблему?

+1

Вы слышали о переменной 'global'? – Rayon

+0

использовать 'window [" baseurl "]'. –

+0

Все эти 'js' работают в отдельном webview, я не думаю, что они будут делиться переменными. – ppn029012

ответ

1

Есть много подходов, и это невозможно решить, что лучше, потому что лучшее решение находится всегда в центре ...

Например, делать это с помощью сборки-инструментов (хрюканье, глотка, ЕСС ...), дает возможность работать с различными конфигурациями trasparently, но вы потеряете возможность переключения ENV на время выполнения ...

Как я могу протестировать домены домена в производственных средах?


Итак, мой опыт говорит о том, что лучшим решением является создание гибридной системы, например:

Via хрюкать-вно-уродовать (например), в то время компиляции, вы можете передать конфигурации все (или только Importants) доступен и, используя другой переменный называется ENV (var ENV = 'PRODUCTION') вы можете позволить вашему приложению решить, какой из них использовать ...

Надеется, что это помогает!

+0

Да, внесите изменения во время компиляции. Но мне действительно не нравится компиляция, потому что она создаст еще один скомпилированный 'js' и увеличит сложность проекта. Я должен разбираться с компилятором 'jsx' и компилятором' grunt' в то же время ... – ppn029012

+0

Конечно, все, что вы вкладываете в свой проект, увеличивает сложность, компиляторы полезны для оптимизации кода, предотвращения ошибок и чего-то еще, но они нужно управлять, сейчас и в будущем ... – Hitmands

0

Время жизни JavaScript Переменные

  • Время жизни переменной начинается JavaScript, когда он объявлен.

  • Локальные переменные удаляются, когда функция завершена.

  • Глобальные переменные удаляются при закрытии страницы.

Используйте глобальную переменную в вашем случае.

0

Если использование JS становится монотонным, попробуйте <base> элемент. Это не так гибко, как глобальные переменные (если вы не возражаете изменить атрибут href), это более удобно.

Просто так я не буду downvoted для не соответствующих тегов Упс ...

var base = document.querySelector('base'); 
base.href = "http://192.168.1.114"; 
+0

Должен ли я изменить все поле в каждом файле HTML? – ppn029012

+0

Да, это первый элемент в '', и есть только 1 обязательный атрибут:' 'атрибут' target' не является обязательным. У меня даже нет конца тега. Это избавит вас от необходимости использовать тонну абсолютных URL-адресов. – zer00ne

+0

Я перечитываю ваш вопрос, и на самом деле это не то, что вам не нужно менять базовый элемент для каждой страницы. У вас может быть другая база для каждого файла, или только некоторые страницы или вообще нет, но она ограничена одной на страницу. – zer00ne