Requirejs在define()里面加载不同的js文件

时间:2016-09-18 06:58:48

标签: javascript requirejs

我的网页有不同的js组件,可以处理不同的业务逻辑。我正在使用RequireJS来管理依赖项。我想动态加载所需的组件。

例如:

define(['something'],function(something){
    var processor;
    if(userRole === "student"){
        //I want to dynamically load studentProcessor.js here;
    }
    else if(userRole === "teacher"){
        //I want to dynamically load teacherProcessor.js here;
    }     

    processor.process();
});

真的很感激,如果有人能告诉我处理这件事的最佳方法是什么。

1 个答案:

答案 0 :(得分:3)

我认为最简单的处理方法是从用户角色到处理器的映射。 然后在您的函数中,您仍然需要检查是否已设置userRole,并且已定义角色的处理器。

// This is where processors are associated to user roles.
var roleToProcessorMapping =
{
  student: './studentProcessor.js',
  teacher: './teacherProcessor.js'
};

define(['something'],function(something){
    if(userRole){
      var processorPath = roleToProcessorMapping[userRole];
      if(processorPath){
        require([processorPath], function(processor){
          processor.process();
        });
        return;
      }
    }
    // handle error
});