Использование модулей ES6 в JavaScript для экспорта простых переменных

Я определяю pageId = 3 в JavaScript в одном файле и socket = io() в другом файле, и я хочу использовать эти переменные в других файлах.

Думаю, мне следует использовать модули в ES6, но я не уверен, как это сделать.

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

Я прочитал несколько руководств, но до сих пор не понимаю, как определить переменную в одном файле и экспортировать ее в другие файлы.

Было бы это просто

const pageId = 3;
const socket = io(); // which is defined in file 'socket.io-1.4.5.js' which is loaded before this file

module.exports = { pageId, socket };

а затем импортировать его в другие файлы с помощью

const pageId = require('pageId');
const socket = require('socket');

socket.on('connect', ...);
(...)

даже никуда не загружая эти файлы?


person mortensen    schedule 06.10.2016    source источник
comment
Возможный дубликат параметров экспорта модуля ES6   -  person Anthony    schedule 06.10.2016
comment
На самом деле, когда они вам нужны, вы загружаете их каким-то образом.   -  person mtsdev    schedule 06.10.2016
comment
Что вы имеете в виду под даже нигде не загружая эти файлы??   -  person Bergi    schedule 06.10.2016
comment
Я имел в виду загрузку их с помощью <script src="file_with_page_id.js"></script>   -  person mortensen    schedule 06.10.2016
comment
@mortensen Вы отметили этот вопрос тегом node.js, в любом случае тегов сценария нет?   -  person Bergi    schedule 06.10.2016


Ответы (1)


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

Представьте, что вы создаете физико-математическую библиотеку с несколькими сотнями модулей. Это имеет смысл. объявлять математические константы только в одном месте и загружать их только тогда, когда они необходимы

Вероятно, экспортировать их по одному - это не лучшее решение, но решение, которое работает.

Что касается объекта io. Для меня также имеет смысл объявить его, изменить некоторые значения конфигурации, а затем повторно экспортировать его с новой конфигурацией везде, где это необходимо, вместо того, чтобы создавать новую и перенастраивать ее везде (предположим, что это поведение работает, что-то, что я сомневаться)

В любом случае, синтаксис вашего образца неверен ... Вы не можете «требовать» и отдельные переменные или функции таким образом. Предположим, что ваш первый файл называется «strange.js», это должно быть сделано так:

const pageId = require('strange').pageId
const socket = require('strange').socket;
person mtsdev    schedule 06.10.2016