移除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中的Web worker多线程API研究
Dec 06 Javascript
javascript 动态创建表格
Jan 08 Javascript
jquery滚动特效集锦
Jun 03 Javascript
Js制作点击输入框时默认文字消失的效果
Sep 05 Javascript
基于jQuery实现选取月份插件附源码下载
Dec 28 Javascript
JavaScript实现图片轮播组件代码示例
Nov 22 Javascript
老生常谈js中的MVC
Jul 25 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
Oct 31 Javascript
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
Mar 08 Javascript
JS继承定义与使用方法简单示例
Feb 19 Javascript
适用于 Vue 的播放器组件Vue-Video-Player操作
Nov 16 Javascript
Vue中避免滥用this去读取data中数据
Mar 02 Vue.js
使用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
用 Composer构建自己的 PHP 框架之基础准备
2014/10/30 PHP
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
PHP输入输出流学习笔记
2015/05/12 PHP
PHP实现带重试功能的curl连接示例
2016/07/28 PHP
PHP面向对象学习之parent::关键字
2017/01/18 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
AJAX架构之Dojo篇
2007/04/10 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
js动态为代码着色显示行号
2013/05/29 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
javascript实现表格增删改操作实例详解
2015/05/15 Javascript
JS实现的另类手风琴效果网页内容切换代码
2015/09/08 Javascript
JS判断两个对象内容是否相等的方法示例
2017/04/10 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
微信小程序实现限制用户转发功能的实例代码
2020/02/22 Javascript
python3实现读取chrome浏览器cookie
2016/06/19 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
python生成器与迭代器详解
2019/01/01 Python
使用PyQt4 设置TextEdit背景的方法
2019/06/14 Python
python opencv minAreaRect 生成最小外接矩形的方法
2019/07/01 Python
Python使用matplotlib实现交换式图形显示功能示例
2019/09/06 Python
python 五子棋如何获得鼠标点击坐标
2019/11/04 Python
Python算法的时间复杂度和空间复杂度(实例解析)
2019/11/19 Python
Python将列表中的元素转化为数字并排序的示例
2019/12/25 Python
django使用F方法更新一个对象多个对象字段的实现
2020/03/28 Python
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
英国最大的在线时尚眼镜店:Eyewearbrands
2019/03/12 全球购物
商场活动策划方案
2014/01/24 职场文书
上课玩手机的检讨书
2014/10/01 职场文书
2014年信用社工作总结
2014/11/25 职场文书
职称评定个人总结
2015/03/05 职场文书
红歌会主持词
2015/07/02 职场文书
公司转让协议书
2016/03/19 职场文书
Java输出Hello World完美过程解析
2021/06/13 Java/Android
HTML页面点击按钮关闭页面的多种方式
2022/12/24 HTML / CSS