移除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 相关文章推荐
JavaScript 利用StringBuffer类提升+=拼接字符串效率
Nov 24 Javascript
当达到输入长度时表单自动切换焦点
Apr 06 Javascript
node.js中的fs.statSync方法使用说明
Dec 16 Javascript
删除javascript所创建子节点的方法
May 21 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
Sep 21 Javascript
简单理解JavaScript中的封装与继承特性
Mar 19 Javascript
文件上传插件SWFUpload的使用指南
Nov 29 Javascript
JS实现提交表单前的数字及邮箱校检功能
Nov 13 Javascript
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
Apr 26 jQuery
深入分析element ScrollBar滚动组件源码
Jan 22 Javascript
微信小程序云开发实现数据添加、查询和分页
May 17 Javascript
JS实现普通轮播图特效
Jan 01 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
基于jQueryUI和Corethink实现百度的搜索提示功能
2016/11/09 PHP
php安装dblib扩展,连接mssql的具体步骤
2017/03/02 PHP
jQuery响应enter键的实现思路
2014/04/18 Javascript
javascript 动态创建表格的2种方法总结
2015/03/04 Javascript
jquery操作select元素和option的实例代码
2016/02/03 Javascript
JavaScript数组实现数据结构中的队列与堆栈
2016/05/26 Javascript
jquery 获取select数组与name数组长度的实现代码
2016/06/20 Javascript
JavaScript获取css行间样式,内连样式和外链样式的简单方法
2016/07/18 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
vue.js实现仿原生ios时间选择组件实例代码
2016/12/21 Javascript
Bootstarp 基础教程之表单部分实例代码
2017/02/03 Javascript
Angular.JS实现无限级的联动菜单(使用demo)
2017/02/08 Javascript
angularjs中的$eval方法详解
2017/04/24 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
2017/10/12 Javascript
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
jQuery实现左右滑动的toggle方法
2018/03/03 jQuery
Vue Element 分组+多选+可搜索Select选择器实现示例
2018/07/23 Javascript
JS实现导航栏楼层特效
2020/01/01 Javascript
Python3基础之list列表实例解析
2014/08/13 Python
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
python如何实现内容写在图片上
2018/03/23 Python
Python封装原理与实现方法详解
2018/08/28 Python
浅谈django rest jwt vue 跨域问题
2018/10/26 Python
Python 从相对路径下import的方法
2018/12/04 Python
python SQLAlchemy 中的Engine详解
2019/07/04 Python
python操作docx写入内容,并控制文本的字体颜色
2020/02/13 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
2020/03/12 Python
python3字符串输出常见面试题总结
2020/12/01 Python
html5响应式开发自动计算fontSize的方法
2020/01/13 HTML / CSS
英国女鞋购物网站:Moda in Pelle
2019/02/18 全球购物
建筑专业毕业生推荐信
2013/11/21 职场文书
简历中个人求职的自我评价模板
2013/11/29 职场文书
入党积极分子思想汇报
2014/01/02 职场文书
法院干警四风问题自我剖析材料
2014/09/29 职场文书
师德承诺书2015
2015/04/28 职场文书
Java中的随机数Random
2022/03/17 Java/Android