【问题标题】:Remove newlines from a JSMin minified file and parsing error on IF condition从 JSMin 缩小文件中删除换行符并在 IF 条件下解析错误
【发布时间】:2011-09-29 15:18:01
【问题描述】:

我正在尝试使用 php 和 JSMin 即时缩小 javascript 文件。 一切正常,但是当我尝试删除换行符时

$jsMinifiedClean = str_replace( array("\r","\n"),"",$jsMinified);

我收到一个 javascript 解析错误。 在代码中快速搜索后,我发现了问题:

if( condition ) statement
else statement;

“if”条件在行尾没有“;”。

为什么对代码进行手动 YUI 压缩不会出错? if 末尾的分号真的是强制性的,以避免使用 JSMin 压缩的问题吗?

【问题讨论】:

    标签: php javascript newline minify


    【解决方案1】:

    if 末尾的分号真的是强制性的,以避免使用 JSMin 压缩的问题吗?

    如果您删除换行符。默认情况下,JSMin 确实 删除换行符正是出于这个原因,这就是automatic semicolon insertion 的可怕之处。来自JSMin page

    省略换行更为保守,因为换行有时被视为分号。如果换行符位于非 ASCII 字符或 ASCII 字母或数字或以下字符之一之前,则不会省略换行符:

    \ $ _ { [ ( + -
    

    如果它跟在非 ASCII 字符或 ASCII 字母或数字或这些字符之一之后:

    \ $ _ } ] ) + - " '
    

    如果您随后删除了换行符,则您需要自己确保换行符由于 ASI 而不是重要的。

    【讨论】:

      猜你喜欢
      • 2021-06-09
      • 2019-03-21
      • 2014-10-30
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      相关资源
      最近更新 更多