亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

javascript的創建多行字符串的7種方法

2019-11-20 20:46:36
字體:
來源:轉載
供稿:網友

JS里并沒有標準的多行字符串的表示方法,但是在用模板的時候,為了保證模板的可閱讀性,我們又不可避免的使用多行字符串,所以出現了各種搞法,這里以一段jade的模板作為示例,簡單總結和對比一下。

一、字符串相加

這是最容易理解也很常用的一種形式,如下

復制代碼 代碼如下:

var tmpl =''+
    '!!! 5' +
    'html' +
    '  include header' +
    '  body' +
    '    //if IE 6' +
    '        .alert.alert-error' +
    '            center 對不起,我們不支持IE6,請升級你的瀏覽器' +
    '                a() | IE8官方下載' +
    '                a() | Chrome下載' +
    '    include head' +
    '    .container' +
    '        .row-fluid' +
    '            .span8' +
    '                block main' +
    '                include pagerbar' +
    '            .span4' +
    '                include sidebar' +
    '    include footer' +
    '    include script'

優點:

易理解,簡單,可靠
足夠靈活,可以在單個字符串中添加js邏輯

缺點 :

并不是真正意義上的多行字符串, 如果想要真正的多行,需要自己加/n
大量的+號看上去滿天星,大量的'和", 丑陋

二、使用反斜線

這個叫續行符, 這個并非一種很常見的方式, 但是一旦用上了,還是很容易上癮,只需要加一個字符

復制代碼 代碼如下:

var tmpl ='/
    !!! 5/
    html/
      include header/
      body/
        //if IE 6/
            .alert.alert-error/
                center 對不起,我們不支持IE6,請升級你的瀏覽器/
                    a() | IE8官方下載/
                    a() | Chrome下載/
        include head/
        .container/
            .row-fluid/
                .span8/
                    block main/
                    include pagerbar/
                .span4/
                    include sidebar/
        include footer/
        include script'

優點:

簡單,每一行只需要有多一個/
高效!在大部分的瀏覽器上,這種方式都是最快的,

缺點 :

致命缺陷,每一行的/必須不可以有空格,否則直接腳本錯誤
并不是真正意義上的多行字符串, 如果想要真正的多行,需要自己加/n
盡管絕大部分的js引擎都支持它,但是它并不是ECMAScript的一部分

三、字符串數組join

復制代碼 代碼如下:

var tmpl = [
    '!!! 5' ,
    'html' ,
    '  include header' ,
    '  body' ,
    '    //if IE 6' ,
    '        .alert.alert-error' ,
    '            center 對不起,我們不支持IE6,請升級你的瀏覽器' ,
    '                a() | IE8官方下載' ,
    '                a() | Chrome下載' ,
    '    include head' ,
    '    .container' ,
    '        .row-fluid' ,
    '            .span8' ,
    '                block main' ,
    '                include pagerbar' ,
    '            .span4' ,
    '                include sidebar' ,
    '    include footer' ,
    '    include script'].join('/n');

優點:

真正意義上的多行字符串
易理解,簡單,可靠
足夠靈活,可以在單個字符串中添加js邏輯

缺點 :

大量的,號和'、", 丑陋

五、String.prototype.concat

復制代碼 代碼如下:

var tmpl = String.prototype.concat.call(
    '!!! 5' ,
    'html' ,
    '  include header' ,
    '  body' ,
    '    //if IE 6' ,
    '        .alert.alert-error' ,
    '            center 對不起,我們不支持IE6,請升級你的瀏覽器' ,
    '                a() | IE8官方下載' ,
    '                a() | Chrome下載' ,
    '    include head' ,
    '    .container' ,
    '        .row-fluid' ,
    '            .span8' ,
    '                block main' ,
    '                include pagerbar' ,
    '            .span4' ,
    '                include sidebar' ,
    '    include footer' ,
    '    include script');

優點:

不常用,事實上字符串的concat方法遠沒有+號常見
易理解,簡單,可靠
足夠靈活,可以在單個字符串中添加js邏輯

缺點 :

并不是真正意義上的多行字符串
大量的,號和'、", 丑陋

五、heredoc

這是一種很有技巧的解決辦法, 利用了function的toString方法

復制代碼 代碼如下:

function heredoc(fn) {
    return fn.toString().split('/n').slice(1,-1).join('/n') + '/n'
}

var tmpl = heredoc(function(){/*
    !!! 5
    html
      include header
      body
        //if IE 6
            .alert.alert-error
                center 對不起,我們不支持IE6,請升級你的瀏覽器
                    a() | IE8官方下載
                    a() | Chrome下載
        include head
        .container
            .row-fluid
                .span8
                    block main
                    include pagerbar
                .span4
                    include sidebar
        include footer
        include script
 */});

優點:

模板字符串內不必寫多余的任何字符,干凈,簡單
真正意義上的多行字符串, 有/n哦

缺點 :

不可以在單個字符串中添加js邏輯
容易被壓縮器壓縮掉,yui compressor可以通過/*!來避免被壓縮掉,uglifyjs和gcc也可以通過選項配置不刪除特定的注釋,這個不是大問題

六、coffeescript

相當于換了一個語言,其實這種語言上缺少的功能,通過coffeescript這種以js為編譯目標的語言來實現是一種非常棒的選擇。

復制代碼 代碼如下:

var tmpl = """
    !!! 5
    html
      include header
      body
        //if IE 6
            .alert.alert-error
                center 對不起,我們不支持IE6,請升級你的瀏覽器
                    a() | IE8官方下載
                    a() | Chrome下載
        include head
        .container
            .row-fluid
                .span8
                    block main
                    include pagerbar
                .span4
                    include sidebar
        include footer
        include script
    """

優點:

易理解,簡單,可靠

缺點 :

需要了解coffeescript
整個文件都需要用coffeescript來寫

七、ES6

ES6的有一個新的特性,Template Strings, 這是語言層面上第一次實現了多行字符串, 在chrome canary里打開Enable Experimental JavaScript就可以使用這個特性,另外typescript也會支持這種方式

復制代碼 代碼如下:

var tmpl =
   `!!! 5
    html
      include header
      body
        //if IE 6
            .alert.alert-error
                center 對不起,我們不支持IE6,請升級你的瀏覽器
                    a() | IE8官方下載
                    a() | Chrome下載
        include head
        .container
            .row-fluid
                .span8
                    block main
                    include pagerbar
                .span4
                    include sidebar
        include footer
        include script`

優點:

易理解,原生支持
真正的多行字符串

缺點 :
JS引擎支持有限

八、總結

看了這么些寫法,如何選擇?如果你用的是coffeescript,放心大膽的使用它支持的多行字符串寫法;如果是在客戶端,同時你解決了你的壓縮器去掉注釋的問題,推薦使用heredoc;如果你無法解決壓縮器的問題,使用反斜線連接吧,每行只需要加一個字符。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人欧美一区二区三区黑人孕妇| 韩国精品美女www爽爽爽视频| 久久久久久久久久久91| 欧美日韩在线视频一区二区| 亚洲网站视频福利| 欧美激情奇米色| 国产亚洲精品日韩| 久久精品亚洲一区| 国产成人在线视频| 97超级碰碰碰| 国产精品日韩在线播放| 日本欧美一级片| 欧美日韩精品在线视频| 亚洲天堂网站在线观看视频| 日韩精品丝袜在线| 日韩av免费在线观看| 亚洲精品动漫100p| 一区二区三区天堂av| 久久夜色精品国产亚洲aⅴ| 亚洲日韩第一页| 久久久久久久久久久久久久久久久久av| 国外成人免费在线播放| 国产成人亚洲综合青青| 91成人性视频| 日韩av理论片| 亚洲美女性生活视频| 欧美日韩亚洲精品内裤| 日韩美女免费线视频| 亚洲成人在线网| 欧美自拍大量在线观看| 庆余年2免费日韩剧观看大牛| 成人黄色大片在线免费观看| 欧美性受xxx| 欲色天天网综合久久| 国产色婷婷国产综合在线理论片a| 中文字幕亚洲综合久久| 亚洲成人a级网| 国产精品久久久久久久久免费| 亚洲偷欧美偷国内偷| 性色av一区二区三区免费| 久久久精品免费视频| 欧美国产激情18| 51精品在线观看| 日本亚洲欧美成人| 456亚洲影院| 国产成人精品电影| 一区二区三区国产在线观看| 激情成人中文字幕| 欧美成人精品影院| 久久全国免费视频| 国产精品视频一区二区高潮| 懂色av中文一区二区三区天美| 欧美黑人性生活视频| 国产精品三级美女白浆呻吟| 久久精彩免费视频| zzijzzij亚洲日本成熟少妇| 亚洲色图50p| 欧美自拍视频在线观看| 欧美最顶级丰满的aⅴ艳星| 中文字幕亚洲情99在线| 亚洲天堂成人在线视频| 午夜欧美大片免费观看| 久久久之久亚州精品露出| 亚洲欧美精品伊人久久| 色哟哟亚洲精品一区二区| 亚洲国产一区二区三区四区| 国产精品视频xxx| 国产精品亚洲一区二区三区| 欧美电影免费播放| 亚洲国产日韩欧美在线99| 97色在线观看| 中文字幕视频一区二区在线有码| 中文字幕av一区中文字幕天堂| 精品福利免费观看| 国产不卡视频在线| 亚洲乱码av中文一区二区| 久久精品成人一区二区三区| 亚洲第一av网| 亚洲国产精久久久久久久| 美日韩丰满少妇在线观看| 精品人伦一区二区三区蜜桃网站| 日本伊人精品一区二区三区介绍| 红桃视频成人在线观看| 中文字幕精品久久久久| 69av视频在线播放| 在线激情影院一区| 5278欧美一区二区三区| 日韩激情视频在线播放| 狠狠久久亚洲欧美专区| 欧美老女人xx| 日韩欧美中文免费| 97激碰免费视频| 91精品视频在线免费观看| 欧美性xxxx极品hd欧美风情| 国产精品你懂得| 精品成人在线视频| 亚洲经典中文字幕| 亚洲精品久久久久久久久久久| 成人欧美一区二区三区黑人| 欧美猛交ⅹxxx乱大交视频| 韩国欧美亚洲国产| 亚洲精品免费网站| 亚洲欧美成人一区二区在线电影| 成人在线国产精品| 日韩av电影在线播放| 国内揄拍国内精品少妇国语| 国产精品极品在线| 91久久精品久久国产性色也91| 国模私拍视频一区| 欧美激情中文字幕乱码免费| 亚洲香蕉伊综合在人在线视看| 国产91热爆ts人妖在线| 国自产精品手机在线观看视频| 亚洲精品福利在线| 亚洲va欧美va在线观看| 欧美午夜影院在线视频| 亚洲无亚洲人成网站77777| 亚洲黄色av女优在线观看| 国产综合久久久久| 日韩一区视频在线| 久久久久久国产精品三级玉女聊斋| 欧美天天综合色影久久精品| 亚洲成人av片| 国产精品永久免费观看| 国产精品旅馆在线| 亚洲电影av在线| 久热精品视频在线观看| 欧美国产中文字幕| 亚洲自拍偷拍网址| 国产91在线视频| 日韩精品免费观看| 中文字幕精品在线视频| 日韩电影免费在线观看中文字幕| 亚洲自拍偷拍区| 国产精品丝袜一区二区三区| 日韩精品日韩在线观看| 欧美日韩国产色视频| 亚洲欧美日韩在线高清直播| 一个色综合导航| 亚洲女在线观看| 国产精品精品视频| 国内揄拍国内精品少妇国语| 亚洲国产另类 国产精品国产免费| 亚洲а∨天堂久久精品9966| 国产精品久久久久久av福利软件| 97人洗澡人人免费公开视频碰碰碰| 一本大道久久加勒比香蕉| 97成人精品区在线播放| 91性高湖久久久久久久久_久久99| 亚洲免费精彩视频| 精品成人av一区| 欧美一区二区三区免费视| 精品亚洲男同gayvideo网站| 中文字幕日韩精品在线| 一区二区在线免费视频| 啪一啪鲁一鲁2019在线视频| 久久精品99久久香蕉国产色戒| 亚洲欧美国产一区二区三区| 亚洲福利视频二区| 欧美床上激情在线观看| 欧美片一区二区三区| 欧美视频二区36p| 成人免费观看网址| 成人免费黄色网|