2015-04-17 2 views
-1

На моей книге Эрика Эллиота я нахожу эти три кода, но я не могу понять, как использовать их:Использование Require.js для сценария с QUnit

(1)

define(['ch04/amd1', 'ch04/amd2'], 
function myModule(amd1, amd2) { 
    var testResults = { 
     test1: amd1.test(), 
     test2: amd2.test() 
    }, 
    // Define a public API for your module: 
    api = { 
     testResults: function() { 
      return testResults; 
     } 
    }; 
    return api; 
}); 

(2)

require(['ch04-amd'], function (amd) { 
    var results = amd.testResults(); 
    test('AMD with Require.js', function() { 
     equal(results.test1, true, 
      'First dependency loaded correctly.'); 
     equal(results.test2, true, 
      'Second dependency loaded correctly.'); 
    }); 
}); 

(3)

if (typeof define === 'function') { 
    define([], function() { 
     return api; 
    }); 
} 

Я пытался использовать require.js и я пишу эти коды, но он не работает:

Javascript \ librerie \ jquery.js

Javascript \ librerie \ qunit.js

Javascript \ librerie \ require.js

script_libro_eric_elliott.php

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Utilizzo della libreria Require.js</title> 
     <meta charset="UTF-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
     <script data-main="javascript/moduli" src="javascript/librerie/require.js"> 
     </script> 
    </head> 
    <body> 
     <div>Utilizzo della libreria Require.js</div> 
    </body> 
</html> 

JavaScript \ модули \ script_libro.js

define(['ch04/amd1', 'ch04/amd2'], 
function myModule(amd1, amd2) { 
    var testResults = { 
     test1: amd1.test(), 
     test2: amd2.test() 
    }, 
    // Define a public API for your module: 
    api = { 
     testResults: function() { 
      return testResults; 
     } 
    }; 
    return api; 
}); 

Javascript \ модули \ main.js

require(['ch04-amd'], function (amd) { 
    var results = amd.testResults(); 
    test('AMD with Require.js', function() { 
     equal(results.test1, console.log(true), 
      'First dependency loaded correctly.'); 
     equal(results.test2, console.log(true), 
      'Second dependency loaded correctly.'); 
    }); 
}); 

Javascript \ configurazione. js

/* global requirejs */ 
requirejs.config({ 
    "baseUrl": "javascript/librerie", 
    "paths": { 
     "moduli": "../moduli" 
    }, 
    "shim": { 
     "script_libro": { 
      deps: ["jquery", "qunit"] 
     } 
    } 
}); 
requirejs(["moduli/main"]); 

Я хотел бы написать выходные строки на консоли, чтобы изменить сценарий Эрика Эллиота. На моей консоли я могу только читать:

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

Не могли бы вы мне помочь?


NEW UPDATE


Я считаю, что проблема заключается в script_libro.js на самом деле консоль найти ошибку только в этом файле. Я посылаю вам мой новый код:

script_libro_eric_elliott.php

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Utilizzo della libreria Require.js</title> 
     <meta charset="UTF-8"> 
     <meta name="viewport" content="width=device-width, 
initial-scale=1.0"> 
     <script data-main="javascript/configurazione.js" 
       src="javascript/librerie/require.js"> 
     </script> 
    </head> 
    <body> 
     <div>Utilizzo della libreria Require.js</div> 
     <div id="contenitore"></div> 
    </body> 
</html> 

Javascript \ модули \ script_libro.JS

define(['jquery', 'qunit'], function myModule(amd1, amd2) { 
    var testResults = { 
     test1: amd1.test(), 
     test2: amd2.test() 
    }, 
    api = { 
     testResults: function() { 
      return testResults; 
     } 
    }; 
    return api; 
}); 

Javascript \ модули \ main.js

require(['javascript/moduli/script_libro.js'], function (amd) { 
    var results = amd.testResults; 
    test('AMD with Require.js', function() { 
     equal(results.test1, true, 
       console.log('First dependency loaded correctly.')); 
     equal(results.test2, true, 
       console.log('Second dependency loaded correctly.')); 
    }); 
}); 

Javascript \ configurazione.js

require.config({ 
    baseUrl: 'javascript/librerie', 
    urlArgs: "bust=" + (new Date()).getTime(), 
    paths: { 
     CartellaModuli: '../moduli', 
    }, 
    shim: { 
     script_libro: { 
      deps: ['qunit', 'jquery'] 
     } 
    } 
}); 
require(['CartellaModuli/main']); 

ответ

0

Ваши данные магистральный должен указывать на модуль вместо каталог. Попробуйте изменить его на data-main="javascript/moduli/main".

Это, вероятно, не решит все, поскольку вы не включаете свою конфигурацию в configurazione.js в любом месте.

+0

я получаю это сообщение: Ошибка: Ошибка сценария для: модули/script_libro http://requirejs.org/docs/errors.html#scripterror require.js: 8: 251 Ошибка: Ошибка сценария для: QUnit http://requirejs.org/docs/errors.html#scripterror require.js: 8: 251 Ошибка: ошибка скрипта для: jquery http://requirejs.org/docs/errors.html#scripterror require.js : 8: 251 Что я должен написать в файле configurazione.js? – marchionili

+0

Вам следует начать с чего-то более простого, например, одного модуля, который печатает Hello World. Нет библиотек, нет дополнительной настройки. Затем добавьте это, пока оно больше не будет работать. Затем прочитайте документацию requirejs, научитесь использовать инструменты разработчика вашего браузера, а затем, если у вас есть проблемы, вы можете разместить здесь более конкретный вопрос. – ekuusela

+0

Наконец-то я нашел ошибку, но не нашел решения. Я попытался использовать эту библиотеку для других проблем, и я должен сказать, что она работает правильно. Я не понимаю, почему автор использует test1.test(), что делает этот код? В консоли я читаю «TypeError: amd1.test не является функцией», и это правильно. Что он имел в виду автора с этим кодом? – marchionili

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