Пространство имен динамически загружаемого содержимого файла JavaScript - PullRequest
10 голосов
/ 14 августа 2011

Возможно ли пространство имен для файла JavaScript, вставленного динамически?

Я знаю, что могу динамически включать файл JavaScript, создав тег script и вставить его в DOM, но может ли этот включенный файл быть пространством имен? Итак, если файл имеет функцию с именем bar, я бы хотел получить к нему доступ через пространство имен, скажем, foo: т.е. foo.bar().

Ответы [ 2 ]

6 голосов
/ 14 августа 2011

Да, CommonJS Modules / 1.1 указывает только один способ сделать это.

Я использовал его только с Node.js на стороне сервера, но я считаю, что есть другие библиотеки, созданные для работы с браузером, которые совместимы с CommonJS.Помните, что существует несколько спецификаций модулей для сервера / браузера (пока не углублялся в это).

Модули написаны так же, как и любой другой фрагмент javascript, единственное дополнение - вы экспортируете то, что хотите показать:

module.exports.bar = Bar;

function Bar() {
 // code
}

И использование:

var foo = require('mymodule');

foo.bar();

Что на самом деле делается в фоновом режиме, весь код оборачивается в другую функцию и экспортирует ее свойства.

Кроме того, Майкл Болин говорил о схожей проблеме в своем выступлении по ключевому слову «с» в JSConf .

0 голосов
/ 14 августа 2011

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

...