【问题标题】:How do frameworks such as AngularJS route requestsAngularJS 等框架如何路由请求
【发布时间】:2017-07-20 03:28:44
【问题描述】:

许多 Web 框架(例如 AngularJS)支持“路由”,用户可以访问该网站,并根据他们的请求 URL 向他们显示一个模板。但是这些框架完全是前端JS,只是简单的'script src'导入,那么它是如何设法捕获所有对网站的请求,然后重定向到一个js文件进行处理等等。

感谢任何回应,因为我一直在尝试弄清楚这些框架究竟如何执行路由的“捕获”部分,但没有运气。

【问题讨论】:

  • 您是否在问,一旦后端提供了文件,框架内部究竟如何处理路由?或者后端如何“控制”前端?例如,当开发一个 spa 并在 node.js 中提供文件时,所有路由都可以通过以下方式处理:app.get('/*', function (req, res) { res.sendFile(path.join(__dirname, './build', 'index.html')); }); 这是你的意思吗?

标签: javascript angularjs routing routes


【解决方案1】:

让我给你一个简单的模型。

我们可以获取当前的 URL。然后我们可以打破这个字符串,我们可以得到不同的部分,用'/'分隔,我们可以根据它来设置要显示哪个页面和数据的条件。当我们决定可以使用 ajax 加载我们想要的页面时。

例如,我当前的 url 是 https://www.example.com/module 我可以从这个 url 中获取“模块”,然后我可以在我的页面正文中加载

$('body').load('module.html');

以下代码来自我目前的工作。查看如何捕获不同的 url 并将其路由到我指定的文档。我还从 url 获取数据以用于我的 ajax 请求等。

app.config(function($routeProvider) {
    $routeProvider.when("/", {
        templateUrl : "home.html"
    }).when("/logout", {
        templateUrl : "logout.html"
    }).when("/course/:id", {
        templateUrl : "course.html"
    }).when("/course/:courseId/assignment/:assignmentId", {
        templateUrl : "assignment.html"
    });
});

【讨论】:

  • https://www.example.com/sub/dir/module 怎么样?这怎么打https://www.example.com/index.js,而不是https://www.example.com/sub/dir/index.js
  • 再次由我们自己决定如何为我们设计路由系统。在此类应用程序中,只有一个入口点。该入口点管理路由,无论您传递什么 url。
  • 检查已编辑的帖子,我有不同级别的 URL,但它们从根目录调用文件。
  • @AbdulAleemKhan 您仍然没有回答这个问题,因为您的代码的哪一部分意味着当用户访问网页时,它会运行“index.js”并且不会尝试运行名为“模块”的文件/目录。它如何覆盖默认行为。
  • 那是服务器@LuckyBowers 的一部分。这取决于服务器将如何处理其 url。要么它会进入一个目录,要么它会为它创建一个路由。如果您对 .htaccess 文件有任何想法,我们可以通过在其中输入一些规则将任何请求重定向到单个页面或其他任何地方。因此,如果服务器允许通过 url 打开目录,那么这就是特定服务器的编写方式。在编写节点或角度路径时,我们手动指定行为。
猜你喜欢
  • 1970-01-01
  • 2012-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-21
  • 1970-01-01
  • 1970-01-01
  • 2020-06-11
相关资源
最近更新 更多