node.js模块引擎

一、什么是模版引擎

 模版引擎是一个从页面模版根据一定的规则生成HTML的工具,PHP首发,随后出现了ASP、JSP都沿用这个模式,即建立一个HTML页面模版,插入可执行的代码。运行时动态生成HTML

        缺点:

页面功能逻辑与页面布局样式耦合,网站规模变大以后逐渐难以维护
语法复杂,对于非技术的网页设计者来说门槛高,难以学习。
功能过于全面,页面设计者可以在页面上编程,不利于功能划分,也使模版解析效率降低。
后来MVC架构的诞生,模版引擎包含在服务器端,控制器得到用户请求后,从模型获取数据,调用模版引擎,模版引擎以数据和页面模版为输入,生成HTML页面,然后返回给控制器。
由控制器交回客户端。

二、使用模版引擎

基于javascript的模版引擎有许多种实现,我们推荐使用ejs,它学习起来简单,与express集成良好,它的标准是javacript实现的,它不仅可以运行在服务器端,还可以运行在浏览器中。服务端运行ejs,这样减少了对浏览器的依赖,而且更符合传统架构的习惯。

        分析工程运行:

app.set("views",__dirname+"/views");   指定页面模版的存放目录
app.set("view engine","ejs")     使用ejs模版引擎
res.render('index',{title:'pcat'})  调用模版引擎,接受两个参数,
参数一:模版的名称,即views目录下的模版文件名,不包括扩展名,
参数二:传递给模版的数据。

        ejs的标签:

1.<% code %>  JavaSctipt代码
2.<%=code%> 显示替换过HTML特殊字符的内容
            3.<%-code%>  显示原始HTML内容

三、页面布局

  Express从2.x升级到3.x, ejs不支持模版引擎,jade支持
layout.ejs是一个模版布局模版,它描述整个页面的框架架构,默认情况下每个单独的页面都继承自这个框架,替换掉<%-body%>部分,这个功能非常有用。

           1. 一般为了保持整个网站的一致风格,HTML的<head>部分以及底部,的大量内容是重复的,因此我们可以把它们放到layout.ejs中,然后把body填充成自定义部分即可。

如果想关闭它则
app.set('view options',{
layout:false
})

            2.如果网站不止需要一种页面布局,例如后台和前台,那么我们可以在调用视图模版的时候指定上layout.(ejs的写法)

.

                ejs的实现: res.render('userlist',{

title:"后台管理",
 layout:'admin'    // 它就会寻找admin.ejs的布局模版。
}) 

                jade的实现:

在我们的请求的目的页面中第一句话写上extends(继承) 模版布局模版名\
例如: extends layout       

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509918.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HBase ACL管理 Hbase 权限管理

场景&#xff1a;hadoop集群已经进行kerberos认证 启动Hbase相关配置Hbase权限分为以下五种&#xff1a;Read(R) : 可以读取给定范围内数据的权限 Write(W) : 可以在给定范围内写数据 Executor(X) : 可以在指定表执行Endpoints类型的协处理 Create(C) : 可以在给定范围内创建和…

MySql索引的原理

数据库索引&#xff0c;是数据库管理系统中一个排序的数据结构&#xff0c;以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B树。 在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&#xff0c;这些数据结构以某种方式引用&#xff08…

Hadoop Kerberos 认证下 Sentry 安装 + Sentry 权限设置使用

目录 一、安装Sentry &#xff11;.&#xff2d;ariaDB中创建sentry数据库 2.CDH中添加sentry 服务 3.hive配置 启动Sentry 4.Impala配置 启动Sentry 5.Hue配置 启动Sentry 6.Hdfs配置 启动Sentry 7.重启服务&#xff0c;使配置生效 二、Sentry权限测试 1.创建hive超…

mongodb最详细的安装与配置

今天晚上才装好&#xff0c;我觉得有必要写这篇文章给你们分享一下 我是看点击打开链接这位博主的文章才装好的其中我想引用里面内容从头到尾来给你们 分享一下流程 第一步&#xff1a;下载mongodb https://www.mongodb.com/download-center#community 第二步&#xff1a;m…

vue.js安装与配置

我们在前端学习中&#xff0c;学会了HTML、CSS、JS之后一般会选择学习一些框架&#xff0c;比如Jquery、AngularJs等。这个系列的博文是针对于学习Vue.js的同学展开的。 1.如何简单地使用Vue.js 如同以前我们学过的Jquery一样&#xff0c;我们在程序中使用Vue.js时也可以使用直…

Hbase WALs(HLog) 文件存储,查看

WALs(HLog) 存储 HLog 存储位置是在&#xff0c;hbase配置目录下WALs目录&#xff0c;默认为 /hbase/WALs 与 /hbase/oldWALs /hbase/WALs : 存储未过期的日志/hbase/oldWALs : 存储已过期的日志 这里先查看WALs日志目录&#xff0c;目录格式为&#xff1a;hostname1 为 …

Elasticsearch 6.x 下载安装

下载ES 下载ES安装包上传至服务器&#xff0c;地址为&#xff1a; https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.1.0.tar.gz 上传完成后解压 tar -zxvf elasticsearch-6.1.0.tar.gz 安装JDK 这里使用jdk8&#xff0c;官网下载安装即可&#xf…

抽象工厂模式-与-工厂方法模式区别

首先来看看这两者的定义区别&#xff1a; 工厂模式&#xff1a;定义一个用于创建对象的借口&#xff0c;让子类决定实例化哪一个类 抽象工厂模式&#xff1a;为创建一组相关或相互依赖的对象提供一个接口&#xff0c;而且无需指定他们的具体类 个人觉得这个区别在于产品&#x…

Centos7.x 安装 CDH 6.x

前置条件 ntp服务安装防火墙关闭 执行以下优化代码 systemctl stop firewalld.service echo "* soft nofile 128000" >>/etc/security/limits.conf echo "* hard nofile 128000" >>/etc/security/limits.conf echo "* so…

Windows IEDA 编译Hbase源码报错 - 无法执行shell脚本

windows 下编译 hbase源码&#xff0c;报错 [ERROR] Command execution failed. java.io.IOException: Cannot run program "bash" (in directory "D:\File\ideaWorkspace\hbase-1.4.10-src\hbase-1.4.10\hbase-shaded\hbase-shaded-check-invariants\target\…

最新版 VMware 安装,虚拟机安装, Ubuntu可视化linux系统安装

一、下载 地址&#xff1a;https://www.vmware.com/cn.html 二、安装VM 选择相应配置&#xff0c;一直下一步即可 双击打开VMware&#xff0c;输入密钥&#xff1a;CG392-4PX5J-H816Z-HYZNG-PQRG2 Ubuntu 镜像下载地址&#xff1a; https://www.ubuntu.com/download/desktop/…

Flink 集群搭建安装 CentOS 7.x 版本

基本准备&#xff1a; JDK免密登录&#xff08;不设置后期启动可以手动输入密码&#xff09;Centos 7.x 一、下载Flink 下载地址&#xff1a;http://flink.apache.org/downloads.html 我这里使用&#xff1a;https://www.apache.org/dyn/closer.lua/flink/flink-1.9.0/flin…

web通讯录之登录注册界面

登录页面&#xff1a; 功能说明&#xff1a;登录页面是在页面模糊背景网站中找的素材加以修改成自己想要的登录界面&#xff0c;我们老师让我们在登录时候加验证码&#xff0c;看了大部分人用的是签名登录方式&#xff0c;觉得没有什么特色因此设计了滑动登录&#xff0c;把验证…

使用IntelliJ IDEA导入 Flink 消费kafka报错 Error: A JNI error has occurred, please check your installation an

提示找不到类&#xff0c;pom中已经引用了jar包&#xff0c;使用eclipse也可以执行&#xff0c;就是IntelliJ不行 java.lang.NoClassDefFoundError: org/apache/flink/api/common/serialization/DeserializationSchemaat java.lang.Class.getDeclaredMethods0(Native Method)a…

有限状态机/FSM

有限状态机&#xff08;FSM&#xff09;的设计与实现&#xff08;一&#xff09; 有限状态机&#xff08;FSM&#xff09;是表示有限个状态及在这些状态之间的转移和动作等行为的数学模型&#xff0c;在计算机领域有着广泛的应用。通常FSM包含几个要素&#xff1a;状态的管理、…

web通讯录之通讯录主界面

界面展示&#xff1a; 界面所用的素材网址点击打开链接&#xff0c;在用网上素材时候首先要把代码看懂才能进行修改&#xff0c;因此希望读者好好看看源码&#xff0c;看的时候着重看看字母排序原理、JQuery设计等等。 分组展示&#xff1a;这个地方有个不好的地方&#xff0c…

NameNode 启动失败 - There appears to be a gap in the edit log. We expected txid xxx, but got tx

场景 NameNode迁移&#xff0c;导致一个节点无法启动 异常 在Namenode主动迁移&#xff0c;或者Namenode机器挂掉无法恢复时&#xff0c;我们需要Namenode节点迁移&#xff0c;迁移经常会出现一个NameNode启动成功&#xff0c;另外一个standby启动失败&#xff0c;报错如下 …

opengl光照

看一张图片&#xff1a; 图中绘制了两个大小相同的白色球体。其中右边的一个是没有使用任何光照效果的&#xff0c;它看起来就像是一个二维的圆盘&#xff0c;没有立体的感觉。左边的一个是使用了简单的光照效果的&#xff0c;我们通过光照的层次&#xff0c;很容易的认为它是一…

Nifi 之 kafka消费存入hbase

添加kafka processor&#xff0c;配置如下 kakfa数据格式为JSON&#xff1a; {"events_tag":"103913","query_word":"华大癌变 虎嗅","time":"2018-08-09 13:01:11"} 添加putHbaseJSON&#xff0c;json格式添加数…

web通讯录之搜索功能

手机号搜索&#xff1a; 姓名搜索&#xff1a; 拼音搜索&#xff1a; 城市搜索&#xff1a; 性别搜索&#xff1a; 点击姓名或者电话显示完整信息 相信大家期待自己所写的搜索功能类似于百度、谷歌这种搜索引擎&#xff0c;有兴趣的读者可以去学学SEO&#xff0c;在这里我…