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,一经查实,立即删除!

相关文章

勤学如春起之苗,不见其增,日有所长!

“工作三年&#xff0c;并不等于拥有三年的工作经验。”这句话告诉我们每天都要思考自己当天所遇到的问题&#xff0c;记录下来&#xff0c;并且思考这个问题的解决办法&#xff0c;每一周或两周总结这些问题和解决办法&#xff0c;归纳思考问题根源&#xff0c;学习解决问题的…

HBase ACL管理 Hbase 权限管理

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

node.js ejs的视图模块引擎

一、版本升级 Express从2.0升级到3.0,将ejs的用法忽略&#xff0c;改为用户自定义形式。引入ejs/index.js的模块&#xff0c;来支持ejs的模版引擎二、引入引擎的模块&#xff0c;然后在app中调用engine函数改造ejs引擎 app.engine(ejs, engine);将layout.ejs设置成默认的布局模…

文本文件和二进制文件的区别

广义的二进制文件即指文件&#xff0c;由文件在外部设备的存放形式为二进制而得名。狭义的二进制文件即除文本文件以外的文件。文本文件是一种由很多行字符构成的计算机文件。文本文件存在于计算机系统中&#xff0c;通常在文本文件最后一行放置文件结束标志。文本文件的编码基…

Kerberos Hbase Api 操作

初始化连接加载配置参数&#xff0c;这里只创建连接&#xff0c;具体操作hbase的api没有变化 static { try{ Configuration conf HBaseConfiguration.create();conf.addResource(new Path("config/hbase-site.xml"));//读取配置文件conf.set("hadoop.securi…

ndoe.js实战之开发微博第一讲之工具准备

内容&#xff1a;搭建开发环境和视图制作。一、创建项目 1.express ejs blog 创建项目cd blog 进入项目npm install 加入包的依赖2.加入ejs视图模版引擎支持加入文件 expand_modules/ejs/index.jsvar enginerequire("./expand_modules/ejs");在app中改造引擎app.e…

MySql索引的原理

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

SparkStreaming 异常:java.lang.NoSuchMethodError: scala.Predef scope()Lscala/xml/TopScope

SparkStreaming运行报错 19/05/05 22:35:18 INFO SparkEnv: Registering OutputCommitCoordinator Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.$scope()Lscala/xml/TopScope$;at org.apache.spark.ui.jobs.AllJobsPage.<init>(…

node.js微博案例第二讲

一、mongodb数据库安装 1.安装包下载&#xff1a;http://www.mongodb.org/downloads2.开始安装解压放入D:\Program Files\目录下。(推荐文件名为mongodb)创建Data、log和Data/db文件夹将mongodb的数据库文件D:\Program Files\mongodb\data\db目录下执行命令&#xff1a…

Spark提交 指定 kerberos 认证信息

spark-submit --principal hdfs/hostnamejast.COM --keytab hdfs-hostname.keytab --jars $(echo lib/*.jar | tr ,) --class com.jast.test.Test test.jar

mongodb数据库常用指令

详细安装看我文章http://blog.csdn.net/dreamzuora/article/details/78877898打开在bin目录下mongo.exe来操作数据库常用命令&#xff1a;show dbs //查看所有库use blog 使用指定的库show collections 查看所有的文档db.表名.find() 查询指定文档的数据db.表名.insert({…

二叉树遍历解析

1 / \ 2 3 / \ / \ 4 5 6 7 当你拿到一棵二叉树&#xff0c;无论它的形状如何的千奇百怪 我们都可以将它按照如下的方式划分根/ \ 左子树 右子树 一棵有很多个节点的二叉树可以划分为以上的形式 也可以这么…

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超…

数据结构与算法的联系

首先,数据结构是一门计算机语言学的基础学科&#xff0c;它不属于任何一门语言&#xff0c;其体现的是几乎所有标准语言的算法的思想。 上面的概念有一些模糊&#xff0c;我们现在来具体说一说&#xff0c;相信你门的数据结构使用的是一门具体的语言比如C/C语言来说明&#xff…

mongodb最详细的安装与配置

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

Impala-shell 启动异常 - Python版本为3.x 启动脚本为2.x

启动 Impala-shell 报错如下 [rootxxx ~]# impala-shellFile "/opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/bin/../lib/impala-shell/impala_shell.py", line 222print \tNo options available.^ SyntaxError: Missing parentheses in call to print发现语…

C++面试题(八)

客观题 (1)大端、小端问题&#xff0c;以共用体示例代码给出 假设计算机的CPU是Intel 32位的&#xff0c;以下代码输出结果是什么&#xff1f; [cpp] view plaincopy #include<stdio.h> union ut { short s; char ch[2]; }u; int main() { …

基于 Sentry Hive 权限控制命令详解

Sentry不支持Hive CLI列权限管理&#xff0c;建议禁用Hive CLI。 &#xff08;也不支持SparkSql列权限管理&#xff09; #权限分为 SELECT ,INSERT ,ALL #查看所有role show roles;#创建role create role role_name;#删除role drop role role_name; #将某个数据库读权限授予…

mongodb学习笔记之增删改查作指令

1: mongo入门命令 1.1: show dbs 查看当前的数据库 1.2 use databaseName 选库 1.2 show tables/collections 查看当前库下的collection 1.3 如何创建库? Mongodb的库是隐式创建,你可以use 一个不存在的库 然后在该库下创建collection,即可创建库 1.4 db.createCollectio…

Spark 报错 : Error: bad symbolic reference. A signature in SparkContext.class refers to term conf

报错如下&#xff1a; Error:scalac: Error: bad symbolic reference. A signature in SparkContext.class refers to term conf in package org.apache.hadoop which is not available. It may be completely missing from the current classpath, or the version on the cl…