javascript – Require.js嵌套需要

我正在尝试使用requireJS,但我想构建依赖关系的层次结构:main要求obr.platcom和obr.platcom需要obr(例如).

我有这种文件层次结构:

- index.html
-> js
   - main.js
   -> lib
      - jquery.js
      - require.js
   -> obr [my own 'libraries']
      - obr.js
      - obr.platcom.js

的index.html

<!DOCTYPE html>
<html lang="es">
    <head>
        <Meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <Meta name="viewport" content="initial-scale=1.0, width=device-width" />
        <title>Platcom</title>
        <script type="text/javascript" src="js/lib/jquery.js"></script>
        <script data-main="js/main" src="js/lib/require.js"></script>
    </head>
    <body>
    </body>
</html>

main.js

$(document).ready(function() {
    require(["obr/obr.platcom"], function() {
        obr.hola();
        var myPlatcom = obr.platcom();
        myPlatcom.test();
    });
});

obr.js

var obr = {};
obr.hola = function() {
    alert('Hola OBR');
};

obr.platcom.js

require(["obr.js"],function() {
    obr.platcom = function(params) {
        var that = {};

        var test = function test() {
            alert('Hola Platcom!');
        }

        that.test = test;
        return that;
    }
});

如果我要求main中的obr和obr.platcom文件都可以,但是如果我使用这个嵌套样式,我会收到下一个错误

Uncaught ReferenceError: obr is not defined       main.js:3

你知道我做错了什么吗?
先感谢您.

解决方法:

好吧,你做错了几件事.

>您需要指定要注入的依赖项作为参数.例如,require([“obr / obr.platcom”],function(){除非你指定如何调用所需的模块,否则不会做太多.你应该需要这个:

require(["obr/obr.platcom"], function( obr ) {

这样,您就知道所需对象在哪个变量中.
> obr.js变量位于全局范围内.您需要将它们包装在require或define函数调用中.以下将有效:

define(function() {
    var obr = {};
    obr.hola = function() {};
    return obr;
});

您可能已经注意到上一个文件有些问题.
>如果您希望在某处导入模块,则必须对其进行定义.所以你必须使用define函数,而不是require函数.而且define函数必须返回一个对象.这是一个固定的obr.platcom.js文件

// If you don't use "define" for the obr.js file too, this won't work
define(['obr'], function( obr ) {
    obr.platcom = function() {};

    // Don't forget to return the obr object, or the require of
    // the main file won't return anything
    return obr;
});

这样,事情就以正确的方式完成.或者至少,require.js希望你做的事情.

我希望这能告诉你如何有效地使用require.js来轻松地分离模块中的代码:)

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: &lt;span id=&quot...
jQuery 添加水印 &lt;script src=&quot;../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...