如何用快递渲染模板?

时间:2015-07-20 18:46:12

标签: angularjs express mean

我目前的设置如下: enter image description here

启动服务器并转到localhost会将我带到home.ejs,如此处所述(在我的前端路由中):

enter image description here

但是,当我转到localhost:3000 / posts时,post模板实际上没有被注入我的索引文件(我的ui-view所在的位置)。我一直在关注thinkster的平均堆栈指南,但已经做了一些更改(不使用内联模板)

我的问题是,如何设置我的路由,以便localhost:3000 / posts实际上会将我带到帖子页面?

2 个答案:

答案 0 :(得分:0)

您正在处理两种类型的路由,即客户端和服务器端。客户端位于角度代码中的app.config函数中。该函数应该调用位于公共目录中的html文件。这些文件不是通过express呈现给服务器端的,它们也不能读取ejs格式。

通常使用MEAN堆栈应用程序,您只需在用户登录时呈现您的索引文件,然后Angular路由器接管html文件并从那里处理您的路由。如果你不想要Angular路由,你必须设置你的index.js文件来渲染页面,因为它们是用res.render调用的('posts')

您可以将posts.ejs文件更改为html文件,并在用户导航到localhost /#/ posts时通过Angular调用它(具体取决于您的Angular版本和配置)。

您的Express服务器端路由将处理您在index.js中定义的API调用。为了调用这些API,您将通过Angular的$ http方法,通过服务或工厂发出GET或POST请求。

希望有帮助,如果没有,请告诉我,我可以详细说明或提供示例。

答案 1 :(得分:0)

为了解决这个问题,我使用了Eric Hartmanns解决方案。通过将posts.ejs更改为posts.html,并让角度路由器在客户端接管,页面正在呈现。但是,在地址栏中键入localhost:3000 / posts时,页面没有呈现,并且服务器因某种原因被命中。为了解决这个问题,我只需在快速和重新渲染的索引中创建一个新的get路由,只要这样的路由被击中:

router.get('/', function(req, res) {
 res.render('index');
});