2016-05-23 2 views
0

Я только начал узнавать о RequireJs, но не смог загрузить js-зависимость, используя свое сокращенное имя. Я не понимаю, что я делаю неправильно здесь, я пытаюсь загрузить Нокаут библиотеку JS, используя только «нокаут», но он выдает ошибкуRequireJs не загружает скрипт по имени

Error: Script error for "knockout" 
http://requirejs.org/docs/errors.html#scripterror 

, если я использую «Нокаут-3.4.0» это работает хорошо, но я бы предпочел, чтобы использовать укороченный

<!DOCTYPE html> 
 
<html> 
 
\t <head> 
 
\t \t <script type="text/javascript" data-main="js/init.js" src="js/require.js"></script> 
 
\t </head> 
 
    <body> 
 
     <h1 data-bind="text: TabIndx">Hello World</h1> \t \t 
 
\t \t <script> 
 
\t \t require(['knockout', 'viewModel'], function(ko, viewModel) { 
 
\t \t \t var vm = new viewModel(); 
 
\t \t \t ko.applyBindings(vm); 
 
\t \t }); 
 
\t \t </script> 
 
    </body> 
 
</html>

require.config({ 
 
\t baseUrl: 'js', 
 
    paths: { 
 
     knockout: 'knockout-3.4.0', 
 
\t \t viewModel: 'viewModel' 
 
    } 
 
});

+0

Is 'init.js' где вы определяете' require.config '? Не могли бы вы разместить все содержимое 'init.js'? – Shakespeare

ответ

1

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

// app.js 
define(['knockout', 'viewModel'], function (ko, viewModel) { 
    var vm = new viewModel(); 
    ko.applyBindings(vm); 
}); 

require.config({ 
    baseUrl: './js/', 
    paths: { 
     knockout: 'knockout-3.4.0', 
     viewModel: 'viewModel', 
     app: 'app' 
    } 
}); 

Я не знаю, как init.js выглядит, но здесь я сделал это немного модуль, отвечающий за запуск app.js файла.

define(['app'], function (app) { 
    app.init(); 
}); 

Ваш конфиг в идеале должен быть переработан в отдельный файл, где require-config.js просто содержит ваш конфигурационный фрагмент кода, например, так: -

<script type="text/javascript" data-main="js/init.js" src="js/require.js"></script> 
<script type="text/javascript" src="js/require-config.js"></script> 
+0

Спасибо, теперь я понял, что у меня был код конфигурации внутри init.js, но он загружен async и не был загружен вовремя, поэтому сообщение об ошибке. – chillydk147

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