Express中使用ejs新建项目以及ejs中实现传参、局部视图include、循环列表数据的使用

场景

什么是模板引擎

    模板引擎( Template Engine)是一个从页面模板根据一定的规则生成HTML的工具。它的发韧可以追溯到1996年PHP 2.0的诞生。PHP原本是Personal Home Page Tools(个人主页工具)的简称,用于取代Perl和CGI的组合,其功能是让代码嵌人在HTML中执行,以产生动态的页面,因此PHP堪称是最早的模板引擎的雏形。随后的ASP, JSP都沿用了这个模式,即建立一个HTML页面模板,插人可执行的代码,运行时动态生成HTML。

    基于JavaScript的模板引擎有许多种实现,我们推荐使用ejs(Embedded JavaScript),因为它十分简单,而且与Express集成良好。由于它是标准JavaScript实现的,因此它不仅可以运行在服务器端,还可以运行在浏览器中。我们这一章的示例是在服务器端运行ejs,这样减少了对浏览器的依赖,而且更符合传统架构的习惯。

ejs官网:

https://ejs.bootcss.com/#docs

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

新建项目

在前端项目IDE中,这里是Webstorm,新建空项目,然后在此目录下打开终端。

express -e microBlog

后面跟的是项目名,会使用ejs引擎去生成项目。

 

然后会生成项目目录,进入到项目中

cd microBlog

安装项目依赖

npm install

或者

cnpm install

 

启动项目的命令不再是node app.js,而是

npm start

 

然后打开浏览器输入:

localhost:3000

项目就启动成功了。

使用模板引擎

首先在app.js中设置要使用的模板引擎和模板引擎的位置

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

在使用ejs作为模板引擎后在app.js中已经添加了这些代码。

在app.js中已经引入了index模块

var indexRouter = require('./routes/index');

app.use('/', indexRouter);

来到routes下index.js

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: '公众号:霸道的程序猿' });
});

module.exports = router;

通过

res.render('index', { title: '公众号:霸道的程序猿' });

就能调用名字为index.ejs的模板引擎,并且向其传递参数,参数名为title,参数值为'公众号:霸道的程序猿'

来到views下index.ejs中

<!DOCTYPE html>
<html>
  <head>
    <title><%= title %></title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
    <h1><%= title %></h1>
    <p>Welcome to <%= title %></p>
  </body>
</html>

就可以通过

<%= title %>

调用传递的参数。

重启项目并重新访问

 

片段视图

Express的视图系统还支持片段视图,就是一个页面的片段,通常是重复的内容,用于迭代显示。

在app.js中添加一个路由

app.get('/list',function (req,res) {
  res.render('list',{
    title:'List',
    items:[['公','众','号'],['霸','道','的','程','序','猿'],['编','程','教','程','与','资','源'],['免','费','推','送']]
  });
});

此路由向名字为list.ejs的模板引擎传递一个对象,对象有两个属性,其中第二个属性是一个二维数组。

然后在list.ejs中获取对象的第二个属性的值。

在views下新建list.ejs

<ul>
    <% items.forEach(function(item){ %>
        <%- include('./listitem', {item: item}); %>
    <% }); %>
</ul>

这里使用的是ejs的循环的语法,其中items就是上面传递过来的参数。

<%-代表输出非转义的数据到模板,其它标签含义还有

 

这里为了演示还使用了include用来包含另一个ejs。

通过 include 指令将相对于模板路径中的模板片段包含进来。(需要提供 'filename' 参数。) 例如,如果存在 "./views/users.ejs" 和 "./views/user/show.ejs" 两个模板文件,你可以通过 <%- include('user/show'); %> 代码包含后者。

你可能需要能够输出原始内容的标签 (<%-) 用于 include 指令,避免对输出的 HTML 代码做转义处理。

这里引入了在同级目录下的listitem.ejs模板引擎文件,并且向其传递参数item

在views下新建文件listitem.ejs

<%for(var i=0;i<item.length;i++) { %>
<li><%=item[i] %></li> <%}%>

 然后启动项目,访问

localhost:3000/list

 

示例代码下载

https://download.csdn.net/download/BADAO_LIUMANG_QIZHI/12980008

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
aopalliance-1.0.jar,asm-5.1.jar,asm-commons-5.1.jar,asm-tree-5.1.jar,bsh-2.0b4.jar,classworlds-1.1.jar,commons-beanutils-1.9.2.jar,commons-collections-3.2.1.jar,commons-digester-2.1.jar,commons-fileupload-1.3.2.jar,commons-io-2.4.jar,commons-lang-2.4.jar,commons-lang3-3.4.jar,commons-logging-1.1.3.jar,dwr-1.1.1.jar,ezmorph-1.0.6.jar,freemarker-2.3.23.jar,google-collections-1.0.jar,google-gxp-0.2.4-beta.jar,hamcrest-core-1.3.jar,jackson-annotations-2.6.0.jar,jackson-core-2.6.1.jar,jackson-databind-2.6.1.jar,javassist-3.20.0-GA.jar,jcl-over-slf4j-1.7.6.jar,jcommander-1.12.jar,json-lib-2.3-jdk15.jar,juli-6.0.18.jar,log4j-api-2.7.jar,ognl-3.1.12.jar,org.apache.felix.framework-4.0.3.jar,org.apache.felix.main-4.0.3.jar,org.apache.felix.shell-1.4.3.jar,org.apache.felix.shell.tui-1.4.1.jar,org.osgi.compendium-4.0.0.jar,org.osgi.core-4.1.0.jar,oval-1.31.jar,plexus-container-default-1.0-alpha-10.jar,plexus-utils-1.2.jar,sitemesh-2.4.2.jar,slf4j-api-1.7.12.jar,snakeyaml-1.6.jar,spring-aop-4.1.6.RELEASE.jar,spring-beans-4.1.6.RELEASE.jar,spring-context-4.1.6.RELEASE.jar,spring-core-4.1.6.RELEASE.jar,spring-expression-4.1.6.RELEASE.jar,spring-test-4.1.6.RELEASE.jar,spring-web-4.1.6.RELEASE.jar,struts2-bean-validation-plugin-2.5.10.jar,struts2-cdi-plugin-2.5.10.jar,struts2-config-browser-plugin-2.5.10.jar,struts2-convention-plugin-2.5.10.jar,struts2-core-2.5.10.jar,struts2-dwr-plugin-2.5.10.jar,struts2-embeddedjsp-plugin-2.5.10.jar,struts2-gxp-plugin-2.5.10.jar,struts2-jasperreports-plugin-2.5.10.jar,struts2-javatemplates-plugin-2.5.10.jar,struts2-jfreechart-plugin-2.5.10.jar,struts2-json-plugin-2.5.10.jar,struts2-junit-plugin-2.5.10.jar,struts2-osgi-admin-bundle-2.5.10.jar,struts2-osgi-demo-bundle-2.5.10.jar,struts2-osgi-plugin-2.5.10.jar,struts2-oval-plugin-2.5.10.jar,struts2-pell-multipart-plugin-2.5.10.jar,struts2-plexus-plugin-2.5.10.jar,struts2-portlet-plugin-2.5.10.jar,struts2-rest-plugin-2.5.10.jar,struts2-sitegraph-plugin-2.5.10.jar,struts2-sitemesh-plugin-2.5.10.jar,struts2-spring-plugin-2.5.10.jar,struts2-testng-plugin-2.5.10.jar,struts2-tiles-plugin-2.5.10.jar,tiles-api-3.0.7.jar,tiles-autotag-core-runtime-1.2.jar,tiles-core-3.0.7.jar,tiles-el-3.0.7.jar,tiles-freemarker-3.0.7.jar,tiles-jsp-3.0.7.jar,tiles-ognl-3.0.7.jar,tiles-request-api-1.0.6.jar,tiles-request-freemarker-1.0.6.jar,tiles-request-jsp-1.0.6.jar,tiles-request-servlet-1.0.6.jar,tiles-servlet-3.0.7.jar,tiles-template-3.0.7.jar,validation-api-1.1.0.Final.jar,velocity-1.7.jar,xmlpull-1.1.3.1.jar,xpp3_min-1.1.4c.jar,xstream-1.4.8.jar

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霸道流氓气质

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值