首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当一个新页面被请求时,如何通过Express (Node.js)使用AngularJS路由?

当一个新页面被请求时,如何通过Express (Node.js)使用AngularJS路由?
EN

Stack Overflow用户
提问于 2012-11-05 03:52:31
回答 1查看 51.1K关注 0票数 53

我使用的是Express,它从静态目录加载AngularJS。通常,我会请求http://localhost/,在其中Express为我提供我的index.html和所有正确的Angular文件,等等。在我的Angular应用程序中,我设置了这些路由,它们替换了ng-view中的内容

代码语言:javascript
复制
$routeProvider.when('/', {
    templateUrl: '/partials/main.html',
    controller: MainCtrl,
});

$routeProvider.when('/project/:projectId', {
    templateUrl: '/partials/project.html',
    controller: ProjectCtrl,
});

$locationProvider.html5Mode(true);

在我的主页上,我有一个指向<a href="/project/{{project.id}}">的链接,它将成功加载模板并将我定向到http://localhost/project/3或我指定的任何ID。问题是,当我尝试将浏览器指向http://localhost/project/3或刷新页面时,请求将发送到Express/Node服务器,它将返回Cannot GET /project/3

我如何设置我的快速路线以适应这种情况?我猜这将需要在Angular中使用$location (尽管我更愿意避免他们使用的丑陋的?搜索和#hashes ),但我不知道如何设置快速路由来处理这一问题。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-11-05 13:06:30

我想我应该澄清一下,我对使用模板引擎不感兴趣,但是有了Angular拉取所有的HTML部分,Node在这里完全作为一个静态服务器工作(但它不是JSON API的。Brian Ford在这里展示了如何使用Jade做到这一点:http://briantford.com/blog/angular-express.html

我的应用程序是一个单页面应用程序,所以我为每个可能的URL模式创建了一个Express路由,每个模式都做同样的事情。

代码语言:javascript
复制
fs.readFile(__dirname + '/public/index.html', 'utf8', function(err, content) {
    res.send(content);
});

我假设我必须将一些请求变量传递给Angular,但看起来Angular会自动处理它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13222252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档