By
Jarvis Young
Updated:
Contents
想在js当中使用多行字符串?multiline.js帮你实现这个愿望!
1 2 3 4 5 6 7 8
| var str = multiline(function(){ <!doctype html> <html> <body> <h1>❤ unicorns</h1> </body> </html> */});
|
上面是来自github repo的示例,可以看出multiline.js是将注释当中的内容截取下来,生成的字符串,内部实现也比较简洁:
1 2 3 4 5 6 7 8 9
| ... var reCommentContents = /\/\*!?(?:\@preserve)?[ \t]*(?:\r\n|\n)([\s\S]*?)(?:\r\n|\n)\s*\*\//; var multiline = module.exports = function (fn) { ... var match = reCommentContents.exec(fn.toString()); ... }; ...
|
关键之处就在于function的toString方法,requirejs使用了用同样的方法去解析模块的依赖关系
但是这个模块有一个问题,我们经常需要压缩js代码来优化性能,很多的压缩方式默认会去除注释,这就会导致mutiline抛出异常,好在作者Sindre Sorhus说明了解决方式