var callback = require(['xxxx/xxx']), callback的值是什么?

已经对require进行了简单的配置,定义了main js

现在在一个js文件里定义如下

define(function(require){
    var $ = require('jquery');
    return {
        fun1:function(){
            //TODO Something.
        },
        fun2:function(){
            //TODO Something.
        }
    }
})

我在想如果用require导入这个js,并将这个赋给一个变量

var callback = require(['xxxx/xxx']);

这样在页面某个地方调用这个js里的search

callback.fun1();

<button onclick="callback.fun2();"></button >

但是现实中得到的callback却是如下结果:

function e(c,d,g){var m,p;n.enableBuildCallback&&d&&L(d)&&(d.__requireJsBuild=!0);if("string"===typeof c){if(L(d))return B(G("requireargs","Invalid require call"),g);if(a&&w(S,c))return S[c](t[a.id]);

返回的是require.js里的makeRequire,想问一下为什么会返回这个呢?
还有个问题是关于requireJS的运行机制是什么呢?
如果有相关requireJS的教程或者资源,希望能分享一下,项目需要,正在学习中,谢谢!

阅读 4.6k
2 个回答

你这个写法是不符合模块化规范的,在define函数里,你应该这样写

define(function(require, exports, module){
    var $ = require('jquery');
    module.exports = {
        fun1:function(){
            //TODO Something.
        },
        fun2:function(){
            //TODO Something.
        }
    }
})

首先谢谢大家的回答!

不过我已经解决了,从这里找到的灵感JS模块化工具requireJS|菜鸟教程

里面有说:

通过define函数定义了一个模块,然后再页面中使用:

require(["js/a"]);

来加载该模块(注意require中的依赖是一个数组,即使只有一个依赖,你也必须使用数组来定义),requir API的第二个参数是callback,一个function,是用来处理加载完毕后的逻辑

这样我就想到是否可以在callback方法中来进行赋值呢?

于是我修改了我的代码:

var callback = {};
require(['js/a'],function(a){
    callback = a;
});

callback.fun1();
callback.fun2();

得到了想要的结果!!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题