当前位置: 首页 > 面试题库 >

请求新页面时如何在Express(Node.js)中使用AngularJS路由?

姜增
2023-03-14
问题内容

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

$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

我该如何设置我的Express路线来适应这一点?我猜想它将需要$location在Angular中使用(尽管我宁愿避免使用丑陋的?search和#hash),但是对于如何设置Express路由来处理此问题我一无所知。

谢谢。


问题答案:

我将创建一个包罗万象的处理程序,该处理程序 发送必要数据的常规路由 之后 运行。

app = express();
// your normal configuration like `app.use(express.bodyParser());` here
// ...
app.use(app.router);
app.use(function(req, res) {
  // Use res.sendfile, as it streams instead of reading the file into memory.
  res.sendfile(__dirname + '/public/index.html');
});

app.router是运行您所有Express路由(例如app.getapp.post)的中间件;通常,Express会自动将其自动放置在中间件链的最末端,但您也可以像在此所做的那样将其显式添加到中间件链中。

然后,如果URL不是由处理的app.router,则最后一个中间件将把Angular HTML视图发送给客户端。对于其他中间件未处理的 任何
URL,都会发生这种情况,因此您的Angular应用将必须正确处理无效路由。



 类似资料:
  • 问题内容: 我们制作了一个AngularJS应用,其中用户打开一个URL(xyz.com/booking)填写表格,然后选择一些要购买的物品。 之后,该用户单击“购买”按钮,并离开该站点进入支付网关站点。成功付款后,Payment Gateway会通过在回调URL(xyz.com/booking- success)上发送POST请求来发回用户。 现在的问题是,我为该回调URL配置的相应Angula

  • 这里有什么问题? 另外,我是否可以不使用而直接获取原始请求?

  • 问题内容: 我想从一个URL请求重定向到另一个“ POST”请求,如下所示: 但是,我无法重定向到“ / test”页面,因为它是POST请求。 那么,在保持“ / test”请求POST的情况下,如何使重定向工作呢? 问题答案: 你可以这样做: 它将保留send方法。 供参考,307 http代码规范为: 307临时重定向(自HTTP / 1.1起)在这种情况下,应使用另一个URI重复请求,但是

  • 问题内容: 如何在Node.js或Express.js中发出HTTP请求?我需要连接到另一个服务。我希望该调用是异步的,并且该回调包含远程服务器的响应。 问题答案: 这是我的示例中的一些代码片段。它是异步的,并返回JSON对象。它可以执行任何形式的GET请求。 请注意,还有更多的最佳方法(仅作为示例)-例如,与其将放入数组的块连接起来并进行连接等,不希望将它们串联在一起。希望,它可以使您朝正确的方

  • 问题内容: 我有以下Node.js代码: 现在,如果我发布类似的内容: 我得到了预期的结果。现在,如果我想获得完整的请求正文怎么办?我尝试这样做,但是Node.js抛出一个异常,说“ 第一个参数必须是字符串或Buffer ”,然后转到“无限循环”,并出现异常,指出“ 发送标头后不能设置标头 ”。即使我再写了也是这样。 这里有什么问题? 另外,我可以不使用而直接获得原始请求吗? 问题答案: Expr

  • 问题内容: 我正在使用express + node.js,并且我有一个req对象,浏览器中的请求是/ account,但是当我登录req.path时,我得到的是’/’ —不是’/ account’。 req.path是/何时应该是/ account? 问题答案: 在自己玩了一点之后,您应该使用: