我刚才注意到,我们习惯使用的漫长而复杂的Facebook网址现在看起来像这样:
http://www.facebook.com/example.profile#!/pages/Another-Page/123456789012345
据我所知,今年早些时候它只是一个普通的URL片段式字符串(以...开头#),没有感叹号.但现在它是一个shebang或hashbang(#!),我以前只在shell脚本和Perl脚本中看到过.
在新的Twitter的网址,现在还采用了#!符号.例如,Twitter个人资料网址现在看起来像这样:
http://twitter.com/#!/BoltClock
#!现在是否在URL中起了一些特殊的作用,比如某个Ajax框架或某些东西,因为新的Facebook和Twitter界面现在基本上是Ajax化的?在我的URL中使用它会以任何方式使我的Web应用程序受益吗?
最近我注意到ngRoute在AngularJS应用程序中使用模块时,路由包含#!在URL中,之前就是#.
例如,www.webiste.com/#/login成为www.website.com/#!/login
我必须启用html5Mode并禁用requireBase使用代码整体删除基础,
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
Run Code Online (Sandbox Code Playgroud)
并且URL更改www.website.com/login工作正常,但具有误导性,而不是Angular SPA URL的样子.
如果我没有启用html5Mode,则URL被编码,我无法解决它.所以www.website.com/#/login变成www.website.com/#!/#%2Flogin(注意后者/被编码为%2F).
这是开发人员针对某些特定目的实施的更改吗?它有什么不同?我需要对应用程序进行哪些更改才能使其正常运行?难道我做错了什么?
javascript angularjs single-page-application ngroute angularjs-ng-route
这是我第一次使用ReactJS而不是我的项目,但我试图将任何不存在的路由重定向到我已经制作的404页面.当输入了不匹配的路由任何URL是我的404页,目前显示为预期除了从URL包含/#/.
例如,此网址将重定向到我的404页面:
http://localhost:8080/non-existent-url
但是这个URL只会加载我应用的默认路由(主页):
http://localhost:8080/#/non-existent-url
我不知道/#/它的用途是什么,看起来该应用程序将显示包含或不包含有效路线的页面.
剥离路线文件:
import React from "react";
import { Router, Route, IndexRoute, browserHistory, hashHistory, Redirect } from "react-router/es";
import willTransitionTo from "./routerTransition";
import App from "./App";
import DashboardContainer from "./components/Dashboard/DashboardContainer";
import DashboardAccountsOnly from "./components/Dashboard/DashboardAccountsOnly";
import NotFound from './components/NotFound';
const history = __HASH_HISTORY__ ? hashHistory : browserHistory;
class Auth extends React.Component {
render() {return null; }
}
const routes = (
<Route path="/" component={App} onEnter={willTransitionTo}>
<IndexRoute component={DashboardContainer}/>
<Route path="/auth/:data" component={Auth}/>
<Route …Run Code Online (Sandbox Code Playgroud) 有人知道"#!" 手段.在网址上?
我一直工作直到那时出现,我的网址中总是有一个"#",并希望保持这种状态.目前路由不再工作,可能是因为这个网址更改.
它是商业项目的一部分,我不想改为html5Mode.
我试着用:
$locationProvider.hashPrefix("");
Run Code Online (Sandbox Code Playgroud)
即使以这种方式纠正URL,路由也存在问题
我很清楚在AJAX驱动的网页上使用URL片段跟踪状态的技术,但最近我注意到很多网站正在做类似但没有片段的事情.
例如,最新版本的Facebook中的图片浏览器以这种方式运行.左侧和右侧导航按钮是没有片段的简单链接,单击这些片段会更改浏览器URL而不执行整页加载.
另一个例子是GitHub的存储库浏览器,每个文件/文件夹都是一个简单的链接,可以在不重新加载或使用页面片段的情况下更改页面状态和浏览器URL.
任何人都可以解释,或指出我如何工作的解释?我已经做了一些搜索,但是有很多关于使用片段的内容,我找不到任何东西.