2015-04-17 57 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"]); 

我想在控制檯上編寫輸出字符串,所以我也編輯Eric Elliot的腳本。在我的控制檯上,我只能閱讀:

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

請問您能幫我嗎?


新的更新


我認爲,問題出在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