嗨,我正处于一个新项目的开始阶段。
我将在前端使用 yeomans 现代工作流程工具,Angular js 工作。
使用 express 用 node.js 编写的后端。我不想在服务器上创建任何 html,所有这些都将静态地提供给客户端,然后通过以 express 编写的 RESTful 服务访问,其中 angular js 应用程序的魔力将创建动态内容。该应用程序将是一页的。作为它的一页,需要有一个包罗万象的视图规则。
目前我有以下典型结构:
app.js
public < dir containing the static html, js, css etc.
index.html
scripts
styles
views
我发现大多数人呈现 html 服务器端,然后使用 angular 或任何框架来提供更多内容。人们通常在服务器上使用玉模板来提供内容,我认为没有必要这样做,因为所有内容都将是非常动态的。
Yeoman 的工作流程是如此简单和强大,我不想打扰它。由于许多原因,当您添加新路由时,yeoman 会将 js 引用添加到 index.html 的底部,由于模板是一种不同的语法,因此我不能为此使用 yeoman。
我也喜欢这种架构中关注点的分离。express 安装主要关注 RESTful 服务,无法控制演示文稿,然后 /public 文件夹服务于使用 express.static(PATH) 提供的演示文稿。
我可以愉快地使用 hashbangs 进行路由,但它对于 html5 pushstate 来说并不是那么简单。
我的问题是全部路由。我发现的问题是有效地重定向不在 /api 资源 url 下的所有流量。虽然不会中断被 index.html 替换的资产。
app.get(url('/person/lesson/:id'), api.getLesson);
app.all('*', routes.index);
我努力了:
routes.index = function(req,res){
res.sendfile('./public/dist/index.html');
};
routes.index = function(req,res){
res.redirect('/');
};