2016-01-21 3 views
1

Я только начал использовать RequireJS. Я пробовал простой код, но один способ работает, а другой нет.RequireJS не загружает файл или модуль с именем «module.js»

папка "сценарий" имеет "main.js", "module.js", "require.js"

<script data-main="script/main.js" src="script/require.js"></script>

в main.js

requirejs(['module'], function(mod) { 
    mod.sayHello(); 
}); 

в module.js :

define({ 
    name : "value", 
    sayHello : function() { 
     alert("Hello"); 
    }, 
    sayBye : function() { 
     alert("Bye"); 
    } 
}); 

Я ожидаю BaseUrl быть "сценарий", как указано здесь:

http://requirejs.org/docs/api.html#jsfiles

The BaseUrl обычно устанавливается в тот же каталог, что и сценарий, используемый в атрибуте данных Главным для сценария верхнего уровня для загрузки для страницы.

Итак, я думал, что проблем не будет, но не mod.sayHello() и sayBye() и console.log (mod.name) = undefined.

Я попытался console.log(mod) и печатает что-то вроде этого:

Object {id: "[email protected]", uri: "script/[email protected]", exports: Object}

Когда я использую [ "скрипт/module.js"] вместо [ "модуль"], console.log(mod) печатает как следующее:

Object {name: "value"} 
name: "value" 
sayBye:() 
sayHello:() 
__proto__: Object 

и mod.sayHello(), mod.sayBye(), mod.name все работает.

включая следующие в начале main.js то же самое:

requirejs.config({ 
    baseUrl: "script" 
}); 

Что я делаю неправильно ... Пожалуйста, помогите.

ответ

1

Используйте этот псевдонимы иначе, как module. Во-первых, это ужасно неинформативное имя, но модуль с именем module является специальным модулем для RequireJS. Это модуль, который дает информацию о модуле вы в настоящее время, например, если foo.js содержит этот код:.

define(['module'], function (module) { 
    console.log(module.id); 
}); 

и этот файл будет загружен, когда вы запрашиваете модуль с именем foo, то console.log покажет "foo" на консоль.

В документации не указывается существование module, но об этом говорится в объяснении того, что делает опция конфигурации config. Потому что вы получаете доступ к конфигурации своего модуля через module.config().

Причина, по которой требуется работа "script/module.js", заключается в том, что, когда вы делаете это, вам нужен модуль с именем script/module.js, а не module.

+0

ой ... Я только что обнаружил, что файл с именем «test.js» работает (на другом компьютере). Таким образом, это может послужить причиной того, что мой код работает, но не работает одновременно. Итак, уже существует «модуль», поэтому он не дает мне «Ошибка скрипта ... любое имя файла не найдено». Я должен был попробовать его с помощью «module.js» в другой папке. Этого я никогда не ожидал. Я прочитал документацию только до 1.3, затем попробовал сам. Спасибо за такую ​​большую информацию. – user3290525

0

Я продолжал читать документацию:

http://requirejs.org/docs/api.html

и это привело к GitHub, который имеет информацию об этом:

https://github.com/jrburke/requirejs/wiki/Differences-between-the-simplified-CommonJS-wrapper-and-standard-AMD-define#magic

Оказывается, что "модуль" является своего рода «магических модулей», как «требуется», «экспорт».

И "модуль" ...:

дает информацию о ID модуля и расположения текущего модуля

https://github.com/jrburke/requirejs/wiki/Differences-between-the-simplified-CommonJS-wrapper-and-standard-AMD-define#module

Смежные вопросы