jQuery AJAX调用 – 如何保持评论

上下文:对于 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,它是一个完全由表达式组成的语句.当然,字符串文字本身就是一个有效的表达式. (这就是他们如何“使用严格”;在ES5中没有它导致ES5之前的JavaScript引擎出现问题.)

相关文章
相关标签/搜索