移除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 相关文章推荐
&amp;lt;script defer&amp;gt; defer 是什么意思
May 10 Javascript
使用jQuery轻松实现Ajax的实例代码
Aug 16 Javascript
浅谈javascript的原型继承
Jul 25 Javascript
JavaScript实现按照指定长度为数字前面补零输出的方法
Mar 19 Javascript
JavaScript基础教程——入门必看篇
May 20 Javascript
详解JavaScript节流函数中的Throttle
Jul 16 Javascript
Bootstrap精简教程中秋大放送
Sep 15 Javascript
深入理解ES6学习笔记之块级作用域绑定
Aug 19 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
Sep 20 Javascript
微信小程序实现图片懒加载的示例代码
Dec 13 Javascript
jQuery each和js forEach用法比较
Feb 27 jQuery
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
May 18 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
模拟OICQ的实现思路和核心程序(二)
2006/10/09 PHP
深入浅析yii2-gii自定义模板的方法
2016/04/26 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
学习JS面向对象成果 借国庆发布个最新作品与大家交流
2009/10/03 Javascript
深入理解JavaScript系列(6) 强大的原型和原型链
2012/01/15 Javascript
js 程序执行与顺序实现详解
2013/05/13 Javascript
js操作label给label赋值及取label的值示例
2013/11/07 Javascript
js 数组操作之pop,push,unshift,splice,shift
2014/01/29 Javascript
jQuery实现高亮显示的方法
2015/03/10 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
jQuery EasyUI Draggable拖动组件
2017/03/01 Javascript
在vue项目中引入highcharts图表的方法
2019/01/21 Javascript
基于Vue SEO的四种方案(小结)
2019/07/01 Javascript
微信小程序组件传值图示过程详解
2019/07/31 Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
2019/10/23 Javascript
基于JavaScript实现控制下拉列表
2020/05/08 Javascript
Python实现多线程下载文件的代码实例
2014/06/01 Python
python进程管理工具supervisor使用实例
2014/09/17 Python
解析Python编程中的包结构
2015/10/25 Python
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
django反向解析和正向解析的方式
2018/06/05 Python
如何用Python实现简单的Markdown转换器
2018/07/16 Python
python打开windows应用程序的实例
2019/06/28 Python
Python常用模块logging——日志输出功能(示例代码)
2019/11/20 Python
Python 使用threading+Queue实现线程池示例
2019/12/21 Python
英国领先的奢侈品零售商之一:CRUISE
2016/12/02 全球购物
采购主管岗位职责
2014/02/01 职场文书
小学二年级学生评语
2014/04/21 职场文书
小学校本培训方案
2014/06/06 职场文书
python实现简单石头剪刀布游戏
2021/10/24 Python
Python可视化学习之matplotlib内置单颜色
2022/02/24 Python
2021好看的国漫排行榜前十名 《完美世界》上榜,《元龙》排名第一
2022/03/18 国漫
python pygame 开发五子棋双人对弈
2022/05/02 Python