Docpad能否生成可由客户端javascript框架使用的json文件?

Docpad能否生成可由客户端javascript框架使用的json文件?,json,docpad,static-site,Json,Docpad,Static Site,是否可以将Docpad用作静态站点生成器,同时输出可由客户端JS应用程序使用的json文件 我正在使用Docpad作为静态站点生成器构建一个网站,我有一个事件部分,我希望事件主页列出使用Docpad发布的所有事件(带有指向事件详细信息页面的链接) 我想做的是通过循环一个包含所有事件的集合来生成事件列表,但我也想让列表更具交互性和可排序性(因为我们有各种各样的事件,希望让人们更容易找到感兴趣的事件) 我想做的是将事件列表输出到一个JSON文件,我们可以将它传递到一个AngularJS应用程序,该应

是否可以将Docpad用作静态站点生成器,同时输出可由客户端JS应用程序使用的json文件

我正在使用Docpad作为静态站点生成器构建一个网站,我有一个事件部分,我希望事件主页列出使用Docpad发布的所有事件(带有指向事件详细信息页面的链接)

我想做的是通过循环一个包含所有事件的集合来生成事件列表,但我也想让列表更具交互性和可排序性(因为我们有各种各样的事件,希望让人们更容易找到感兴趣的事件)

我想做的是将事件列表输出到一个JSON文件,我们可以将它传递到一个AngularJS应用程序,该应用程序对事件进行表示、排序和显示

我知道Docpad可以用来生成xml,但是可以使用Docpad生成包含所需数据的json文件吗?到目前为止,我的尝试都失败了,这就是为什么我问我所问的是否可能。我的备份是使用XML,但我更喜欢JSON,因为它可以在本地使用


TIA。

如果我正确理解了这个问题,那么您应该能够在Docpad中生成一个JSON文件,就像您生成任何其他文档一样。除了选择你最喜欢的模板插件,没有什么特别需要做的。我使用模板插件来生成我的帖子的JSON文件:

<% posts = @getCollection('posts').toJSON() %>
<%content = posts[0].contentRenderedWithoutLayouts or posts[0].content%>
<%#handle first item manually just to avoid the last array member having a hanging comma%>
[{
  'title': '<%-posts[0].title%>',
  'date' : '<%-posts[0].date.toDateString()%>',
  'content': '<%=@truncateText(content,700)%>',
  'slug': '<%-posts[0].slug%>',
  'url': '<%-posts[0].url%>'
<% posts = posts.slice(1)%>
<% for post in posts: %>
  <%content = post.contentRenderedWithoutLayouts or post.content%>
  },{
    'title': '<%-post.title%>',
    'date' : '<%-post.date.toDateString()%>',
    'content': '<%=@truncateText(content,700)%>',
    'slug': '<%-post.slug%>',
    'url': '<%-post.url%>'
<%end%>
}]

[{
“标题”:“,
“日期”:“,
“内容”:“,
“鼻涕虫”:“,
“url”:”
},{
“标题”:“,
“日期”:“,
“内容”:“,
“鼻涕虫”:“,
“url”:”
}]
在此之后,只需为模板文件提供双扩展名:“json.eco”

实际上,我在这里使用了类似的技术来组合和缩小css文件,我认为您可以使用这种方法来生成任何文档格式

编辑(事后思考)

作为一个特别适用于JSON的更简单的解决方案,您可以使用JavaScript的内置函数将对象转换为JSON

<%-JSON.stringify(@getCollection('posts').toJSON())%>

或者得到一个格式很好的版本

<%-JSON.stringify(@getCollection('posts').toJSON(),null,2)%>

您是否尝试使用现有插件:


或者至少看看他们的代码并根据您的用例进行修改?

我就是这样做的。事件的所有数据都存储在磁盘上的json文件中。我有一个(私有)页面,用于编辑需要密码的数据(将express中间件添加到docpad.coffee-请参阅),并有一个将更改的数据保存到文件的路径。(事实上,我用PHP实现了这一点,因为我的客户端以前使用过PHP,我找不到任何便宜的节点托管)@SimonH1000你能分享一些关于DocPad生成JSON的细节吗?我仍然有点不清楚如何让这个工作与静态网站。如果我理解正确,您是从PHP而不是从DocPad生成JSON的。我想让DocPad通过解析DocPad集合来生成它。基本上,您需要在DocPad.coffee中使用serverExtend事件来创建一个express挂钩,您也可以从客户端发布该挂钩,并将结果保存到.json文件中。我找不到Docpad的代码,因为我最终不得不用php实现