javascript - 如何区分路由 API Sails js 和 Angularjs

标签 javascript angularjs sails.js

<分区>

我在 linux 环境中使用 node js (Sails) 作为后端,使用 angularJs 作为前端,在生产模式使用 nginx 来构建独立的 web。我想删除我的网址中的哈希 (#!)。 我按照这个教程

  1. AngularJS: How to remove #!/ (bang prefix) from URL?
  2. https://www.youtube.com/watch?v=XsRugDQaGOo

现在,只要我不刷新,我的网站就可以正常工作,每个页面都没有哈希 (#!),但是当我刷新时,它会从后端调用我的 API 或 404 not found。我按照那些教程来放置

<base href="/"/>

在我的 layout.ejs 上,但它仍然不起作用。

这是我使用状态路由 angularjs 的示例代码

(function() {
  'use strict';

  angular
  .module('buyer.routes', ['ui.router'])
  .config(function($locationProvider, $urlMatcherFactoryProvider, $urlRouterProvider, $stateProvider){
    $urlRouterProvider.otherwise("/");
    $urlMatcherFactoryProvider.caseInsensitive(true);
    $stateProvider
    .state('home', {
      url: '/',
      templateUrl: 'templates/buyer/buyer-index.html',
      controller: 'BuyerController',
      controllerAs: 'vm'
    })

    .state('home.testi', {
      url: 'testimoni',
      templateUrl: 'templates/buyer/buyer-testimoni.html',
      controller: 'BuyerTestimoniController',
      controllerAs: 'vm',
      data : { pageTitle: 'Testimoni page'}
    })

    $locationProvider.hashPrefix('');
    $locationProvider.html5Mode(true);

  })

}());

我的代码有什么问题? 谢谢

最佳答案

你的代码没有问题,但是你需要理解这个概念。 Angular SPA 应用程序根据您正在访问的组件更改 URL。这与后端无关。在这种情况下,不会向后端发送任何请求。

但是,当你刷新浏览器时,请求被发送到后端,后端没有找到任何匹配这个 URL 的资源,因此返回 404。要处理这个,你必须让你的后端能够处理所有这些 URL 都是通用的。

您可以根据需要在后端以不同方式处理这些请求。几个选项是:

  1. 刷新时,注销用户。
  2. 刷新时,重定向到基本 URL。

关于javascript - 如何区分路由 API Sails js 和 Angularjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50284227/

相关文章:

javascript - Angular Js 中的自动填充表单

angularjs - 使用 Jasmine 对 angular 1.x 组件进行单元测试(使用 Typescript、Webpack)

node.js - sails 中的 disk.db 在哪里?

javascript - 等待回调完成对性能有何影响?

javascript - 自定义 Javascript 在初始页面加载时未加载到 mvc 4 View 中

javascript - 调整文本区域的事件大小?

node.js - 通过 Waterline 将新 Document 添加到 Json 字段类型中

javascript - 提取当前 DOM 并将其打印为字符串,样式保持不变

javascript - Angular 2 类型错误 : Cannot read property 'animate' of null

mysql - 找不到这个 MySQL 事件语法有什么问题