javascript - 在最新的Firefox 21.0失败时,使用requireJS加载多个模块

  显示原文与译文双语对照的内容
0 0

我尝试使用 3个diff模块作为定义的below

credit.js


 define(function(){
 return{
 getCredits: function (){
 console.log("Inside getCredits");
 return 10;
 }
 }
 });

product.js


 define(function(){
 console.log("Inside product");
 return {
 bookTheProduct: function(){
 console.log("Inside bookTheProduct");
 return true;
 }
 }
 });

pruchase.js


 require.config({
 shim: {
 purchase: {
 deps : ["credit","product"]
 }
 }
 });
 define(["credit","product"], function(credit,product){
 console.log("purchaseproduct");
 return {
 purchaseProduct: function (){
 console.log("Inside of PurchaseProduct");
 var credits = credit.getCredits();
 if(credits> 0){
 product.bookTheProduct();
 return true;
 }
 return false;
 }
 }
 });

在 app.js 中使用


 require(["purchase"],function(purchase){
 purchase.purchaseProduct();
 })

在 Firefox 21.0中尝试的时候,加载的同时加载了信用模块,但从未加载过产品模块。 如果我颠倒订单,它加载产品模块而不是信用模块。 没有在RequireJs文档中找到任何帮助,也没有在。 也没看到 cribing abt 。 曾经遇到过这个问题? 我做了一些错误的事,如果你能给我指出错误。 谢谢

时间: 原作者:

0 0

就像在注释中提到的,shim 配置是用于不支持AMD模块定义的Javascript文件,并用于导入一些将一些变量添加到 window 范围( 像 jQuery )的Javascript库。 阅读更多关于 shim

你的情况下,所有模块都是AMD模块( 它们都是使用 define 定义的),因此不需要 shim 。 相反,你可以使用 paths 配置为你的模块创建别名。 同时将 require.config 移出模块并进入 require 调用发生的位置。

因此,从 purchase.js -file中删除 require.config,然后将以下内容添加到 app.js -file的开头


require.config({
//with the paths -config, you create aliases for you modules
//basically you tell require that this file contains definition for module x
 paths: {
 'purchase': 'path/to/purchase',//no. js file ending in the path
 'credit': 'path/to/credit',
 'product': 'path/to/product'
 }
});

你可以阅读更多关于 require.config

现在你已经配置了 RequireJS,这样它就知道模块购买的位置。信用和产品的位置以及它将加载它们的位置。 之后,它们可以在声明RequireJS依赖项时用各自的别名来引用。

希望有帮助!

...