Vueソースコードの調査-口ひげテンプレートエンジン(基本的な使用)

目次

 

1.テンプレートエンジンとは何ですか?

 2.データをビューに変換する方法:

1.純粋なDOMメソッド

2.データjoin()メソッド:

3. ES6のアンチブート方法:

4.テンプレートエンジンの口ひげ:

(1)ループオブジェクトの配列:

(2)配列のネスト:

(3)オブジェクト配列をループさせないでください。

(4)単純な配列をループします。

(5)ブール値:


1.テンプレートエンジンとは何ですか?

テンプレートエンジンは、データをビューに変換するため最も洗練されたソリューションです

 2.データをビューに変換する方法:

 

1.純粋なDOMメソッド

ネイティブJSを介して(document.createElement( ""))異なるタグを作成し、子要素(appendChild())のタグを親要素のコンテンツに追加します。

    <ul id="list">
    </ul>

    <script>
        var arr = [
            { "name": "小明", "age": 12, "sex": "男" },
            { "name": "小红", "age": 11, "sex": "女" },
            { "name": "小强", "age": 13, "sex": "男" }
        ];

        var list = document.getElementById('list');

        for (var i = 0; i < arr.length; i++) {
            // 每遍历一项,都要用DOM方法去创建li标签
            let oLi = document.createElement('li');
            // 创建hd这个div
            let hdDiv = document.createElement('div');
            hdDiv.className = 'hd';
            hdDiv.innerText = arr[i].name + '的基本信息';
            // 创建bd这个div
            let bdDiv = document.createElement('div');
            bdDiv.className = 'bd';
            // 创建三个p
            let p1 = document.createElement('p');
            p1.innerText = '姓名:' + arr[i].name;
            bdDiv.appendChild(p1);
            let p2 = document.createElement('p');
            p2.innerText = '年龄:' + arr[i].age;
            bdDiv.appendChild(p2);
            let p3 = document.createElement('p');
            p3.innerText = '性别:' + arr[i].sex;
            bdDiv.appendChild(p3);

            // 创建的节点是孤儿节点,所以必须要上树才能被用户看见
            oLi.appendChild(hdDiv);
            // 创建的节点是孤儿节点,所以必须要上树才能被用户看见
            oLi.appendChild(bdDiv);
            // 创建的节点是孤儿节点,所以必须要上树才能被用户看见
            list.appendChild(oLi);
        }
    </script>

2.データjoin()メソッド:

join()メソッドは、配列内のすべての要素を文字列に入れるために使用され、要素は指定された区切り文字で区切られます。

    <ul id="list"></ul>

    <script>
        var arr = [
            { "name": "小明", "age": 12, "sex": "男" },
            { "name": "小红", "age": 11, "sex": "女" },
            { "name": "小强", "age": 13, "sex": "男" }
        ];

        var list = document.getElementById('list');

        // 遍历arr数组,每遍历一项,就以字符串的视角将HTML字符串添加到list中
        for (let i = 0; i < arr.length; i++) {
            list.innerHTML += [
                '<li>',
                '    <div class="hd">' + arr[i].name + '的信息</div>',
                '    <div class="bd">',
                '        <p>姓名:' + arr[i].name + '</p>',
                '        <p>年龄:' + arr[i].age  + '</p>',
                '        <p>性别:' + arr[i].sex + '</p>',
                '    </div>',
                '</li>'
            ].join('')
        }
 
    </script>

3. ES6のアンチブート方法:

文字列のスプライシングには ``を使用し、$ {arr [i] .name}を介して要素の値を取得します。

    <ul id="list"></ul>

    <script>
        var arr = [
            { "name": "小明", "age": 12, "sex": "男" },
            { "name": "小红", "age": 11, "sex": "女" },
            { "name": "小强", "age": 13, "sex": "男" }
        ];

        var list = document.getElementById('list');

        // 遍历arr数组,每遍历一项,就以字符串的视角将HTML字符串添加到list中
        for (let i = 0; i < arr.length; i++) {
            list.innerHTML += `
                <li>
                    <div class="hd">${arr[i].name}的基本信息</div>    
                    <div class="bd">
                        <p>姓名:${arr[i].name}</p>    
                        <p>性别:${arr[i].sex}</p>    
                        <p>年龄:${arr[i].age}</p>    
                    </div>    
                </li>
            `;
        }
    </script>

 

4.テンプレートエンジンの口ひげ:

その埋め込みタグは「{ {}}」であり、これはVueで使用される構文でもあります。最初にmustache.jsをダウンロードする必要があります。ここでは、BootCDNに移動し、直接参照できるようにダウンロードします。

Mustache.render(templateStr、data)メソッドを使用します。templateStr:テンプレート文字列、データデータ。

(1)ループオブジェクトの配列:

   <div id="container">
        <ul>
            <li>
                <div class="hd">小明的基本信息</div>
                <div class="bd">
                    <p>姓名:小明</p>
                    <p>年龄:12</p>
                    <p>性别:男</p>
                </div>
            </li>
            <li>
                <div class="hd">小红的基本信息</div>
                <div class="bd">
                    <p>姓名:小红</p>
                    <p>年龄:11</p>
                    <p>性别:女</p>
                </div>
            </li>
            <li>
                <div class="hd">小强的基本信息</div>
                <div class="bd">
                    <p>姓名:小强</p>
                    <p>年龄:13</p>
                    <p>性别:男</p>
                </div>
            </li>
        </ul>
    </div>
</body>
<script src="../js/mustache.js"></script>
<script>
    var templateStr = `
        <ul>
            {
   
   {#arr}}
                <li>
                    <div class="hd">{
   
   {name}}的基本信息</div>
                    <div class="bd">
                        <p>姓名:{
   
   {name}}</p>
                        <p>性别:{
   
   {sex}}</p>
                        <p>年龄:{
   
   {age}}</p>
                    </div>
                </li>
            {
   
   {/arr}}
        </ul>
    `;

    var data = {
        arr: [{
                "name": "小明",
                "age": 12,
                "sex": "男"
            },
            {
                "name": "小红",
                "age": 11,
                "sex": "女"
            },
            {
                "name": "小强",
                "age": 13,
                "sex": "男"
            },
        ]
    };

    var domStr = Mustache.render(templateStr, data);
    var dom = document.getElementById("container");
    dom.innerHTML = domStr;
    console.log(domStr);
</script>

 

(2)配列のネスト:

<div id="container">

</div>
</body>
<script src="../js/mustache.js"></script>
<script>
    var templateStr = `
        <ul>
        {
   
   {#arr}}
            <li>{
   
   {name}}的爱好是:
                <ol>{
   
   {#hobbies}}
                        <li>{
   
   {.}}</li>
                    {
   
   {/hobbies}}
                </ol>
            </li>
        {
   
   {/arr}}
        </ul>
    `;

    var data = {
        arr:[
            {"name":"小明","age":12,"hobbies":["游泳","羽毛球"]},
            {"name":"小红","age":11,"hobbies":["编程","弹钢琴"]},
            {"name":"小强","age":13,"hobbies":["游泳","羽毛球"]}
        ]
    };

    var domStr = Mustache.render(templateStr,data);
    var dom = document.getElementById("container");
    dom.innerHTML = domStr;
    console.log(domStr);
</script>

 

 (3)オブジェクト配列をループさせないでください。

<div id="container">

</div>
</body>
<script src="../js/mustache.js"></script>
<script>
    var templateStr = `
        <h1>我买了一个{
   
   {thing}},好{
   
   {mood}}啊!</h1>
    `;

    var data = {
        thing:"华为手机",
        mood:"心情"
    };

    var domStr = Mustache.render(templateStr,data);
    var dom = document.getElementById("container");
    dom.innerHTML = domStr;
    console.log(domStr);
</script>

 

 (4)単純な配列をループします。

<div id="container">

</div>
</body>
<script src="../js/mustache.js"></script>
<script>
    var templateStr = `
        <ul>
        {
   
   {#arr}}
            <li>{
   
   {.}}</li>
        {
   
   {/arr}}
        </ul>
    `;

    var data = {
        arr:["A","B","C"]
    };

    var domStr = Mustache.render(templateStr,data);
    var dom = document.getElementById("container");
    dom.innerHTML = domStr;
    console.log(domStr);
</script>

 

 (5)ブール値:

データ内のmの真と偽は、テキストコンテンツの表示を制御できます。

<div id="container">

</div>
</body>
<script src="../js/mustache.js"></script>
<script>
    var templateStr = `
        {
   
   {#m}}
            <h1>您好</h1>
        {
   
   {/m}}
    `;

    var data = {
        m:true
    };

    var domStr = Mustache.render(templateStr,data);
    var dom = document.getElementById("container");
    dom.innerHTML = domStr;
    console.log(domStr);
</script>

注:詳細については、「シリコンバレーVueソースコード分析コース」を参照してください。 

おすすめ

転載: blog.csdn.net/weixin_43690348/article/details/113103697