如何区分路由 API Sails js 和 Angularjs
How to separate between routing API Sails js and Angularjs
我在 linux 环境中使用 node js (Sails) 作为后端,angularJs 作为前端,生产模式使用 nginx。我想删除 url 中的哈希 (#!)。
我按照这个教程
现在我的网站在没有哈希 (#!) 的情况下正常工作,只要我不刷新,但当我刷新时,它从后端调用我的 API 或 404 未找到。我按照那些教程把
<base href="/"/>
在我的 layout.ejs 上,但它仍然无法正常工作。
这是我使用 state
路由 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 的资源,因此 returns 404。要处理此问题,您必须让您的后端能够以通用方式处理所有这些 URL。
您可以根据您的要求以不同的方式在您的后端处理这些请求。几个选项是:
- 刷新时,注销用户。
- 刷新时,重定向到基础 URL。
我在 linux 环境中使用 node js (Sails) 作为后端,angularJs 作为前端,生产模式使用 nginx。我想删除 url 中的哈希 (#!)。 我按照这个教程
现在我的网站在没有哈希 (#!) 的情况下正常工作,只要我不刷新,但当我刷新时,它从后端调用我的 API 或 404 未找到。我按照那些教程把
<base href="/"/>
在我的 layout.ejs 上,但它仍然无法正常工作。
这是我使用 state
路由 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 的资源,因此 returns 404。要处理此问题,您必须让您的后端能够以通用方式处理所有这些 URL。
您可以根据您的要求以不同的方式在您的后端处理这些请求。几个选项是:
- 刷新时,注销用户。
- 刷新时,重定向到基础 URL。