美文网首页
模板引擎

模板引擎

作者: FiredEarthMusic | 来源:发表于2018-01-23 17:48 被阅读26次

目录:1.字符串拼接
2.string format
3.模板替换
4.自制模板引擎
5.常见模板引擎介绍

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>JS Bin</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        ol{
            list-style: none;
        }
        body{
            color: #333;
        }
        .song-list{
            width: 200px;
            margin: 0 auto;
        }
        h1{
            font-size: 20px;
            margin: 10px;
        }
        ol{
            border-top: 1px solid #ebebeb;
        }
        li{
            padding: 5px 10px;
            background: white;
            border-bottom: 1px solid #ebebeb;
            border-left: 1px solid #ebebeb;
            border-right: 1px solid #ebebeb;
        }
    </style>
</head>
<body>
<div class="song-list">
    <h1>热歌榜</h1>
    <ol>
        <li>刚刚好 - 薛之谦</li>
        <li>最佳歌手 - 许嵩</li>
        <li>初学者 - 薛之谦</li>
        <li>绅士 - 薛之谦</li>
        <li>我门 - 陈伟霆</li>
        <li>画风 - 后弦</li>
        <li>We are one - 郁可唯</li>
    </ol>
</div>
</body>
</html>

需求: 用JS渲染一个歌曲列表
1.数据来自一个数组songs
2.不能写死在页面里

最傻的办法
(你必须能想到一个最傻的办法):1.拼HTML字符串 2.构造DOM对象(或JQuery)

字符串拼接

数据来自一个数组songs
不能写死在页面里

songs = [
    {name: '绅士', url: 'http://music.163.com/xxx', singer: '薛之谦'},
    {name: '刚刚好', url: 'http://music.163.com/yyy', singer: '薛之谦'},
    ...
]

##最傻的办法-遍历(你必须要能想到一个最傻的办法)

方案一:拼HTML字符串
方案二:构造DOM对象(也可以用jQuery)

string format

function stringFormat(string)
{
  
  var params = [].slice.call(arguments,1)
  var regex = /\{(\d+)\}/g
      
      
  //将字符串中的 {n} 替换为 params[n]
  string = string.replace(regex, function(){
      var index = arguments[1]
      return params[index]
  })
  return string
}

console.log(stringFormat('Hi, {0}','frank'))
console.log(stringFormat('Hi, {1}', 'frank', 'Tomy'))
console.log(stringFormat('Hi, {0} and {1}', 'frank','Tomy'))

1.string.replace替换字符串
2.regex.exec 正则 遍历 替换

var string  = 'yyz, tom, jerry'
undefined
string.replace('yyz', 'xxx')
"xxx, tom, jerry"
string
"yyz, tom, jerry"
var string  = 'yyz, tom, jerry, yyz'
undefined
string.replace('yyz', 'xxx')
"xxx, tom, jerry, yyz"
string.replace('yyz', 'xxx').replace('yyz', 'xxx')
"xxx, tom, jerry, xxx"
string.replace(/yyz/g, 'xxx')
"xxx, tom, jerry, xxx"
var result;
//以result的值为判断依据
while(result = regex.exec(string)){
    string.replace(result, 'xxx')
}
console.log(string)
string = 'frank, tom, jerry, frank'
"frank, tom, jerry, frank"
var result
while(result = regex.exec(string)) {
    console.log('result是'+result)
    string = string.replace(result,'xxx')
    console.log('string变成了' + string)
}
console.log(string)

//frank都遍历完成之后 result就变为空值 while循环结束
第一版的实现

var TemplateEngine = function(tpl, data) {
    var regex = /<%([^%>]+)?%>/g
    while(match = regex.exec(tpl)) {
        //console.log(match)
        tpl = tpl.replace(match[0], data[match[1]])
    }
    return tpl;
}

var template = '<p>Hello, my name is <%name%. I\'m <%age%> years old.></p>'
var data = {
    name: "Krasimir"
    age: 29
}
var string = TemplateEngine(template, data) 
console.log(string)

多用正则

模板替换

自制模板引擎

常见模板引擎介绍

相关文章

  • laravel 5 blade

    参考Blade 模板引擎。Blade是一个模板引擎(什么叫模板引擎,参考浅谈模板引擎),文件需要采用blade.p...

  • SpringBoot系列之集成jsp模板引擎

    SpringBoot系列之集成jsp模板引擎@[toc] 1、模板引擎简介 引用百度百科的模板引擎解释: 模板引擎...

  • node_模板引擎

    模板引擎 模板引擎的使用和集成,也就是视图。 什么是模板引擎模板引擎是一个页面模板根据一定得规则生成的html工具...

  • art-template模板引擎

    模板引擎 什么是模板引擎: 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产...

  • Lua admin后台开发 (6) 模板引擎的使用

    上一章节我们初步了解了如何使用模板引擎, 现在我们深入了解模板引擎. 什么是模板引擎 "模板引擎(这里指Web开发...

  • Ajax-02

    模板引擎 模板引擎概述 作用:使用模板引擎提供的模板语法,可以将数据和 HTML 拼接起来。官方地址: https...

  • 《PHP Learning》模板引擎

    《PHP Learning》模板引擎 模板处理使用正则处理模板替换规则保存模板编译结果 模板使用 自定义模板引擎 ...

  • 模板引擎原理

    # 模板引擎 ## 原理 ![模板引擎原理](F:\前端学习资料\模板引擎原理.jpg) ## 使用到的正则表达式...

  • 无标题文章

    # 模板引擎 ## 原理 ![模板引擎原理](F:\前端学习资料\模板引擎原理.jpg) ## 使用到的正则表达式...

  • Express入门_模板引擎hbs(三)

    Express支持多种模板引擎,这里将采用Handlebars模板引擎的服务器端版本hbs模板引擎 。安装hbs...

网友评论

      本文标题:模板引擎

      本文链接:https://www.haomeiwen.com/subject/cjowbxtx.html