reuqure.js如何将主模块分离到子模块

时间:2014-06-27 08:59:15

标签: javascript requirejs

人。我有一些关于如何在我的项目中使用require.js的问题。

我有一些模块。例如:

obj.js

var MyModule = (function(){

    var myObject = function(){
       this.options = {
           foo: 'foo',
           bar: 'bar'
       };
    };

    myObject.prototype.foo = function(){
       console.log(this.options.foo);
    };

    myObject.prototype.bar = function(){
       console.log(this.options.bar);
    };

    return {
       getMyObject : function(){
          return new myObject();
       }
    }
})();

使用我的对象作为实体我没有问题。我在obj.js中附加了这段代码:

define(function(){
   return MyModule;
})

并在我的app.js模块中使用它

requirejs.config({
    baseUrl : 'lib',
    paths : {
        app:'../js/app'
    }
});

require(['app/obj'], function(MyModule){
    var someObj = MyModule.getMyObject();
    someObj.foo();
    someObj.bar();    
});

一切都好。但是我如何将MyModule拆分为一些子模块呢?例如。在模块中,我有1个对象,它的构造函数和两个方法。我可以将构造函数放到文件中,例如'mymodule.myobject.js',foo到'mymodule.myobject.foo.js'并禁止'mymodule.myobject.bar.js'并将它与require.js一起使用?如果确实如此,我该怎么做?

1 个答案:

答案 0 :(得分:0)

你可以用这种方式。期待以下文件结构

- js
  -- constructors
   --- objectCostructor.js   
  -- objects
   --- objectModule.js

所以objectCostructor.js是:

define(function(){
   return myObject = function(){
       this.options = {
           foo: 'foo',
           bar: 'bar'
       }
    }
})

objectModule.js

define(['constructors/objectCostructor'], function(Const){

    Const.prototype.foo = function(){
       console.log(this.options.foo);
    };

    Const.prototype.bar = function(){
       console.log(this.options.bar);
    };

    return {
       getMyObject : function(){
          return new Const();
       }
    }    
})