移除AngularJS下URL中的#字符的方法


Posted in Javascript onJune 19, 2015

AngularJS 默认将会使用一个 # 号来对URL进行路由.

例如:

    http://example.com/

    http://example.com/#/about

    http://example.com/#/contact

要获得干净的URL并将井号从URL中移除是很容易的.

完成两件事情就行了.

  1.     配置 $locationProvider
  2.     设置我们的相对连接的起点路径

$location 服务

在Angular中, $location服务会解析地址栏中的URL,并对你的应用程序作出改变,反之亦然.

我强烈推荐通读官方的 Angular $location 文档 以对$location 服务及其所提供的特性有一个了解.

$locationProvider 和 html5 模式(html5Mode)

我们会使用 $locationProvider 模块,并将html5Mode设置为true.

我们会在你定义Angular应用程序并配置你的路由时做这些.
 

angular.module('scotchy', [])
  
 .config(function($routeProvider, $locationProvider) {
 
  $routeProvider
   .when('/', {
    templateUrl : 'partials/home.html',
    controller : mainController
   })
   .when('/about', {
    templateUrl : 'partials/about.html',
    controller : mainController
   })
   .when('/contact', {
    templateUrl : 'partials/contact.html',
    controller : mainController
   });
  
  // use the HTML5 History API
  $locationProvider.html5Mode(true);
 });

什么是 HTML5 History API? 它是使用一个脚本来操作浏览器历史的标准方法. 有了它就能在不刷新页面的前提下让 Angular 改变路由和页面的URL. 更多的信息,这里有一篇蛮好的 HTML5 History API 文章.

为相对链接设置<base>

为了在应用程序各处使用相对链接,你将需要在你文档的<head>里面设置一个<set>.
 

<!doctype html>
<html>
<head>
 <meta charset="utf-8">
 
 <base href="/">
</head>

有大量的方法可以用来配置这个东西,而将HTML5Mode设置为true就会自动的解析相对链接了. 在我这儿这种方式总是能起效. 如果你应用程序的根同url相比有所不同,例如 /my-base, 那就用那个作为你的起点路径.

老浏览器的回调

$location服务对不支持HTML5浏览历史API的浏览器将自动回调hashbang方法。

一切的发生对你是透明的,你不需为此做任何配置。从Angular $location文档中,你可以看到回调的方法已经它是如何工作的。

移除AngularJS下URL中的#字符的方法
总结

这是一个在Angular应用中获得漂亮URL并删除哈希标记的简单方法。享受超洁净、超快速的Angular应用吧!

Javascript 相关文章推荐
js右键菜单效果代码
Jul 21 Javascript
JSQL  一个 web DB 的封装
May 05 Javascript
js两行代码按指定格式输出日期时间
Oct 21 Javascript
上传的js验证(图片/文件的扩展名)
Apr 25 Javascript
JavaScript解析json格式数据简单示例
Dec 09 Javascript
如何用javascript计算文本框还能输入多少个字符
Jul 29 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
Dec 13 Javascript
探讨JavaScript语句的执行过程
Jan 28 Javascript
Vue2 SSR渲染根据不同页面修改 meta
Nov 20 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
Dec 29 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
Apr 16 Javascript
ant design vue导航菜单与路由配置操作
Oct 28 Javascript
使用AngularJS创建单页应用的编程指引
Jun 19 #Javascript
使用AngularJS实现可伸缩的页面切换的方法
Jun 19 #Javascript
使用AngularJS实现表单向导的方法
Jun 19 #Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
Jun 19 #Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
Jun 19 #Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
Jun 19 #Javascript
使用ngView配合AngularJS应用实现动画效果的方法
Jun 19 #Javascript
You might like
Content-type 的说明
2006/10/09 PHP
PHP树的代码,可以嵌套任意层
2006/10/09 PHP
php设计模式 Visitor 访问者模式
2011/06/28 PHP
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
2013/01/23 Javascript
Jquery封装tab自动切换效果的具体实现
2013/07/13 Javascript
js中的数组Array定义与sort方法使用示例
2013/08/29 Javascript
jQuery事件绑定用法详解(附bind和live的区别)
2016/01/19 Javascript
JS打印组合功能
2016/08/04 Javascript
Angular2安装angular-cli
2017/05/21 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
解决JSON.stringify()自动将中文转译成unicode的问题
2018/01/05 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
2018/10/09 Javascript
vue文件运行的方法教学
2019/02/12 Javascript
jQuery实现简单的Ajax调用功能示例
2019/02/15 jQuery
js canvas实现5张图片合成一张图片
2019/07/15 Javascript
JavaScript冒泡算法原理与实现方法深入理解
2020/06/04 Javascript
[07:25]DOTA2-DPC中国联赛2月5日Recap集锦
2021/03/11 DOTA
python解析基于xml格式的日志文件
2017/02/25 Python
Django开发中的日志输出的方法
2018/07/02 Python
老生常谈python中的重载
2018/11/11 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
TensorFlow实现简单的CNN的方法
2019/07/18 Python
django下创建多个app并设置urls方法
2020/08/02 Python
基于注解实现 SpringBoot 接口防刷的方法
2021/03/02 Python
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
2012/12/05 面试题
工程监理应届生求职信
2013/11/09 职场文书
京剧自荐信
2014/01/26 职场文书
学习自我鉴定
2014/02/01 职场文书
淘宝客服专员岗位职责
2014/04/11 职场文书
单位法人授权委托书范本
2014/10/09 职场文书
2015年教研组工作总结
2015/05/04 职场文书
换届选举主持词
2015/07/03 职场文书
JavaScript实现栈结构详细过程
2021/12/06 Javascript
vue选项卡切换的实现案例
2022/04/11 Vue.js