囧囧有神的兔纸

「进修中的」前端攻城湿

© 囧囧有神的兔纸 | Powered by LOFTER

【Javascript】多行文本拼接 & 防止压缩工具删除的解决方案

多行文本拼接函数源码:

multiline = function(fn) {

    var reCommentContents = /\/\*!?(?:\@preserve)?[ \t]*(?:\r\n|\n)([\s\S]*?)(?:\r\n|\n)[ \t]*\*\//;

    var match = reCommentContents.exec(fn.toString());

    if (!match) {

        throw new TypeError('Multiline comment missing.');

    }

    return match[1];

};


使用:

multiline(function() {/*

    some code

    some code

    ...

*/});

但是考虑到现在前端必然是要压缩脚本的,所以最好是这样写:

multiline(function() {/*!@preserve

    some code

    some code

    ...

*/window});

注:

  1.     注释开头的“!”是 YUI Compressor 保留注释的方式;

  2.     注释中的“@preserve”是 uglify 和 Closure Compiler(Google) 保留注释的方式;

  3.     注释内容后面的“window”其实换成别的也可以,这里是防止压缩工具以为这是一个空函数体而不会保留注释。


e.g.:


控制台:






评论