多行文本拼接函数源码:
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});
注:
注释开头的“!”是 YUI Compressor 保留注释的方式;
注释中的“@preserve”是 uglify 和 Closure Compiler(Google) 保留注释的方式;
注释内容后面的“window”其实换成别的也可以,这里是防止压缩工具以为这是一个空函数体而不会保留注释。
e.g.:
控制台: