zoukankan      html  css  js  c++  java
  • VUE -- ejs模板的书写

    1、EJS是一个简单高效的模板语言,通过数据和模板,可以生成HTML标记文本。可以说EJS是一个JavaScript库,EJS可以同时运行在客户端和服务器端,客户端安装直接引入文件即可,服务器端用npm包安装

    2、EJS的特点:

    • 快速编译和渲染
    • 简单的模板标签
    • 自定义标记分隔符
    • 支持文本包含
    • 支持浏览器端和服务器端
    • 模板静态缓存
    • 支持express视图系统

    3、EJS成员函数:

    • Render(str,data,[option]):直接渲染字符串并生成html
      str:需要解析的字符串模板
      data:数据
      option:配置选项
    • Compile(str,[option]):编译字符串得到模板函数
      str:需要解析的字符串模板
      option:配置选项

    两个函数包括的配置选项如下:


     

    4、EJS常用标签

    • <% %>流程控制标签
    • <%= %>输出标签(原文输出HTML标签)
    • <%- %>输出标签(HTML会被浏览器解析)
    • <%# %>注释标签
    • % 对标记进行转义
    • -%>去掉没用的空格
      说明:ejs中的逻辑代码全部用JavaScript

    5、接下来看一个例子就可以明白EJS的简单语法了

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>EJS Examples</title>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <link href="" rel="stylesheet">
    <script type="text/javascript" src="ejs.min.js"></script>
    <script >
        var data={flag:false,
                       data1:["====1","====2","====3"],
                       data2:["====4","====5","====6"]
                   };
    
        window.onload=function(){
            var tem=document.getElementById("tem").innerHTML;
            var html=ejs.render(tem,data);
            document.getElementsByTagName("body")[0].innerHTML=html;
        }
    </script>
    </head>
    <body>
    <script type="text/javascript" id="tem">
    <ul>
        <%if(flag){%>
          <%for (var i=0;i<data1.length;i++){%>
          <li><%=data1[i]%></li>
          <%}%>
          <%}else{%>
              <%for(var i=0;i<data2.length;i++){%>
              <li><%=data2[i]%></li>
              <%}%>
              <%}%>
          </ul>
    </script>
    </body>
    </html>

    运行后结果如下:


     

    4、过滤器(把结果进一步加工的函数):


     

     

     

    语法如下:

    <%=: data.age | plus:5%>

    注意:和|两个符号:
    此外,还有文件包含的语法:

    <%- include(path) %>

    接下来用这个写一个服务器端的,文件目录如下:


     


    app.js文件内容如下:

    var http=require("http");
    var express=require("express");
    var app=express();
    
    var tem={
        message:"我是中间部分"
    }
    //创建服务器
    http.createServer(app).listen(3000,function(){
        console.log("Server is listening port 3000");
    });
    //挂载静态资源处理中间件
    app.use(express.static(__dirname+"/public"));
    //设置模板视图的目录
    app.set("views","./public/views");
    //设置是否启用视图编译缓存,启用将加快服务器执行效率
    app.set("view cache",true);
    //设置模板引擎的格式即运用何种模板引擎
    app.set("view engine","ejs");
    //设置路由
    app.get("/ejs",function(req,res){
        res.render("ejs1",{title:tem.message});
    });

    ejs1.ejs文件内容如下这里引用了头部和尾部:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>EJS</title>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <link href="../css/main.css" rel="stylesheet">
    </head>
    <body>
    <%- include("./header.ejs") %>
        <h1><%=title%></h1>
        <%- include("./footer.ejs") %>
    </body>
    </html>

    头部和尾部都是一行代码如下:

    <h1>我是头部</h1>
    <h1>我是尾部</h1>

    启动服务器后,我们输入http://localhost:3000/ejs,显示内容如下:


     


    这说明我们利用ejs模板做到了正确输出,这既可以大大增加代码的复用性,而且当data为数据库中的数据时,我们就可以做到实时更新网站数据了,这样一个简单动态网站就完成了,听起来是不是很简单,不过还有很长一段路要走滴,先睡了,下次再更。

  • 相关阅读:
    用成员函数指针作为Callback
    在ubuntu上编译gcc会到的问题及解决方法
    异步
    棋牌游戏服务器架构: 详细设计(二) 应用层设计
    elementUI eltable添加序号列
    vue 父子组件的相互调用
    所谓编程的哲学艺术
    亲爱的百度,您带着bug翩翩走来……呃
    std::vector<point>对距离固定点的距离排序
    升级ubuntu11出现grub错误
  • 原文地址:https://www.cnblogs.com/mafeng/p/7692199.html
Copyright © 2011-2022 走看看