我正在使用Express& amp建立一个多页面应用程序。角。我已经设置了我的文件夹结构:
project
|- server.js (The webserver)
|- routes.js (The routes to serve the html pages)
| |- node_modules
| |- config
| |- controllers (The routes for the API)
| |- models (The SQL models - Sequelizer
| |- client
| |- client.js (AngularJS main module)
| |- pages (Splitting the pages into Angular SPA)
| |- pageFolder (One for each page)
| |- page.html (The template for this SPA)
| |- page.js (The AngularJS controller)
| |- views (The views for the page)
我做了大量研究,这似乎是一种非常舒适的方法来构建一切。我的代码的API部分就像魅力一样,客户端的AngularJS模块也是如此。我正在努力将这两者联系起来。
在我的routes.js
文件中,我提供了已请求的特定页面的索引文件 - 例如:
var express = require("express");
var router = express.Router();
router.get("/", function(request, response){
response.sendFile("home.html",{
root: "client/pages/home"
});
});
router.get("/otherPage", function(request, response){
response.sendFile("otherPage.html",{
root: "client/pages/otherPage"
});
});
module.exports = router;
这是完美的文件,直到我开始尝试将AngularJS模块集成到页面中。我已经为/resources
文件夹设置了node_modules
静态路由,这使我可以在每个页面中包含AngularJS和其他库。但是,AngularJS控制器放在每个页面文件夹中,而不是放在集中文件夹controllers
中,当我尝试包含这样的控制器时,例如:
<script src="home.js"></script>
服务器正在处理http://website.com/home.js
请求,我可以理解,但我不确定如何允许页面在其文件夹中包含文件?
任何建议都将不胜感激:)
答案 0 :(得分:1)
你可以试试这个:
app.use(express.static('folder1'));
app.use('/folder2', express.static('folder2'));
router.get("/otherPage", function(request, response){
response.sendFile(__dirname + "/otherPage.html");
});
这样,website.com/folder2将提供来自folder2的文件,您可以通过website.com/folder2/file获取它们,当您访问website.com/otherPage时,它会为您提供/otherPage.html和那样的东西。