欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > express的模板handlebars用app.engine()创建配置和用exphbs.create()的区别

express的模板handlebars用app.engine()创建配置和用exphbs.create()的区别

2025/4/27 4:59:11 来源:https://blog.csdn.net/cdcdhj/article/details/147522917  浏览:    关键词:express的模板handlebars用app.engine()创建配置和用exphbs.create()的区别

在使用 express-handlebars 时,app.engine 和 exphbs.create 都可以用来配置 Handlebars 模板引擎,但它们的使用方式和功能有一些区别。以下是详细的对比和说明

  1. app.engine 方法
    app.engine 是 Express 提供的方法,用于注册一个新的模板引擎。在使用 express-handlebars 时,通常通过 app.engine 来配置 Handlebars 模板引擎。
const express = require('express');
const exphbs = require('express-handlebars');const app = express();// 使用 app.engine 注册模板引擎
app.engine('handlebars', exphbs({defaultLayout: 'main',	//默认模板或主布局文件名extname: '.hbs',	//模板的后缀扩展名partialsDir: ['views/partials/', 'views/common/'],	//局部文件和块级文件的路径viewsDir: 'views/',	//视图文件路径layoutsDir: 'views/layouts/',	helpers: {customHelper: function(value) {return value.toUpperCase();}}
}));// 设置模板引擎
app.set('view engine', 'handlebars');// 示例路由
app.get('/', (req, res) => {res.render('index', { title: 'Home Page' });
});app.listen(3000, () => {console.log('Server is running on http://localhost:3000');
});
  1. exphbs.create 方法
    exphbs.create 是 express-handlebars 提供的一个方法,用于创建一个新的 Handlebars 实例。这个实例可以独立于默认的 Handlebars 实例,允许你在不同的环境中隔离配置和模板。
const express = require('express');
const exphbs = require('express-handlebars');const app = express();// 使用 exphbs.create 创建一个新的 Handlebars 实例
const hbs = exphbs.create({defaultLayout: 'main',extname: '.hbs',partialsDir: ['views/partials/', 'views/common/'],viewsDir: 'views/',layoutsDir: 'views/layouts/',helpers: {customHelper: function(value) {return value.toUpperCase();}}
});// 使用创建的实例注册模板引擎
app.engine('handlebars', hbs.engine);// 设置模板引擎
app.set('view engine', 'handlebars');// 示例路由
app.get('/', (req, res) => {res.render('index', { title: 'Home Page' });
});app.listen(3000, () => {console.log('Server is running on http://localhost:3000');
});
  1. 区别和不同
    3.1 功能隔离
    app.engine:直接将配置传递给 express-handlebars,并注册到 Express 的模板引擎中。这种方式简单直接,但所有配置都作用于全局。
    exphbs.create:创建一个新的 Handlebars 实例,允许你在不同的环境中隔离配置和模板。这在大型项目中非常有用,特别是当你需要多个独立的模板配置时。
    3.2 配置灵活性
    app.engine:配置选项直接传递给 express-handlebars,适用于简单的项目配置。
    exphbs.create:通过创建一个新的实例,可以更灵活地管理配置。例如,你可以在不同的路由或中间件中使用不同的 Handlebars 实例。
    3.3 使用场景
    app.engine:适用于大多数简单的 Express 项目,配置简单且直接。
    exphbs.create:适用于需要高度隔离和灵活配置的项目,例如多租户应用或大型项目。
  2. 总结
    app.engine:适合大多数简单的项目,直接将配置传递给 express-handlebars,并注册到 Express 中。
    exphbs.create:适合需要高度隔离和灵活配置的项目,通过创建独立的 Handlebars 实例来管理配置。
    根据你的项目需求选择合适的方式。如果你的项目结构简单,直接使用 app.engine 即可;如果你需要更复杂的配置和隔离,可以使用 exphbs.create

下面详细解释下配置文件中的路径和作用:

  1. defaultLayout: ‘main’
    含义:指定默认的布局文件名(不包含扩展名)。
    路径:布局文件位于 layoutsDir 指定的目录中。
    文件:views/layouts/main.hbs
    作用:当渲染视图时,如果没有显式指定布局文件,将使用这个默认布局文件。

  2. extname: ‘.hbs’
    含义:指定模板文件的扩展名。
    路径:这个选项不影响路径,但决定了模板文件的扩展名。
    文件:所有模板文件的扩展名应该是 .hbs,例如 index.hbs、main.hbs 等。
    作用:告诉 express-handlebars 哪些文件是模板文件。

  3. partialsDir: [‘views/partials/’, ‘views/common/’]
    含义:指定块级模板(partials)的目录路径。
    路径:可以是一个字符串或字符串数组,表示多个目录。
    文件:
    views/partials/ 下的文件,例如 header.hbs、footer.hbs。
    views/common/ 下的文件,例如 sidebar.hbs。
    作用:在模板中可以通过 {{> partialName}} 引用这些块级模板。例如:

{{> header}}
<p>Main content</p>
{{> footer}}
  1. viewsDir: ‘views/’
    含义:指定视图文件的目录路径。
    路径:相对于当前工作目录的路径。
    文件:所有视图文件位于这个目录下,例如 views/index.hbs。
    作用:当调用 res.render(‘index’) 时,Express 会在 viewsDir 指定的目录中查找 index.hbs 文件。

  2. layoutsDir: ‘views/layouts/’
    含义:指定布局文件的目录路径。
    路径:相对于当前工作目录的路径。
    文件:所有布局文件位于这个目录下,例如 views/layouts/main.hbs。
    作用:布局文件用于包裹视图文件,提供统一的页面结构。默认布局文件由 defaultLayout 指定。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词