我目前的设置如下: 如何使用快递呈现模板?
启动服务器,并打算为localhost带我到home.ejs这里陈述(在我的前端路由):
然而,当我去本地主机:3000 /职位,帖子模板是事实上没有被注入到我的索引文件(我的UI视图是)。我一直在跟随思想家的平均堆栈指南,但一直在做一些改变(不使用内联模板)
我的问题是,我如何设置我的路由,使本地主机:3000 /职位将实际带我到帖子页面?
我目前的设置如下: 如何使用快递呈现模板?
启动服务器,并打算为localhost带我到home.ejs这里陈述(在我的前端路由):
然而,当我去本地主机:3000 /职位,帖子模板是事实上没有被注入到我的索引文件(我的UI视图是)。我一直在跟随思想家的平均堆栈指南,但一直在做一些改变(不使用内联模板)
我的问题是,我如何设置我的路由,使本地主机:3000 /职位将实际带我到帖子页面?
您正在处理两种类型的路由,客户端和服务器端。客户端位于您的角码中的app.config函数中。该函数应该调用位于公共目录中的html文件。这些文件不是通过快递呈现在服务器端,而且也不能读取ejs格式。
通常,使用MEAN堆栈应用程序时,您只需在用户登录时呈现索引文件,然后从那里使用Angular路由器接管html文件,并从那里处理您的路由。如果你不想Angular路由,你必须设置你的index.js文件来渲染页面,因为它们被称为res.render('posts')
你可以改变你的posts.ejs文件到一个html文件,只要用户导航到本地主机/#/帖子(取决于您的版本和Angular配置),就可以通过Angular调用它。
您的Express服务器端路由将按照您在index.js中定义的方式处理您的API调用。为了调用这些API,您将通过服务或工厂通过Angular的$ http方法发出GET或POST请求。
希望帮助,如果没有,让我知道,我可以详细说明或提供示例。
为了解决这个问题,我使用了Eric Hartmanns解决方案。通过将posts.ejs更改为posts.html,并让角路由器接管客户端,页面正在呈现。但是,在地址栏中输入localhost:3000/posts时,页面不会呈现,并且由于某种原因导致服务器被击中。为了解决这个问题,我简单地在快递和重新呈现的索引中创建了一条新的获取路线,只要该路线如下所示:
router.get('/', function(req, res) {
res.render('index');
});
这就是我一直在寻找的,因为这么久!服务器端和客户端路由之间差异的深入解释。现在,我真的明白了它的不同之处,我会试试它,然后我会回顾一下它的发展方向。谢谢! –
我改变了我的路由器看起来像这样http://puu.sh/j6lJZ/10fb3917e4.png 并将文件更名为posts.html,但即时通讯仍然收到此错误: http://puu.sh/j6lFW/ 0e6d9fa217.png –
接收到错误时你在做什么?你的索引页面渲染是否正常?您应该能够导航到localhost /#/ posts并且角路由应该接管,您可能需要将该html文件移动到前端可以看到的文件夹中。你还应该确保你的app.js文件中有这样的行app.use(express.static(__ dirname +'/ public')); –