如何让 Express 路由与带有 HTML5 样式 URL 的 Angular 路由一起使用?

2023-12-28

我想制作一个带有 HTML5 样式 URL 的 AngularJS 应用程序(即没有#URL 中的片段)。因此,在我的 Angular 应用程序的路由控制器模块中,我有如下内容:

angular.module('app').config(['$routeProvider','$locationProvider',function($routeProvider,$locationProvider) {
    $locationProvider.html5Mode(true)
...
}

$routeProvider
.when('/1/:param', /* do something */)
.when('/2/:param', /* do something else */)
.when('/3/:param', /* do something else again*/);

许多工作示例,例如角趣 https://github.com/CaryLandholt/AngularFun不要使用 HTML5 模式。对于像这样的请求http://localhost:3005/#/1/foo,很明显

  • the http://localhost:3005/部分由服务器端处理/通过快递。 Express 很乐意为我们支持 Angular 的服务提供服务index.html
  • the /1/foo路由由 Angular 的路由器在客户端处理

Say our server.coffee作为标准,看起来像下面这样(我们提供静态dist包含我们编译的、缩小的 Angular 源代码的目录:

express = require 'express'
routes = require './routes'
dir = "#{__dirname}/dist"            # sources live here
port = process.env.PORT ? process.argv.splice(2)[0] ? 3005
app = express()

app.configure -> 
    app.use express.logger 'dev'
    app.use express.bodyParser()
    app.use express.methodOverride()
    app.use express.errorHandler()
    app.use express.static dir       # serve the dist directory
    app.use app.router
    routes app, dir                  # extra custom routes

如果我们确实使用 HTML5 模式,我们的 URLhttp://localhost:3005/#/1/foo变成http://localhost:3005/1/foo(不再有哈希#)。这次,整个 URL 被 Express 拦截,它会变得混乱,因为我们没有定义除/.

我们真正想说的是 URL 的后半部分(/1/foo)应该“委托”给 Angular 来处理。我们怎么说呢?


看起来它确实有效。然而,我自己并没有做这项工作。我依赖这个骨架项目:https://github.com/thanh-nguyen/angular-express-seed-coffee https://github.com/thanh-nguyen/angular-express-seed-coffee

这使您可以在一定程度上控制哪些路径由客户端处理,哪些路径由服务器处理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 Express 路由与带有 HTML5 样式 URL 的 Angular 路由一起使用? 的相关文章

  • Express 函数中的“res”和“req”参数是什么?

    在下面的 Express 函数中 app get user id function req res res send user req params id 什么是req and res 它们代表什么 意味着什么 有什么作用 Thanks r
  • 将 h2 标签嵌套在另一个带有 h1 标签的标头中在语义上是否错误?

    将 h2 标签嵌套在另一个标头 h1 标签内在语义上是否错误 h1 class fixed h2 class absolute Absolute Div h2 h1 语义错误 很大程度上是一个观点问题 语义 意味着 与意义相关 但这里的含义
  • 如何将多个画布元素放入一个画布元素中?

    我有多个由 JavaScript 创建的画布元素 我的问题是 如何将多个画布元素放入一个画布元素 干得好 JSfiddle http jsfiddle net Allendar UqxCY 它会抓取每个画布并将它们做成 PNG 的 访问缓冲
  • 单击行内的按钮时防止触发表行 onclick 事件

    我有一个带有 ONCLICK 事件的表行 切换下面的附加数据 在其中一个行单元格内有一个按钮 单击时执行 AJAX 操作 当我单击按钮时 行的 onclick 事件也会触发 并且会发生附加数据在 AJAX 调用完成之前出现 这对我来说是一个
  • jQuery.ajax 发送 OPTIONS 和 POST,如何使用 Express.js (Node.js) 处理

    每当我的应用程序向服务器发送 ajax 请求时 ajax url config api url 1 register type POST contentType application json data some JSON data he
  • 在 Chrome 扩展中使用页面的 Angular JS

    我有一个 HTML 页面 其中有一些使用 Angular 配置的 DOM 现在我正在构建一个 chrome 扩展来修改文本框中的值 element value newValue不起作用 因为文本框是用 Angular 设计的 在阅读了一些资
  • HTML5 音频暂停不起作用

    document getElementById s currentRadio currentSong pause 目前这并没有暂停音频 而播放它效果很好 document getElementById s currentRadio curr
  • Javascript:刷新父页面而不完全重新加载

    用户通过 fancybox javascript 弹出窗口登录后 我希望重新加载父页面 以便他们可以访问登录的功能 目前我正在这样做 a href class continue Continue a 这很好用 但唯一的问题是它完全重新加载整
  • 通过按 Enter 键提交表单而不使用提交按钮

    好吧 我试图通过按 Enter 键来提交表单 但不显示提交按钮 如果可能的话 我不想涉足 JavaScript 因为我希望一切都能在所有浏览器上运行 我知道的唯一 JS 方式是使用事件 现在的表格看起来像这样
  • 单击表格行可显示更多信息

    我正在尝试使用 jQuery 来实现以下目标 当单击一个表格行时 会显示表格行内的 info div 如果单击另一个表格行 则当前显示的任何其他 info 元素将被隐藏 并根据表格行显示新的 info div已被点击 这个问题是 代码无法正
  • 将 Regex 对象分配给 html 输入模式

    我需要以编程方式将正则表达式对象分配给输入元素模式属性 以下是我当前的实现 var regex d 5 element attr pattern regex toString slice 1 1 有没有更好的方法来做到这一点而不需要字符串操
  • 如何使用多个 select2 框过滤表格?

    我正在尝试使用 和多个 select2 框的类来过滤表格 表格 HTML table class table tbody tr class kanban event Austin td td tr tr class csm event Ch
  • 重新加载页面时删除哈希值?

    我使用哈希来切换我的图像滑块 当我重新加载页面并且哈希值设置为 e h 3 没有图片 当图库在几秒钟后自动滑动时 它显示下一个 所以几秒钟内什么也没有 有没有办法在加载页面时检查哈希并将其删除 我只想关心那些用散列为页面添加书签的人 问候
  • ngRepeat 中的指令时的绑定问题

    这就是它的样子 这是Plunker http plnkr co edit IPwDLT p preview parent scope ng repeat directive 在指令中 有一个属性与父作用域中的变量进行双向绑定 但这并没有像我
  • AngularJS + jQuery 移动

    是否还有其他可能性来设计AngularJS以移动友好的方式应用程序CSS 我正在计划一个移动应用程序 并希望使用 AngularJS 进行逻辑和数据绑定 但我不想自己设计所有内容CSS The AngularJSFAQ说它使用jQuery
  • 如何更改 HTML 文档的“实际编码”?

    我通过 W3C HTML 验证器运行我的网页并收到此错误 编码ascii不是字符的首选名称 使用中的编码 首选名称是 us ascii Charmod C024 第 5 行 第 70 列 内部编码声明 utf 8 不同意 文档的实际编码 u
  • 轮播滑动(未滑动)事件上的火灾事件,Bootstrap 3

    Bootstrap 2 似乎可以很好地处理幻灯片事件 请参阅这个问题 https stackoverflow com questions 9651466 how to attach slide slid events to the boot
  • 使用flex-basis控制行上显示的项目数

    我想在使用 Flex 时将元素推出以隐藏它们 例如 如果flex basis为 50 仅显示两个项目弯曲到给定空间 而其他元素则在overflow hidden 领土 Or if flex basis为 25 则仅显示 4 个 Flex 元
  • 我自己的而不是从其他网站借用的图像的正确 img src 是什么?

    在我的计算机上 保存 css 和 html 文件的文件夹还包含一些我想要插入到 html 中的图像 如果我从其他网站借用图像 我知道如何获取图像的 URL 如何获取文件夹中但尚未出现在互联网上的图像的 URL 我是否必须将图像上传到其他网站
  • 将 html 文本框的值分配给 div 的标题

    line 1

随机推荐