欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

JavaScript基于replace+正則實現(xiàn)ES6的字符串模版功能

本文實例講述了JavaScript基于replace+正則實現(xiàn)ES6的字符串模版功能。分享給大家供大家參考,具體如下:

成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、樟樹網(wǎng)站定制設(shè)計、自適應品牌網(wǎng)站建設(shè)、HTML5建站、商城網(wǎng)站制作、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應式網(wǎng)頁設(shè)計等建站業(yè)務,價格優(yōu)惠性價比高,為樟樹等各大城市提供網(wǎng)站開發(fā)制作服務。

采用拼接字符串的形式,將 JSON 數(shù)據(jù)嵌入 HTML 中。開始時代碼量較少,暫時還可以接受。但當頁面結(jié)構(gòu)復雜起來后,其弱點開始變得無法忍受起來:

書寫不連貫。每寫一個變量就要斷一下,插入一個 + 和 “。十分容易出錯。

無法重用。HTML 片段都是離散化的數(shù)據(jù),難以對其中重復的部分進行提取。

無法很好地利用 標簽。這是 HTML5 中新增的一個標簽,標準極力推薦將 HTML 模板放入 標簽中,使代碼更簡潔。

replace+正則實現(xiàn)

項目剛開始用的數(shù)據(jù)拼接

function formatString() {
    if (arguments.length === 0)
      return null;
    var str = arguments[0];
    for (var i = 1; i < arguments.length; i++) {
      var re = new RegExp('\\{' + (i - 1) + '\\}', 'gm');
      str = str.replace(re, arguments[i]);
    }
    return str;
},

第一個參數(shù)為需要渲染的數(shù)據(jù)模板,其他參數(shù)為數(shù)據(jù):

formatString('{0},My name is {1}', 'everyMan', '吳孔云')

這種后期維護較麻煩,一旦更改順序,都需要更改~~就跟函數(shù)需要接收一大串參數(shù)一樣,我們盡量寫成對象的形式,

var myObject = maker(f,l,m,c,s);//不建議寫法
var myObject = maker({//建議寫法
   first : f,
   last: l,
   state:s,
   city:c
});

在網(wǎng)上搜索看到一個例子,可以類似實現(xiàn)ES6的字符串模版形式,博客是一個高中生寫的,戳鏈接 。

function render(template, context) {
  //被轉(zhuǎn)義的的分隔符 { 和 } 不應該被渲染,分隔符與變量之間允許有空白字符
  var tokenReg = /(\\)?\{([^\{\}\\]+)(\\)?\}/g;
  return template.replace(tokenReg, function (word, slash2, token, slash3) {
    //如果有轉(zhuǎn)義的\{或\}替換轉(zhuǎn)義字符
    if (slash2 || slash3) {
      return word.replace('\\', '');
    }
    // 切割 token ,實現(xiàn)級聯(lián)的變量也可以展開
    var variables = token.replace(/\s/g, '').split('.');
    var currentObject = context;
    var i, length, variable;
    for (i = 0, length = variables.length; i < length; ++i) {
      variable = variables[i];
      currentObject = currentObject[variable];
      // 如果當前索引的對象不存在,則直接返回空字符串。
      if (currentObject === undefined || currentObject === null) return '';
    }
    return currentObject;
  })
}
String.prototype.render = function (context) {
  return render(this, context);
};
"{greeting}! My name is { author.name }.".render({
  greeting: "Hi",
  author: {
    name: "hsfzxjy"
  }
});
// Hi! My name is hsfzxjy.

擴展:ES6字符串模版API

ES6引入了一種新型的字符串字面量語法,我們稱之為模板字符串(template strings)。除了使用反撇號字符 ` 代替普通字符串的引號 ' 或 ” 外,它們看起來與普通字符串并無二致。

var a = 'kenny'
`my name is ${a}` //"my name is kenny"

可以用bable編譯成ES5。

PS:這里再為大家提供2款非常方便的正則表達式工具供大家參考使用:

JavaScript正則表達式在線測試工具:
http://tools.jb51.net/regex/javascript

正則表達式在線生成工具:
http://tools.jb51.net/regex/create_reg

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ECMAScript6(ES6)入門教程》、《JavaScript正則表達式技巧大全》、《JavaScript字符與字符串操作技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript錯誤與調(diào)試技巧總結(jié)》及《JavaScript數(shù)學運算用法總結(jié)》

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

網(wǎng)站名稱:JavaScript基于replace+正則實現(xiàn)ES6的字符串模版功能
網(wǎng)頁網(wǎng)址:http://aaarwkj.com/article12/phoggc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、手機網(wǎng)站建設(shè)域名注冊、網(wǎng)站內(nèi)鏈、微信公眾號、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務器托管
一区二区三区精品人妻| 十八禁无遮挡污污污网站| 亚洲精品一区二区av| 日韩在线视频精品一区| 国产一级一片内射在线| 亚洲av男人的天堂看| 日韩一区二区偷拍视频| 永久免费成人在线视频| 五月婷婷六月丁香俺来也| 国产精品免费网站在线观看| 国产日韩精品一区二区三区在线 | 色国产精品一区在线观看| 日韩爱爱特级视频中文字幕| 少妇高潮特黄在线观看| 日韩黄色一级免费在线观看| 加勒比av免费在线播放| 亚洲乱色一区二区三区丝袜| 亚洲欧美半夜激情一区二区| 91欧美精品在线视频| 97视频在线观看免费| 日韩av高清免费播放| 久久人妻蜜桃一区二区三区| 麻豆看片高清在线播放| 国产精品一区二区久久蜜桃麻豆| 国产黄色自拍av网站| 人妻少妇性色精品专区av| 女子张开腿让男人捅爽| 欧美 国产 综合 日韩| 亚洲欧美精品成人一区| 人人看男人的天堂东京| 日韩中文字幕在线首页 | 亚洲一区二区精品自拍| 男人一插就想射的原因| 国产成人精品亚洲日本片| 亚洲欧美日韩精品区| 97成人在线视频免费播放| 日韩精品一区二区三区电影在线播放| 性生活视频在线观看免费| 一区二区三区国产不卡| 免费日本高清色噜噜视频| 久久精品噜噜噜成人av农村|