Express使用html模板

express默认使用jade模板,可以配置让其支持使用ejs或html模板。

1. 安装ejs

   在项目根目录安装ejs.

npm install ejs

2、引入ejs

var ejs = require(‘ejs‘);  //我是新引入的ejs插件

3、设置html引擎

app.engine(‘html‘, ejs.__express);

设置视图引擎

app.set(‘view engine‘, ‘html‘);

保存后重启服务,即可访问html文件。

:在express搭建的服务器中,html引擎没有被配置,直接添加即可;视图引擎已配置,修改配置即可。

---------------------------------------------------------------------------------------------------------------------------------

修改的这些设置做了什么操作?

为什么修改了视图引擎还要增加设置html引擎?

我们先看一下.engine()这个方法。

app.engine(ext, callback);

Express默认使用jade模板。如果你尝试加载 "foo.jade" 文件,Express内部会调用如下操作。

app.engine(‘jade‘, require(‘jade‘).__express);

如果要使用其他模板引擎,如:将EJS模板映射至".html"文件:

app.engine(‘html‘, require(‘ejs‘).__express);

这行代码中,实际调用了EJS的.renderFile()方法,ejs.__express是该方法在EJS内部的另一个名字。

因为加载的模板引擎后调用的是同一个方法.__express,所以如果使用的是ejs模板,不用配置该项。

总结:使用html模板,需增加  app.engine(‘html‘, require(‘ejs‘).__express);

    使用EJS模板,不用配置该项。

此时如果在views文件夹里创建index.html文件或index.ejs文件,访问的仍然是默认的index.jade文件。这是为什么呢?这里要说的就是上面提到的第二项设置app.set(‘view engine‘, ‘html‘);

app.set(name, value);

在.set()方法的参数中,有一项是‘view engine‘,表示没有指定文件模板格式时,默认使用的引擎插件。如果这里设置为html文件,设置路由指定文件时,只需写文件名,就会找对应的html文件。于此,脑洞大开,试了一下在views中创建3个文件test.jade、test.ejs、test.html。路由设置如下。访问正常!每个路由都指向对应的文件。当然这种写法是完全不被建议也不符合现实的。

router.get(‘/test/‘,function(req, res, next){
  res.render(‘test‘, {title: ‘HTML‘});
});

router.get(‘/test1/‘,function(req, res, next){
  res.render(‘test.ejs‘, {title: ‘EJS‘});
});

router.get(‘/test2/‘,function(req, res, next){
  res.render(‘test.jade‘, {title: ‘jade});
});

看Express API的时候,看的是英文文档,那几句简单的话也琢磨了好几遍才能明白(顿时对技术翻译者的崇拜又增加好几个等级),只能按自己理解的去写了。

官方API:http://www.expressjs.com.cn/4x/api.html#app.engine

时间: 2024-10-29 13:37:43

Express使用html模板的相关文章

Express 框架、模板,MongoDB数据库

今天跟大家分享的是Express框架.模板.MongoDB数据库:个人觉得很有用,希望能在大家做项目的的过程中能有所帮助. Express 模板 这是一个用户量较大的一个Node框架,提供了一整套的Node模板,在里面可以使用EJS模板引擎.. 基于 Node.js 平台,快速.开放.极简的 web 开发框架.(开发后端) Express的性能对Node没有影响,依然很高. 安装方法: 1. 全局安装express 和 express应用生成器 npm install express -g np

express 4.x 模板引擎与express.static

前提:要在express中使用模块引擎需要将要使用的模板引擎安装在本项目,当然,express也是要安装的.在下面实例中,我使用的模板引擎是pug(一起叫做jade) 我的目录结构如下: 根目录为static,根目录下的public文件夹,是静态文件(如图片文件,css文件,js文件de)根目录.根目录下的view是模板文件的根目录.根目录中的app.js是启动文件, 代码如下: //引入必要的模块 //express.static是express 4.0中唯一的内置中间件,不需要额外引入 va

express结合EJS模板渲染HTML

注意:以下是在Windwo环境下 运行: npm install ejs 然后你的目录node_modules下将增加ejs文件夹 app.js var express=require("express"); var app=express(); //指定模板引擎 app.set("view engin",'ejs'); app.use(express.static(__dirname+"/views")); //利用模板文件home.ejs渲染

express结合jade模板渲染HTML

注意:以下是在Windwo环境下 运行: npm install jade 然后你的目录node_modules下将增加jade文件夹 app.js var express=require("express"); var app=express(); //指定模板引擎 app.set("view engin",'jade'); app.use(express.static(__dirname+"/views")); //利用模板文件home.ja

在Express中使用模板引擎

定义模板引擎 var app = express(); app.set('views', './views'); // 指定模板文件存放位置 app.set('view engine', 'jade') // 设置默认的模板引擎 注册指定扩展名的模板引擎: app.engine('jade', require('jade')._express ) 注意: _express函数是许多模板引擎提供的回调函数.但是这个函数只能在默认的文件扩展名上工作.但是,有种情况我们使用的不是对应模板引擎的扩展名的

如何在express使用doT模板引擎

本文假设你已经使用过doT和express,并知道它的模板语法. js的模板引擎实在太多了,幸好 JavaScript template language shootoff 这篇不断被更新的文章,帮我们用真实的测试结果,得到了目前最快的模板引擎doT 安装dot $ sudo npm install dot 让express使用dot 安装express的模板引擎约定,引擎必须有一个compile方法,接受str和options参数,返回一个function对象即可,接口大致如下: export

node(4)express 框架 EJS模板,cookie, session的学习

一.EJS 概述:前端咱们使用过的一个模板套路,是underscore的套路.接下来EJS它属于后台工程师人的模板. https://www.npmjs.com/package/ejs 官网地址 特点: Control flow with <% %>             流程控制语句用的是<% %>   :例如if   for循环等等 Escaped output with <%= %> (escape function configurable)     如果有赋

nodejs学习(二) ---- express中使用模板引擎jade

系列教程,上一节教程  express+nodejs快速创建一个项目 在创建一个项目后,views目录下的文件后缀为 .jade . 打开 index.jade,具体内容如下图(忽略 header.jade 和 footer.jade,下面教程会一步步创建) 页面解析出的样子如下图.完全是html标签 一.jade 模板引擎 介绍 模板引擎是一个库,或者一个使用一定的规则或者语言来解释数据并渲染视图的框架.模板引擎处理过的最终结果是一个视图页面,也就是html页面或者用户图形界面GUI.在MVC

Express使用art-template模板引擎

第一步:安装 npm install --save art-template npm install --save express-art-template 第二步:指定.html使用的解析引擎(官方给出的是art) app.engine('解析文件的后缀名', require('express-art-template')) 第三步:使用模板进行传值 app.get('/', function (req, res) { res.render('index.html', { user: { na