javascript版的heredoc()

「一串字」的靜態字串簡單,那「一大塊」的靜態字串怎麼做? 用「+=」是可以把各字串串成一大塊,但更高招則是heredoc()

「一大塊」的靜態字串怎麼做? 傳統上,用「+=」就可以把各字串串成一大塊,例如:

ss="<html>\r\n"
ss+= "<body>\r\n"
ss+= "Today is a good day.\r\n"
ss+= "</body>\r\n"
ss+= "</html>"

效果上沒問題,但對程式維護就很累人--要重複打許多「ss+=」、「"」、想要有換行的話還要多打「\r\n」。打字打得粉累之外,字串的實際內容跟前述的那些符號混在一起,也讓眼睛看得粉累。

php有heredoc的字串表示法,javascript 也可以有heredoc()的解法

function hereDoc(f) {
  return f.toString().
      replace(/^[^\/]+\/\*![^\r\n]*[\r\n]*/, '').
      replace(/[\r\n][^\r\n]*\*\/[^\/]+$/, '');

// example
	var ss = hereDoc(function() {/*!
<html>
<body>
Today is a good day.
</body>
</html>
*/});  
	  
}

上面的程式碼,把範例也包含在裡面了,這樣copy過去自己使用時就很方便參照範例寫法,也就是heredoc的用法是

var ss = hereDoc(function() {/*!
這裡
到
這裡全都是字串內容
隨便打
*/});  

很明顯地,視覺上看到的字串內容乾淨多了,也好打多了。好用