Не удается получить доступ через localhost к моему веб-серверу на докере

В отличие от PHP, JavaScript не предоставляет доступ к массиву globals (который содержит ссылки на все объявленные имена переменных). Таким образом, JavaScript не предлагает встроенную поддержку переменных переменных. Вы можете, однако, эмулировать эту функцию, пока вы определяете все свои переменные как часть массива или объекта. Это, в свою очередь, создаст для вас массив злодеев. Например, вместо объявления переменной hello в глобальной области видимости следующим образом:

var hello = 'hello world';

давайте инкапсулируем ее внутри объекта. Мы будем называть этот объект vv (переменными переменными):

var vv = {
    'hello': 'hello world',
    //Other variable variables come here.
},
referToHello = 'hello';

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

console.log(vv[referToHello]); //Output: hello world

Ответ на ваш вопрос

Давайте применим это к коду, указанному в исходном вопросе:

    var vv = {
        'x': 'variable',
        'variable': 'hello world!'
    };
    console.log(vv[vv['x']]); //Displays "hello, world!"

A Практическое использование

Хотя предыдущий код может показаться смехотворно громоздким и непрактичным, существуют практические применения переменных переменных в JavaScript с использованием такого типа инкапсуляции. В приведенном ниже примере мы используем ту же концепцию, чтобы получить идентификатор неопределенного количества элементов HTML.

var elementIds = [],
        elements = ['message','fillOrStroke','sizePicker','colorPicker']; //The items in this array could be defined automatically via an input, database query, event, etc.
        elements.forEach( (element) => {
            elementIds[element] = document.getElementById(element);
        });

В этом примере объявляются переменные переменные (ключи в elementIds) на основе идентификатора каждого элемента , и назначит узел упомянутого элемента как значение каждой переменной. И поскольку использование глобальных переменных в JavaScript, как правило, не рекомендуется, если переменные переменные являются уникальной областью (в этом случае, объявив их внутри массива elementIds) не только аккуратно, но и более ответственным.

0
задан Maik 13 July 2018 в 16:08
поделиться

1 ответ

Работа!

Решением было перенаправить мой 8001 host port в 8000 docker port. Вероятно, мой ноутбук использовал этот порт. То же самое произошло для 5432 postgreSQL port.

В Winwdos также работает с docker toolbox, но для подключения браузера throug рекомендуется использовать Kitematic (программный инструмент, который поставляется по умолчанию с панелью инструментов докеров), потому что он позволяет быстро подключиться к docker web server IP. В windows docker выполняется в VirtualBox, поэтому вы не можете подключиться с помощью localhost, поскольку он перенаправляется на виртуальную машину, а не на контейнер, запущенный на этом VM.

0
ответ дан Maik 17 August 2018 в 12:26
поделиться