一、概念

单页面引用 (SPA), 被定义成一个目的在于提供一种接近桌面应用程序的流畅用户体验单web页面应用程序.

一旦页面被第一次加载后,不再会发生整个页面的更新,而是只会发生页面的局部更新,这样前后端的数据交互量会很小,用户体验会更好。

   在一个SPA中, 所有必需的代码(HTML, JavaScript, 以及 CSS ), 要不全部在初始页面中写好,要不在用户操作页面的过程中被动态加载。

开发单页面程序,因为只有一个总的html文件,会带来如下几个负面的问题:

1)总html文件的内容可能会比较多,一个文件的内容多了,就比较容易造成混乱,可读性和可维护性较差,管理和修改起来比较麻烦

2)在进行局部更新的时候,用户习惯希望页面的url也能发生变化,这样用户可以利用浏览器的前进和后退功能进行操作。

本文主要介绍如何在单页面情况下实现多视图的路由功能。

二、实现例子

在Angulajs中,实现机制是通过设置页面的 hash发生变化(可以通过链接 或 js代码),触发一个路由,然后动态去更新局部页面内容。

    <div  ng-app="myApp" ng-controller="myCtrl"><ul><li><a href="#/a">click a</a></li><li><a href="javascript:;" onclick="window.location.hash='#/b'">click b</a></li></ul><ng-view></ng-view></div>

上面的html代码,希望实现的是当用户点击链接时,能从服务器或本地获取新的内容更新到 <ng-view> 标签对应的区域下。

为了实现上述目的,需要编写如下的Js代码:

angular.module("myApp",["ngRoute"]);angular.module("myApp").controller("myCtrl",function(){});angular.module("myApp").config(function($routeProvider) {$routeProvider.when('/a', {templateUrl: 'a.html',controller: 'aController'}).when('/b', {template: '<h1> i am b</h1>',controller: 'bController'}).otherwise({redirectTo: '/a'});});

最关键的就是上面最后一段代码。它定义了当浏览器的url的hash部分发生变化后,会自动触发局部内容的加载(templateUrl表示从服务器加载,template表示从本地加载). 也可以根据需要为所加载的内容配置 controller。

三、存在的问题

利用angulajs,一个页面只能允许有一个 ng-view, 对于复杂的页面设计,可能有些问题。

一个可能的解决方案是,不设置模板内容,而是在该路由的 controller中,进行页面的复杂操作。

单页面应用的路由问题相关推荐

  1. SPA(单页面应用)、路由模式

    SPA SPA ( single page App ) 单页面应用 多页面应用 有多个html文件,通过a标签的连接联通各个页面 缺点 开发起来太冗余,编译.压缩很耗时间 页面之间的跳转速度太慢,这个 ...

  2. 你知道前端单页面路由是怎么实现的吗?

    首先要学习一下history对象,history对象保存着用户的上网记录,从浏览器窗口打开的那一刻算起.出于安全的考虑,开发人员无法得知用户浏览过的URL.不过,借由用户访问过的页面列表,同样可以在不 ...

  3. nignx部署Vue单页面刷新路由404问题解决

    nignx部署Vue单页面刷新路由404问题解决 参考文章: (1)nignx部署Vue单页面刷新路由404问题解决 (2)https://www.cnblogs.com/wuchenggong/p/ ...

  4. Angular——单页面与路由的使用

    单页面 SPA(Single Page Application)指的是通单一页面展示所有功能,通过Ajax动态获取数据然后进行实时渲染,结合CSS3动画模仿原生App交互,然后再进行打包(使用工具把W ...

  5. vue 扫码页面限制区域_Vue.js 单页面多路由区域操作的实例详解

    单页面多路由区域操作 在一个页面中有两个及以上的区域,需要通过设置路由的index.js,来操作这些区域的内容 app.vue 中设置: index.js中设置: import vue from 'v ...

  6. Vue入坑——vue-router单页面多路由配置

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇:vue-router如何传递参数 一起学vue--vue学习总路线 ----------^~^我是萌萌哒分割线^~^- ...

  7. mysql的请求分发,基于 gorilla/mux 实现路由匹配和请求分发:服务单页面应用

    基于 gorilla/mux 实现路由匹配和请求分发:服务单页面应用 由 学院君 创建于1年前, 最后更新于 1年前 版本号 #1 1279 views 0 likes 0 collects 随着前后 ...

  8. Vue-router路由使用,单页面的实现

    1.安装路由系统 NPM npm install vue-router 2.在main.js中进入引用 import VueRouter from 'vue-router' 3.创建三个空的组件: V ...

  9. 单页面应用(SPA)前端路由hash 模式 VS history 模式

    文章目录 单页面应用(SPA) 前端路由的由来 前端路由 hash 模式 history 模式 hash.history优缺点 单页面应用(SPA) 简单的说 SPA 就是一个WEB项目只有一个 HT ...

  10. 单页面应用的前端路由原理是什么?

    前置知识 在了解单页面应用的前端路由原理之前,我们先了解下什么事单页面应用,什么是多页面应用,他们之间的区别又是什么? 什么是单页面应用? 单页面应用指的是第一次进入页面的时候会请求一个html文件, ...

最新文章

  1. elasticsearch实现按天翻滚索引
  2. Apache中Virtual Host虚拟主机配置及rewrite参数说明
  3. java 热补丁_Android热补丁之AndFix原理解析
  4. mysql使用索引扫描做排序_「Mysql索引原理(八)」使用索引扫描做排序
  5. 解决VS2017运行时控制台一闪即逝问题的方法
  6. [js] fetch和axios请求的原理都是基于XMLHttpRerequst吗?
  7. c 程序设计语言第1 3部分,《C程序设计语言(第2版新版)典藏版》 —1.3 for语句...
  8. SPA单页面应用、前后端分离项目SEO优化的方法
  9. 链表插入排序和冒泡排序c语言
  10. 报表系统软件有哪些_报表系统软件功能
  11. 本地组策略编辑器计算机配置,如何打开本地组策略编辑器_打开组策略编辑器方法-win7之家...
  12. Python | OpenCV简单生成调色板
  13. 新版标准日本语高级_第12课
  14. Python 鸡兔同笼
  15. redirect_uri 参数错误 公众号H5授权登录原理
  16. 最新帝国CMS花生小说系统源码+花生日记引流导航模板+带采集工具
  17. java月份简写_Java如何以(MMM)格式显示一个月份的名称?
  18. 【图文详解】一文全面彻底搞懂HBase、LevelDB、RocksDB等NoSQL背后的存储原理:LSM-tree 日志结构合并树...
  19. vue3 el-table结合seamless-scroll实现表格数据滚动
  20. 强制IE使用兼容模式

热门文章

  1. python查看系统句柄数量_查看Linux某个进程打开的文件句柄(file descriptor)数量...
  2. c语言答案纪纲,重庆理工大学C语言程序设计基础教程习题答案(纪纲金艳).doc
  3. php使用循环语句输出二位数组,PHP中遍历二维数组—以不同形式的输出操作
  4. cdh用户权限_CDH6.3.2之Sentry权限管理(三)
  5. 判断整数_2021暑期强化不定方程整数解问题
  6. springboot 多线程_从零开始到架构,800页Java+并发+容器+多线程+高并发+Spring+SpringBoot源码...
  7. 多个pdf合并成一个pdf_多个PDF怎么合并?这些PDF合并方法很简单!
  8. python做自动化控制postman_Python自动化学习笔记(1)认识接口测试以及postman、Charles工具简单应用...
  9. 常用排序算法的python实现
  10. .NET 框架中的字符串