multiline.js幫你在js當(dāng)中實(shí)現(xiàn)多行文本
想在js當(dāng)中使用多行字符串卜高?multiline.js幫你實(shí)現(xiàn)這個(gè)愿望巡语!
var str = multiline(function(){/*
<!doctype html>
<html>
<body>
<h1>? unicorns</h1>
</body>
</html>
*/});
上面是來(lái)自github repo的示例暂幼,可以看出multiline.js是將注釋當(dāng)中的內(nèi)容截取下來(lái)糊肤,生成的字符串病涨,內(nèi)部實(shí)現(xiàn)也比較簡(jiǎn)潔:
...
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());
...
};
...
關(guān)鍵之處就在于function的toString方法熬北,requirejs使用了用同樣的方法去解析模塊的依賴關(guān)系
但是這個(gè)模塊有一個(gè)問(wèn)題疙描,我們經(jīng)常需要壓縮js代碼來(lái)優(yōu)化性能,很多的壓縮方式默認(rèn)會(huì)去除注釋讶隐,這就會(huì)導(dǎo)致mutiline拋出異常起胰,好在作者Sindre Sorhus說(shuō)明了解決方式