javascript - var callback = require(['xxxx/xxx']), callback的值是什么?
ringa_lee
ringa_lee 2017-04-10 16:52:22
[JavaScript讨论组]

已经对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的教程或者资源,希望能分享一下,项目需要,正在学习中,谢谢!

ringa_lee
ringa_lee

ringa_lee

全部回复(2)
ringa_lee

你这个写法是不符合模块化规范的,在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();

得到了想要的结果!!

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号