【问题标题】:How to write advanced conditions in RequireJS?如何在RequireJS中编写高级条件?
【发布时间】:2026-01-18 02:45:02
【问题描述】:

如何使用RequireJS编写包含JavaScript文件的自定义条件?

示例:1

    if("ontouchend" in document) document.write("<script
    src='/js/jquery.mobile.custom.min.js'>"+"<"+"/script>");

示例:2

    <!--[if lt IE 9]>
    <script src="/js/html5shiv.js"></script>
    <![endif]-->

目前我正在使用垫片和路径。有没有地方放这个。可能吗?

【问题讨论】:

  • 感谢@mithunsatheesh,这与 Amol 建议的一样,我一直在寻找在 requireJS 本身中处理这些事情。没有空间可以做到这一点吗?好的,如果我同意您在 HTML 本身中的条件语句,那么对于我的示例:1。如何做到这一点?像其他一些自定义 JS 函数一样。在此先感谢:)
  • 如您所见,这些条件是纯 javascript 中的,与 require 无关。所以问题将减少到您是否可以用javascript编写条件,:)。建议您删除 algorithm|json 标签,因为它们不会对您的问题起到任何作用。

标签: javascript jquery requirejs


【解决方案1】:

您可以在html 元素本身上使用条件特定类,然后在现有脚本中检查它并加载依赖项会更容易。

例如:

<!--[if lt IE 7]> <html class="ie lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>    <html class="ie lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>    <html class="ie lt-ie9"> <![endif]-->
<!--[if gt IE 8]> <html class="ie"> <![endif]-->
<html>

在您的脚本中,您可以尝试以下操作:

if ($('html.lt-ie9').size()) {
    require(['/Scripts/ieSpecificScripts'], function(ieScript) {
        // ... do stuff
    });
}else
{
...
}

编码愉快.. :)

【讨论】:

  • 所以你的意思是,我必须为包含太多 shim 和 jquery 路径标签的脚本维护单独的 common.js 文件。这是一个很大的头痛。对于每个 html 标签,如果我继续使用多个标签对我来说也不好,因为我可以直接从 jquery 检查浏览器及其版本。请提供任何替代解决方案:)
  • 您真的应该感谢最初发布此答案的人,您不觉得吗? *.com/questions/11846747/…
  • @JohnWilliams:是的,你是对的。但谁知道他的回答是一样的呢?此外,在回答没有不标记为重复问题的问题之前,没有人会交叉检查。如果您觉得问题和答案相同/复制/重复。您可以将问题标记为与原始问题本身的重复链接。不是答案。 你不这么认为??没有人可以用不同的方式编写那些 if 条件..lol..它的语法..