如何保持评论

上下文:对于JavaScript项目的开发版本,我编写了一个小工具来跟踪脚本文件依赖关系(因为我不喜欢任何现有库的欢闹语法要求)。 我想以类似于其他语言的方式使其工作,所以我决定解析导入的文件以获得如下注释:

// DEPENDS: myurl.js //

使用jQuery的$ .ajax()构建和评估依赖关系图并获取依赖关系。 这适用于顶级文件。 但是,使用ajax调用的文件会被删除注释,因此我无法进一步解析依赖关系。

为了您的利益:循环是

  • 获取文件
  • 使用正则表达式解析依赖关系的内容
  • 必要时扩展依赖关系图
  • 从(1)开始,如果(3)发生(当然需要文件)
  • 按顺序评估文件的脚本内容
  • 问题:有没有办法阻止jQuery从$ .ajax()加载的文件中删除JavaScript评论标签?

    代码:我以这种方式调用ajax

    $.ajax({
      url: fileName,
      dataType: 'text',
      context: this,
      success: function(jqXHR) {
        this.parseImport(fileName, jqXHR);
      }
    });
    

    (从一个提供fileName的方法内部和正确的)。 我希望dataType:'text'会迫使jQuery从字面上导入文本,但是,它并没有:--D

    $ .ajax()的API文档告诉,dataType:text元素的内容被window.String解析,但我不确定,window.String对它的输入做了什么。 也许解决方案是在这个部分的某个地方?

    如果有人能指出我的方向,我会很高兴。


    你使用ajax方式不会去除文件中的注释。 你要求jQuery从服务器加载文本。 它会忠实地加载该文本,而不以任何方式修改它。 我怀疑在删除注释的服务器端有一些缩小/压缩过程。 该jQuery代码不会。

    但是你仍然可以绕过去除评论的任何东西 - 不使用评论。 您可以改为使用字符串:

    "DEPENDS: myurl.js";
    

    既然这不是评论,它不应该被剥夺。 它看起来有点奇怪,但JavaScript的语法有ExpressionStatement,它是一个完全由表达式组成的语句。 当然,字符串本身是一个有效的表达式。 (这是他们如何"use strict";在ES5中,如果没有它会导致ES5之前的JavaScript引擎出现问题)。


    字符串解决方案是一个很好的解决方案,但我真的相信还有一个很好的解决方案。

    只需用ajaxTransport定义你的ajax引擎,例如“myscript”。 例如,看到这个链接:你可以注册你的方法,它会以你喜欢的方式返回所有的东西; 此外:您可以直接在传输中解析注释,并以数组的形式返回依赖关系。

    这将封装您的解析方法,并将它们构建为ajax调用,就像它是您自己的JavaScript文件标准一样。

    要了解更多信息(实际上他们缺少示例),请参阅参阅jQuery文档

    链接地址: http://www.djcxy.com/p/84997.html

    上一篇: how to keep comments

    下一篇: OAuth2 Password Grant Type with Client