template-parser

模版的幾種表示方式

  1. 模版元素忧陪,HTML5 中的新玩意兒,template :
<template id="template">
     <p>This is a template</p>
</template>

在支持 template 標簽的瀏覽器中是看不到任何信息的阵翎,不支持此標簽的會顯示: This is a template

  1. 在 template 標簽誕生之前一般都是利用 script 標簽來實現(xiàn)模版功能的:
<script type="text/template" id="template">
    <p>This is the second type template</p>
</script>

這是利用了 script 標簽中的內(nèi)容天生不顯示的特性來達到目的的,另外,text/template 這個 type 是不存在的,只是為了凸顯其作用,而另行與標準之外的設(shè)定。

  1. 模版桶唐,模版,見名知意茉兰,網(wǎng)頁中的模版尤泽,就是不需要顯示出來,只要為需要顯示的頁面部分做出規(guī)范规脸。
    可以看出主要就是不需要其顯示坯约,而又能取出需要的內(nèi)容:
<div style="display:none" id="template">
    <p>This is the third type template</p>
</div>

innerHTML、outerHTML

簡述其區(qū)別就是:

innerHTML:從對象起始位置到終止位置的全部內(nèi)容莫鸭,不包括 html 標簽闹丐。
outerHTML:除了包含 innerHTML 的全部內(nèi)容外,還包含 html 標簽本身被因。

<div id="div">This is a div</div>
// 'This is a div'
console.log(div.innerHTML);
// '<div id="div">This is a div</div>'
console.log(div.outerHTML);

取出模版元素

// template tag
template.content
// script
template.innerHTML
// hidden tag
template.outerHTML

template-parser

當然卿拴,解析模版是少不了 fragment 的幫忙的衫仑。

var toFragment = require('./fragment');

/**
 * 將模版解析為文檔碎片
 * 可以傳入如下幾種模式的參數(shù):
 * id 選擇器: '#some-template-id'
 * 模版字符串: '<div><span>my template</span></div>'
 * DocumentFragment 對象
 * 模版節(jié)點
 */
module.exports = function(template) {
  var templateNode;
  
  // 如果是 DocumentFragment 對象,直接返回
  if(template instanceof window.DocumentFragment) {
    return template;
  }

  if(typeof template === 'string') {
    // '#' 開頭的字符串當作 id 選擇器處理
    if(template.charAt(0) === '#') {
      templateNode = document.getElementById(template.slice(1));
      if(!templateNode) return;
    // 不是 '#' 開頭的堕花,作為模版字符串文狱,直接處理
    } else {
      return toFragment(template);
    }
  // 模版節(jié)點,后續(xù)繼續(xù)處理
  } else if(template.nodeType) {
    templateNode = template;
  } else {
    return;
  }
  
  // 瀏覽器支持 template 標簽航徙,其 content 已經(jīng)是一個文檔碎片
  if(templateNode.tagName === 'TEMPLATE' && templateNode.content) {
    return templateNode.content;
  }
  // script 標簽中的內(nèi)容會被當作字符串處理
  if(templateNode.tagName === 'SCRIPT') {
    return toFragment(templateNode.innerHTML);
  }
  // 普通節(jié)點如贷,連同其標簽本身一起作為字符串去處理
  return toFragment(templateNode.outerHTML);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市到踏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌尚猿,老刑警劉巖窝稿,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異凿掂,居然都是意外死亡伴榔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門庄萎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來踪少,“玉大人,你說我怎么就攤上這事糠涛≡荩” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵忍捡,是天一觀的道長集漾。 經(jīng)常有香客問我,道長砸脊,這世上最難降的妖魔是什么具篇? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮凌埂,結(jié)果婚禮上驱显,老公的妹妹穿的比我還像新娘。我一直安慰自己瞳抓,他們只是感情好埃疫,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著挨下,像睡著了一般熔恢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上臭笆,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天叙淌,我揣著相機與錄音秤掌,去河邊找鬼。 笑死鹰霍,一個胖子當著我的面吹牛闻鉴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播茂洒,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼孟岛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了督勺?” 一聲冷哼從身側(cè)響起渠羞,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎智哀,沒想到半個月后次询,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡瓷叫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年屯吊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摹菠。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡盒卸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出次氨,到底是詐尸還是另有隱情蔽介,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布糟需,位于F島的核電站屉佳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏洲押。R本人自食惡果不足惜武花,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望杈帐。 院中可真熱鬧体箕,春花似錦、人聲如沸挑童。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽站叼。三九已至娃兽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尽楔,已是汗流浹背投储。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工第练, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人玛荞。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓娇掏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親勋眯。 傳聞我的和親對象是個殘疾皇子婴梧,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對于 Vue 1.0 印象不深的內(nèi)容客蹋。關(guān)于...
    云之外閱讀 5,052評論 0 29
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理塞蹭,服務(wù)發(fā)現(xiàn),斷路器讶坯,智...
    卡卡羅2017閱讀 134,704評論 18 139
  • HTML標簽解釋大全 一浮还、HTML標記 標簽:!DOCTYPE 說明:指定了 HTML 文檔遵循的文檔類型定義(D...
    米塔塔閱讀 3,260評論 1 41
  • 下載安裝搭建環(huán)境 可以選npm安裝,或者簡單下載一個開發(fā)版的vue.js文件 瀏覽器打開加載有vue的文檔時闽巩,控制...
    冥冥2017閱讀 6,049評論 0 42
  • 產(chǎn)品功能:創(chuàng)業(yè)公司產(chǎn)品介紹。 所解決的問題:為關(guān)注互聯(lián)網(wǎng)行業(yè)創(chuàng)新的人們提供一個簡單和專注的獲得信息的方式担汤。 產(chǎn)品差...
    性感瓶底兒閱讀 1,237評論 1 3