如何在使用ejs的express框架中正确地使用局部视图?

4
我有一个Web应用程序,整个布局保持不变,除了一个
。目前,我只是使用路由来处理链接,似乎重新加载其余的layout.ejs文件是一种浪费,因为我想要改变的唯一事物是我的

我需要在我的layout.ejs文件中做出什么改变?这是我的当前文件:
<!DOCTYPE html>
<html lan="en">
  <head>
    <title><%= title %></title>
    <link rel="stylesheet" href="/stylesheets/reset.css">
    <link rel='stylesheet' href='/stylesheets/style.css' />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
    <script src="/nowjs/now.js"></script>
    <script src="/javascripts/chat.js"></script>
  </head>
  <body>
    <div id="wrapper">
        <div id="header">
        </div>
        <div id="chat">
            <input type="text" id="text-input">
            <input type="button" value="Send" id="send-button">
        </div>
        <div id="content">
            <%- body %>
        </div>
        <div id="rooms">
        </div>
        <div id="footer">
            <div id="footer_links">
                <a href="/">Home</a> | <a href="/about">About</a> | <a href="/contact">Contact</a>
            </div>
        </div>
    </div>
  </body>
</html>

我在考虑使用AJAX来实现这个功能,但是我听说使用局部视图也有很多好处。只是我不确定如何设置。此外,我听说可以使用WebSockets来替代AJAX与局部视图一起使用。这样做是一个好主意吗?是否可行?

抱歉,这可能很简单,但我在阅读文档时遇到了困难。

谢谢!


博客文章。展示了如何在客户端上呈现EJS视图。 - Raynos
1个回答

7
我刚刚解决了它。
在视图中,您可以调用`partial(filename)`来加载部分。假设我们使用EJS,并且`views/`中有三个文件:
1. layout.ejs 2. index.ejs 3. header.ejs
并且index.ejs的内容为:
`<%- partial('header') %>`
然后启动服务器,浏览器访问它,您将看到`header.ejs`已加载到`index.ejs`中。
!!!更新
在Express版本>=3.0中,没有`partial()`了。但是我们可以使用`<% include xxx.file %>`或者只需使用另一个模块:“express-partials”。请在Github上搜索它。

它现在仍然对我有帮助,而我只是花了大约20分钟找到它 ;) - Milan Babuškov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接