zoukankan      html  css  js  c++  java
  • 字符串模板编译

    let template = `
    <ul>
    <% for(let i=0; i < data.supplies.length; i++) { %>
    <li><%= data.supplies[i] %></li>
    <% } %>
    </ul>
    `;
    echo('<ul>');
    for (let i = 0; i < data.supplies.length; i++) {
    echo('<li>');
    echo(data.supplies[i]);
    echo('</li>');
    };
    echo('</ul>');

    function compile(template) {
    const evalExpr = /<%=(.+?)%>/g;
    const expr = /<%([sS]+?)%>/g;

    template = template
    .replace(evalExpr, '`); echo( $1 ); echo(`')
    .replace(expr, '`); $1 echo(`');

    template = 'echo(`' + template + '`);';
    console.log('template=======' + template)
    let script =
    `(function parse(data){
    let output = "";

    function echo(html){
    output += html;
    }
    ${ template}
    return output;
    })`;
    console.log('script==========', script)

    return script;
    }


    console.log('compile(template)' + compile(template))

    // let parse = eval(compile(template));
    // div.innerHTML = parse({ supplies: ["broom", "mop", "cleaner"] });


    // echo('<ul>');
    // for(let i=0; i < data.supplies.length; i++) {
    // echo('<li>');
    // echo(data.supplies[i]);
    // echo('</li>');
    // };
    // echo('</ul>');
  • 相关阅读:
    关系运算符重载
    一元运算符重载
    二元运算符重载
    重载函数和重载运算符
    Linux之文件通信
    Linux进程通信之mmap
    Linux之创建多个子进程
    内联函数
    静态成员
    this指针
  • 原文地址:https://www.cnblogs.com/yayaxuping/p/10853416.html
Copyright © 2011-2022 走看看