【问题标题】:using EJS with requirejs将 EJS 与 requirejs 一起使用
【发布时间】:2014-06-01 17:23:31
【问题描述】:

我在将 ejs 包含到 requirejs 时遇到了问题。我将<script data-main="js/app" src="js/require.js"></script> 放在我的和body 内部创建EJS 对象。

在我的 app.js 中,

require.config({

paths: {
    //library
    jquery: 'lib/jquery-1.11.1.min',
    jquerymobile: "lib/jquery.mobile-1.4.2.min", 
    text: 'text',
    ejs: 'ejs_0.9_alpha_1_production'
},
shim: {
    "ejs": {
        exports: 'ejs'
      }
}
});

require(['jquery', 'jquerymobile','text','ejs'], function ($, mobile) {
    console.log('jQuery version:', $.fn.jquery); // 1.9.0
});

当它运行时,它会抛出 EJS is not defined 错误。但是,如果我包括

<script type="text/javascript" src="js/ejs_0.9_alpha_1_production.js"></script>

在头脑中,一切顺利。

问候 锤子

【问题讨论】:

  • 我还发现 requirejs 很难与其他库一起使用,反之亦然。这就是为什么我创建了一个更易于使用并使用 Angular 进行测试的库。底部有一个演示应用:gngeorgiev.github.io/Modulerr.js

标签: requirejs ejs


【解决方案1】:

最近我在浏览器中使用 ejs 时遇到了类似的问题。我发布答案,因为它可以节省别人的时间。

我建议你仔细检查你的 ejs 库确实来自https://github.com/visionmedia/ejs。现在有相当多的 ejs 调整版本,因为它变得非常流行。不幸的是,这些版本中的大多数都针对特定需求并将不同的对象返回到窗口(例如 EJS 而不是 ejs),或者甚至不返回任何对 requirejs 有用的东西。

=> 在这两种情况下,这都会解释为什么您的 shim 导出返回 undefined。

一旦你让它正确加载,让我在 https://github.com/whitcomb/requirejs-ejs 上发现一个很棒的 requirejs-ejs 插件。它可以帮助您以一种不错的 requirejs 方式预加载和呈现您的模板。

【讨论】:

    猜你喜欢
    • 2015-10-17
    • 2014-10-06
    • 2023-04-09
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多