首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XRegExp与RequireJS兼容吗?

XRegExp与RequireJS兼容吗?
EN

Stack Overflow用户
提问于 2014-08-25 17:22:18
回答 2查看 260关注 0票数 0

我下载了RequireJS单页应用程序示例。在www/lib文件夹中,我将XRegExp源代码xregexp-all.js (Version2.0.0)放入其中。

在www/app/main.js中,我添加了:

代码语言:javascript
复制
var xregexp = require('xregexp-all');
print(typeof(xregexp));

控制台输出是:

未定义

但是,requireJS不会发出任何错误消息。我做错了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-25 17:34:30

是的,你做错了什么。只有为XRegExp分发的文件的某些版本执行所需的define调用,该调用将它们定义为RequireJS模块。您所使用的调用不包含该调用。您可以通过在文件中搜索define(字符串来确定这一点。

您需要将一个shim添加到您的配置中,以便RequireJS可以加载XRegExp,或者您必须使用调用define的文件的一个版本,例如这一个,它是XRegExp 3.0.0 (仍然是alpha)。如果您想使用2.x,那么您的配置应该如下所示:

代码语言:javascript
复制
paths: {
    xregexp: "../whatever/your/path/actualy/is/xregexp-all"
}

shim: {
    xregexp: {
      exports: "XRegExp",
    },
} 

请注意,此配置将模块名规范化为xregexp,因此您必须将其要求为xregexp,而不是xregexp-all。通常,我不喜欢在我的模块名中使用-all.min之类的东西,因为这些内容可能会根据情况而改变。

shim告诉RequireJS,当需要xregexp时它应该导出的值是全局符号XRegExp的值。这通常是你如何处理模块,不知道AMD.

票数 1
EN

Stack Overflow用户

发布于 2014-08-25 17:28:12

在库的源代码中快速搜索" AMD“或"define”应该是判断它是否支持AMD方案的最快方法。如果不是,那就不是(啊!)

但是,如果库公开了全局,那么您可以使用RequireJS shim加载它,也可以使用path告诉RequireJS检索它的位置。

代码语言:javascript
复制
// Exporting a traditional library through RequireJS
require.config({
  paths : {
    jaykweri : 'path/to/jQuery' // moduleName : pathToModule
  },
  shim : {
    jaykweri : {exports : '$'}  // exporting the global
  }
});

// Using that library in requireJS
define(['jaykweri'],function(globl){
  // globl === $
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25491122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档