移除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 form 验证函数 当前比较流行的错误提示
Jun 23 Javascript
extjs 学习笔记 四 带分页的grid
Oct 20 Javascript
jquery next nextAll nextUntil siblings的区别介绍
Oct 05 Javascript
Javascript的闭包详解
Dec 26 Javascript
有关JavaScript中call()和apply() 的一些理解
May 20 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
Dec 14 Javascript
jQuery插件FusionCharts绘制2D柱状图和折线图的组合图效果示例【附demo源码】
Apr 10 jQuery
微信小程序自定义键盘 内部虚拟支付
Dec 20 Javascript
利用vue-i18n实现多语言切换效果的方法
Jun 19 Javascript
在vue-cli 3中给stylus、sass样式传入共享的全局变量
Aug 12 Javascript
Vue 数组和对象更新,但是页面没有刷新的解决方式
Nov 09 Javascript
JQuery常用简单动画操作方法回顾与总结
Dec 07 jQuery
使用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
php中利用post传递字符串重定向的实现代码
2011/04/21 PHP
PHP中extract()函数的妙用分析
2012/07/11 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
2015/02/08 PHP
帝国cms目录结构分享
2015/07/06 PHP
PHP扩展Swoole实现实时异步任务队列示例
2019/04/13 PHP
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
AngularJS+Node.js实现在线聊天室
2015/08/28 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
2015/11/02 Javascript
jQuery图片左右滚动代码 有左右按钮实例
2016/06/20 Javascript
jquery  实现轮播图详解及实例代码
2016/10/12 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
2016/10/31 Javascript
NodeJS和BootStrap分页效果的实现代码
2016/11/07 NodeJs
AngularJS变量及过滤器Filter用法分析
2016/11/22 Javascript
获取当前按钮或者html的ID名称实例(推荐)
2017/06/23 Javascript
多页vue应用的单页面打包方法(内含打包模式的应用)
2020/06/11 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
Python抓取Discuz!用户名脚本代码
2013/12/30 Python
Python中Random和Math模块学习笔记
2015/05/18 Python
Python中使用插入排序算法的简单分析与代码示例
2016/05/04 Python
Python浅复制中对象生存周期实例分析
2018/04/02 Python
查看Django和flask版本的方法
2018/05/14 Python
解决pip install的时候报错timed out的问题
2018/06/12 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
2018/09/02 Python
python ftp 按目录结构上传下载的实现代码
2018/09/12 Python
python定时复制远程文件夹中所有文件
2019/04/30 Python
numpy库reshape用法详解
2020/04/19 Python
python实现AdaBoost算法的示例
2020/10/03 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
客服主管岗位职责
2013/12/13 职场文书
2014年前台接待工作总结
2014/12/05 职场文书
升学宴家长致辞
2015/07/27 职场文书
pytorch 如何使用amp进行混合精度训练
2021/05/24 Python