【发布时间】:2015-04-11 10:17:20
【问题描述】:
所以我想设置一个基本的节点服务器来与我的客户端 Angular 应用程序一起工作。我的文件夹结构如下所示:
.tmp //Contains css stylesheet
bower //Obviously contains bower packages
public //Contains client code
这就是我的index.html 的样子(至少是脚本/样式表)
<!-- bower:css -->
<link rel="stylesheet" href="bower/bootstrap/dist/css/bootstrap.css" />
<!-- endbower -->
<!-- inject:css -->
<link rel="stylesheet" href="/.tmp/styles.css">
<!-- endinject -->
<!-- bower:js -->
<script src="bower/jquery/dist/jquery.js"></script>
<script src="bower/angular/angular.js"></script>
<script src="bower/bootstrap/dist/js/bootstrap.js"></script>
<script src="bower/angular-route/angular-route.js"></script>
<script src="bower/angular-resource/angular-resource.js"></script>
<!-- endbower -->
<!-- inject:js -->
<script src="/public/app/modules/sportStore.module.js"></script>
<script src="/public/app/controllers/checkout.controller.js"></script>
<script src="/public/app/controllers/productList.controller.js"></script>
<script src="/public/app/controllers/sportsStore.controller.js"></script>
<script src="/public/app/filters/customFilters.js"></script>
<script src="/public/app/components/cart/cart.js"></script>
<!-- endinject -->
这是我在 server.js 文件中的中间件配置:
app.use(logger()); //require('morgan')
app.use(express.static('./'));
app.use(express.static('./public/'));
app.use(express.static('./tmp/'));
app.use('/*', express.static('./public/index.html'));
我的理解是:对于每个请求:
- 记录下来
- 看看能不能在./下找到文件请求
- 如果不存在,请在 ./public/ 下查找
- 如果不存在,请查看 ./tmp/
- 如果它不存在并且请求在“/”之后包含某些内容,则服务 index.html
我将如何处理客户端路由(使用 Angular 的 $routeProvider)我还不清楚,也许我什至不需要这样做,我不确定这些请求是否会发送到服务器。
但是,这样做会导致无限循环,老实说,我不知道为什么。我以为我了解中间件,但显然我的逻辑有问题,或者这会起作用。
所以基本上我的两个问题是:
- 是我总结的express'中间件的工作原理吗?
- 如果不是,也许您可以推动我朝着正确的方向前进?
不要只是指着我表达'文档,我已经阅读了大约 5 次,但我发现文档解释得不够清楚。
【问题讨论】:
标签: javascript node.js express middleware