【问题标题】:Is it always safe to insert a linebreak after a semicolon?在分号后插入换行符总是安全的吗?
【发布时间】:2011-01-04 18:16:58
【问题描述】:

我在将缩小的 JavaScript 文件签入 Clearcase 时遇到问题。有问题的文件是一行,远远超过8000 character limit that Clearcase imposes

我知道 JavaScript 解释器会在换行符处执行一些tricky things inserting semicolons,但我想知道在分号后添加换行符是否总是安全的。这样做会改变 JavaScript 代码的含义吗?

【问题讨论】:

  • YUI Compressor/minifier 添加了 --line-break 选项。可能其他人也一样。如果源可用,则可以使用 --line-break 7500 重新缩小它。

标签: javascript syntax newline clearcase


【解决方案1】:

要回答您的直接问题:是的,您可以在结束语句的分号后添加换行符。文件中的分号可能还有其他用途(例如在字符串或正则表达式中),您不应该碰这些。

我还有一个问题要问你:你为什么要签入一个缩小的 JavaScript 文件?我认为最好检查原始的详细 JavaScript 源代码。另外,版本控制系统通常对只有一行的文件无效。如果您已经在签入原始 JavaScript,那么您现在必须保持两个文件之间的一致性(即,当您更改一个文件时,您必须刷新另一个文件)。我建议签入一个脚本,该脚本将在部署时缩小原始版本,而不是将缩小后的版本保留在 Clearcase 中。

【讨论】:

  • 缩小的 JS 文件是 dojo 库的一部分,它实际上是我的项目正在使用的另一个库的一部分。因此,对这个其他项目的更新将只包括缩小的 dojo 代码,并且永远不会将 dojo 代码作为常规开发工作的一部分进行编辑(它只会作为对其他库的更新的一部分进行更新)。
  • @pkaeding 你可以将文件添加为二进制文件吗?相当于一个。
  • @Kathy 是的,这就是我最终所做的。我不得不让 ClearCase 管理员更改文件类型,但一旦完成,一切顺利。 (我将此答案标记为已接受,因为我觉得它完全回答了我提出的问题,即使这不是我为解决我遇到的问题所做的)
【解决方案2】:

分号可能封装在字符串中。在字符串中添加换行符会改变 javascript 的含义。

【讨论】:

  • 祝你好运构建一个正则表达式来匹配匹配引号之间的分号。 ;)
【解决方案3】:

如果分号在字符串或正则表达式中(例如var rex = /;/g; — 只有在第二个分号后插入换行符才是安全的),那么是的,这显然是个问题。否则,语句后换行总是安全的。

【讨论】:

    【解决方案4】:

    管理员或开发人员可能需要在每个存储工件的 VOB 上运行此命令 (在所需 VOB 的上下文中) (不是 100% 确定 -supertype,“binary_file”可能会更好) (不是 100% 确定 -mergetype,“复制”可能会更好!) (您以后可以随时通过 -replace 选项进行更改)

    cleartool mkeltype -nc -supertype text_file -manager z_whole_copy -mergetype auto text_file_minified

    这可用于更正尝试签入失败的文件。 它们可能是使用“text_file”类型创建的 text_file 类型的单行不能超过 8000 个字符。

    cleartool chtype -nc -force text_file_minified jquery-1.8.2.min.js

    将此文件放在您签入的桌面/开发机器上。 删除所有前导空格。

    # AAA.magic
    # This needs to copied to all developer desktops
    # copy it next to default.magic (or cc.magic)
    #   under ...\ClearCase\config\magic
    
    # Leave these from the default.magic just in case
    # files are processed in alphabetic order, hence the AAA prefix
    
    # Check stat type
    directory : -stat d ;
    block_device : -stat b ;
    char_device : -stat c ;
    socket : -stat s ;
    fifo : -stat f ;
    
    # minified javascript and CSS
    # some of these violate the 8000 character per line limit 
    #  of clearcase text tools/type managers
    # *.min.js
    text_file_minified : -name "*.[mM][iI][nN].[jJ][sS]" ;
    # *.min.css
    text_file_minified : -name "*.[mM][iI][nN].[cS][sS][sS]" ;
    

    【讨论】:

      【解决方案5】:

      Javascript 中的分号始终确定代码行的结尾。

      鉴于此,在分号后添加换行符应该始终是安全的,除非该分号是字符串的一部分。

      【讨论】:

        猜你喜欢
        • 2010-09-08
        • 2011-04-28
        • 1970-01-01
        • 2022-08-05
        • 2011-10-15
        • 2015-02-10
        • 2012-04-07
        相关资源
        最近更新 更多