Javascript 如何使用RequireJS加载下划线库?

Javascript 如何使用RequireJS加载下划线库?,javascript,underscore.js,requirejs,Javascript,Underscore.js,Requirejs,不行!(不是一个函数) 如何管理它?这完全取决于脚本的基础位置。 require(['underscore'], function ($, _) { ... }); 因为我没有看到您指定baseUrl,所以baseUrl将是默认值, 这意味着两件事之一: 您的脚本直接位于html文件中,在您的例子中 因此,将在html的同一目录中查找underline.js 文件 脚本位于html引用的javascript文件中 文件,它现在将在 自定义javascript文件 检查下划线.js是否确实存

不行!(
不是一个函数)


如何管理它?

这完全取决于脚本的基础位置。
require(['underscore'], function ($, _) {
  ...
});
因为我没有看到您指定baseUrl,所以baseUrl将是默认值, 这意味着两件事之一:

  • 您的脚本直接位于html文件中,在您的例子中 因此,将在html的同一目录中查找underline.js 文件
  • 脚本位于html引用的javascript文件中 文件,它现在将在 自定义javascript文件

  • 检查下划线.js是否确实存在。

    我认为问题在于传入回调的参数的顺序

    应该是:

    require(["underscore"], function() { 
      console.log(_ === window._);
    });
    

    此外,您还需要使用添加了此功能的下划线版本1.2.1。

    以下是检查点,以确保您所需的工作正常

  • 获取并将其放到您的
    /js根目录下

  • 添加到您的HTML,就在结束标记之前:

  • 获取,并将其放入
    /js root
    目录

  • main js file name.js中

  • 写:

    require(['underscore'], function (_, $) {
     ...
    });
    
    类似地,在非主AMD JS文件中,当定义模块时,要使用
    \uuu
    ,请编写:

    require(["jquery", "underscore"], function ($, _) {
        ...
    });
    

    请注意,下划线.js不会将自己注册为AMD模块(尽管在早期版本中它注册了一段时间),因此,如果没有使用“shim:”进行一些配置,则无法在require()调用中使用它,例如:

    见以下文档:

    在将
    shim:
    添加到require.js之前,您可以对插件use.js执行类似的操作(以防您需要使用旧版本的require.js)

    在撰写本文时,require.js的当前版本是2.1.8


    或者,您可以使用lodash.js作为下划线.js的替代品-它确实注册为AMD模块,因此您可以使用它,而无需额外配置:

    显然,顺序是问题的一部分
    define(["jquery", "underscore"], function ($, _) {
        ...
        return theModuleObjectOrFunction;
    });
    
    require.config({
        paths: {
            jquery: 'lib/jquery.min',
            underscore: 'lib/underscore-min'
        }
        shim: {
            "underscore": {
                exports: "_"
            }
        }
    });