在哪里“构建”侧边栏的内容?

发布于 2024-11-28 16:49:47 字数 278 浏览 0 评论 0原文

我目前正在使用 Express 创建我的新网站。该页面分为不同的“部分”(例如博客、有关我的项目的信息等)。 我希望在我的内容旁边有一个“侧边栏”,每个部分都不同。例如,在“博客”部分 id 中,希望有一个我的标签或类别的列表,而在项目部分中,应该有一个所有项目的列表。内容取决于部分,并且对于本部分的每个“子部分”都是相同的。

一种解决方案是创建一个函数来创建侧边栏内容,并在处理路线的每个函数中调用该函数。但我不喜欢这个解决方案,因为它似乎不是“正确的解决方案”......

有人对此有一个好的解决方案吗?

I'm currently creating my new website with express. The page is split up in different "sections" (for example a blog, information about my project and so on).
I'd like a have a "sidebare" next to my content thats different for each section. For example in the "blog"-Section id like to have a list of my tags or categorys and in the project section there should be a list of all projects. The content depends on the section and is the same for every "subpart" of this section.

One solution would be to create a function that creates the sidebars content and call this function in every function that handles a route. But I don't like this solution because it doesn't seems to "be the right one"...

Does anyone have a nice solution for this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

难忘№最初的完美 2024-12-05 16:49:47

如果我正确理解你的问题,你想知道如何使用相同的整体模板渲染多个“部分”,是吗?每个部分可能会有所不同,具体取决于页面上的内容和主 URL。

我可以建议两种方法:
1)恕我直言,正确的方法 - 定义一个基本模板(如果您使用的是jade/express,则为index.jade),然后您将使用该模板为主页(/)和博客页面(/blog)创建路由:

# Home Page
app.get '/', (req, res) ->
  # Do some simple DB transactions, etc, and get the main area content.
  res.render 'index.jade', { json: json }

# Blog Page
app.get '/blog/:id', (req, res) ->
  blog.grabPost req.params.id, (json) ->  # Grab content of the blog post from the DB
    res.render 'index.jade', { json: json }

下一步,为其余内容创建一些“部分”URL:

# Sidebar Partial
app.get '/sidebar/:page/:id', (req, res) ->
  sidebar.grabContent req.params.id, (json) ->
    res.render '{#req.params.page}.jade', { json: json }

然后,您可以在页面加载时通过 JQuery 调用部分客户端,如下所示:

$ ->
  $('.sidebar').load '/sidebar/blog/365' + id, (response, status, xhr) ->

2)使用我不太熟悉的 Express“查看部分”。文档可以在这里找到:http://expressjs.com/guide.html#view-partials

根据描述:“Express 视图系统内置了对部分和集合的支持,它们是表示文档片段的“迷你”视图。例如,我们可以使用部分集合,而不是在视图中迭代来显示注释: ”

If I understand your question correctly, you want to know how to render multiple 'sections' using the same overall template, yes? Each section could differ depending on the content on the page and the main URL.

I can suggest two ways:
1) IMHO the right way - Define a base template (say index.jade if you're using jade/express) and you would create routes for say a homepage (/) and a blog page (/blog) using that:

# Home Page
app.get '/', (req, res) ->
  # Do some simple DB transactions, etc, and get the main area content.
  res.render 'index.jade', { json: json }

# Blog Page
app.get '/blog/:id', (req, res) ->
  blog.grabPost req.params.id, (json) ->  # Grab content of the blog post from the DB
    res.render 'index.jade', { json: json }

Next, create a few 'partial' URL's for the remainder of the content:

# Sidebar Partial
app.get '/sidebar/:page/:id', (req, res) ->
  sidebar.grabContent req.params.id, (json) ->
    res.render '{#req.params.page}.jade', { json: json }

You would then call the partial client-side upon pageload via JQuery like so:

$ ->
  $('.sidebar').load '/sidebar/blog/365' + id, (response, status, xhr) ->

2) Using Express 'view partials' which I'm much less familiar with. Documentation can be found here: http://expressjs.com/guide.html#view-partials

From the description: "The Express view system has built-in support for partials and collections, which are “mini” views representing a document fragment. For example rather than iterating in a view to display comments, we could use partial collection:"

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文