Nodejs express include 是否可以传参数 2.0使用partial 这种方式不知道3.0 分部视图带参数如何实现

Nodejs express include 是否可以传参数 2.0使用partial 这种方式不知道3.0 分部视图带参数如何实现

express include 是否可以传参数 2.0使用partial 这种方式不知道3.0 分部视图带参数如何实现

3 回复

Node.js Express 中的 include 是否可以传递参数

在 Express 3.0 版本中,虽然 partial 功能被移除了,但你可以使用其他方法来实现类似的功能,并且可以在渲染分部视图时传递参数。通常,我们使用模板引擎(如 EJS、Pug 或 Handlebars)来实现这种功能。

使用 EJS 模板引擎

假设你正在使用 EJS 作为模板引擎,你可以通过以下步骤实现带有参数的分部视图。

  1. 安装 EJS(如果你还没有安装的话):

    npm install ejs
    
  2. 创建一个分部视图文件,例如 header.ejs

    <!-- views/partials/header.ejs -->
    <header>
      <h1>Welcome, <%= user.name %>!</h1>
    </header>
    
  3. 在主视图中包含分部视图并传递参数

    <!-- views/index.ejs -->
    <!DOCTYPE html>
    <html>
    <head>
      <title>Home Page</title>
    </head>
    <body>
      <% include ./partials/header.ejs %>
      <main>
        <p>This is the main content of the page.</p>
      </main>
    </body>
    </html>
    
  4. 在路由中渲染主视图并传递数据

    const express = require('express');
    const app = express();
    app.set('view engine', 'ejs');
    
    app.get('/', (req, res) => {
      const user = { name: 'John Doe' };
      res.render('index', { user });
    });
    
    app.listen(3000, () => {
      console.log('Server is running on port 3000');
    });
    

在这个例子中,我们在主视图 index.ejs 中包含了分部视图 header.ejs,并通过传递 user 对象将参数传递给分部视图。这样,你就可以在分部视图中访问这些参数了。

总结

虽然 Express 3.0 移除了 partial 功能,但你可以通过模板引擎(如 EJS)中的 <% include %> 语法来实现类似的功能,并且可以在包含分部视图时传递参数。这种方式不仅灵活,而且功能强大,能够满足大多数需求。


我知道咋个用了 自己想多了 include 根本不需要传参数 ,直接使用 控制器返回的数据就I可以了 和主页面的使用方式一样

在Express 3.0中,虽然没有直接使用partial的方法,但你可以通过其他方式来实现分部视图(Partial Views)并传递参数。你可以使用res.render方法来渲染一个模板,并将其包含到另一个模板中。

以下是一个示例,展示如何在Express 3.0中使用模板引擎(如EJS或Pug)来实现分部视图并传递参数:

使用 EJS 模板引擎

假设我们有两个模板文件:index.ejsheader.ejs

header.ejs (分部视图)

<!-- header.ejs -->
<h1><%= title %></h1>
<p>Welcome to <%= subTitle %></p>

index.ejs (主模板)

<!-- index.ejs -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <%- include('header', { title: 'Welcome', subTitle: 'Home Page' }) %>
    <p>Main content goes here.</p>
</body>
</html>

使用 Pug 模板引擎

假设我们有两个模板文件:index.pugheader.pug

header.pug (分部视图)

// header.pug
h1 #{title}
p Welcome to #{subTitle}

index.pug (主模板)

// index.pug
doctype html
html(lang="en")
  head
    meta(charset="UTF-8")
    title Document
  body
    include header
      - var locals = { title: 'Welcome', subTitle: 'Home Page' }
    p Main content goes here.

Express 路由设置

const express = require('express');
const app = express();
app.set('view engine', 'ejs'); // 或者 'pug'
app.set('views', './views');

app.get('/', function(req, res) {
    res.render('index', {
        title: 'Welcome',
        subTitle: 'Home Page'
    });
});

app.listen(3000);

在这个例子中,我们在路由处理函数中传递了参数给模板,这些参数被用于渲染分部视图。这样你就可以在Express 3.0中实现带有参数的分部视图了。

回到顶部