Vue系列(1):单页面应用程序

前言:关于页面上的知识点,如有侵权,请看 这里

关键词:SPA、单个 HTML 文件、全靠 JS 操作、Virtual DOM、hash/history api 路由跳转、ajax 响应、按需加载、MVVM

SPA



我们先来看一下在百科上面的解释吧,emmmm,一般呢,我每次搜索一些不懂的词,都会习惯先去看百科里面的解释,反正我从来都不奢望能看懂,只是指望有个大概的框架的,哈哈~

单页面应用(SPA:single-page application),就是只有一张Web页面的应用,是加载单个HTML页面并在用户与应用程序交互时动态更新该页面的web应用程序。” -- from 百度百科

单页应用(英语:single-page application,缩写 SPA)是一种网络应用程序或网站的模型,它通过动态重写当前页面来与用户交互,而非传统的从服务器重新加载整个新页面。这种方法避免了页面之间切换打断用户体验,使应用程序更像一个桌面应用程序。在单页应用中,所有必要的代码(HTML、JavaScript和CSS)都通过单个页面的加载而检索,或者根据需要(通常是为响应用户操作)动态装载适当的资源并添加到页面。尽管可以用位置散列或HTML5历史API来提供应用程序中单独逻辑页面的感知和导航能力,但页面在过程中的任何时间点都不会重新加载,也不会将控制转移到其他页面。与单页应用的交互通常涉及到与网页伺服器后端的动态通信。” -- from 维基百科

是不是云里雾里?

What:SPA是什么?



简单点~说话的方式简单点~

  • 整个 webapp 只有单个HTML文件,所有操作都在这张页面上完成,由 js 来按需加载 HTML、CSS 和 JS
  • 多个HTML页面文件的幻觉呢,都是通过 js 来操作 dom 节点来动态实现的(所以跳转到一个新页面实质上就是,删除本页面 dom 节点,新增新页面 dom 节点。从这里呢引出了一个虚拟 dom 的概念,这个以后会说到的)
  • 不同页面之间的跳转幻觉呢,也是通过 js 控制 hash 或者 history api(go、back) 来进行路由 (这就是一个更加明确前后端分离的卖点了)
  • 最后通过 ajax 拉取数据实现响应功能

特点:

  • 速度:更好的用户体验,让用户在 webapp 感受到 native app 的速度和流畅
  • MVVM:经典的 MVVM 开发模式,,前后端各负其责
  • ajax:业务逻辑全部都在本地操作,数据都需要通过 ajax 同步提交
  • 路由:在 URL 中采用 # 号来作为当前视图的地址(http://xxx.com/#/),改变 # 号后的参数来载入不同的页面片段。(页面并不会重载!)

优点:

  • 分离前后端关注点,前端负责界面显示,包括页面跳转逻辑;后端则只负责数据管理(存储和计算),各司其职,不会把前后端的逻辑混杂在一起。
  • 减轻服务器的压力,服务器只用出数据就可以,不用管展示逻辑和页面合成,吞吐能力提高好几倍。
  • 同一套后端程序代码/接口,可以多处复用,不仅是同一个应用不用修改就可以用于web界面、手机、平板等多种客户端,同时也可以复用在不同应用上。

缺点:

  • SEO问题:对 SEO 不友好,但是可以通过 Prerender 等技术解决一部分
  • 前进、后退、地址栏等,需要程序进行管理
  • 书签,需要程序来进行控制

Why:为什么要用SPA?



SPA 与 MPA 的对比:

单页应用程序(SPA) 多页应用程序(MPA)
SPA如图 :

MPA如图 :

应用组成 一个外壳页面和多个页面片段组成 由多个完整页面构成
跳转方式 片段跳转:把一个页面片段删除或者隐藏,加载另一个页面片段并显示出来。这是片段之间的模拟跳转,并没有离开壳页面 页面跳转:从一个页面跳转到另一个页面
URL模式 http://xxx.com/index.html#page1
http://xxx.com/index.html#page2
http://xxx.com/page1.html
http://xxx.com/page2.html
刷新方式 页面片段局部刷新 整页刷新
跳转后公共资源是否重载
页面间传递数据 因为在一个页面上,所以可以设置全局常量来记录这些固定的数据,所以页面片段传递数据很容易实现 依赖 URL, cookie, localStorage,实现麻烦
页面切换转场画面 容易实现 无法实现
用户体验 页面片段间切换快,转场画面佳,用户体验好,包括在移动设备上 页面间切换加载慢,不流畅,用户体验差,特别是在移动设备上
SEO 需要单独方案做,有点麻烦 可以直接做
特别适用范围 对体验要求高的应用,特别是移动应用 需要对搜索引擎友好的网站
开发难度 高一些,MVVM 模式框架 低一些,框架选择容易
维护成本 相对容易 相对复杂

How:怎么实现 SPA ?



MVVM框架: 诸如 AngularJS、Vue.js、React、Ember.js、Meteor.js、ExtJS 等面向网页浏览器的 JavaScript 框架采纳了单页应用(SPA)原则。

目前听到最多的还是前面的三大框架:Angular、Vue 和 React

当然,本系列我们还是主要讨论Vue,而且我也还要一边巩固熟练使用 Vue ,一边 Angular 新手上路,大家一起加油鸭!

原文地址:https://www.cnblogs.com/chayin/p/9738686.html

时间: 2024-11-06 10:52:36

Vue系列(1):单页面应用程序的相关文章

【Web API系列教材】1.3 — 实战:用ASP.NET Web API和Angular.js创建单页面应用程序(下)

练习2:创建SPA界面 在本练习中,你将首先创建Geek Quiz的web前端,使用AngularJS专注于单页面应用程序的交互.然后你将使用CSS3来执行丰富的动画和提供一个当从一个问题转换到另一个问题时切换上下文的可视化效果以加强用户体验. 任务1:使用AngularJS来创建SPA界面 在本任务中,你将使用AngularJS来实现Geek Quiz应用程序的客户端.AngularJS是一个开源的JavaScript框架,它能够搭配MVC以加强基于浏览器的应用程序,使其对于开发和测试都更加便

curl数据采集系列之单页面采集函数get_html

在做数据采集时经常要使用到curl+正则的方式采集需要的数据 根据自己的工作经验 把自己写的一些常用自定义函数 拿到博客园来分享 如果有写得不恰当的地方 请多多指教 这是一个系列 没办法在一两天写完 所以一篇一篇的发布 大致大纲: 1.curl数据采集系列之单页面采集函数get_html 2.curl数据采集系列之多页面并行采集函数get_htmls 3.curl数据采集系列之正则处理函数get _matches 4.curl数据采集系列之代码分离 5.curl数据采集系列之并行逻辑控制函数we

Oracle JET 单页面应用程序Router 使用(上)

单页面应用程序:使用一个进加载一次的网页,如果页面由于用户的交互而改变,则仅绘制更改的页面部分. 要创建单页面应用程序需要使用 oj.Router 的虚拟导航来支持,ojModule 用来响应页面的重新绘制. ojModule 仅用于分离的 view 和 viewMode ,使之与页面通过 Knockout绑定.另外,ojModule 可选,当不使用分离视图与模型时,可直接在元素上响应变化. 1.简单模型: 当选择 Chapter1 或其他时,将显示新内容,并且URL更改以反映用户在页面上当前的

SPA 单页面应用程序。

看到这个问题,先说下自己的理解到的程度,再去参考做修正,争取这一次弄懂搞清楚 自己的理解: 单页面应用程序,解决浏览器获取数据刷新页面的尴尬,通过ajax请求获取数据达到异步更新视图的按钮,原理的实现由两种, 其一,通过hash值的变化,绑定onhashchange的回调函数更新视图,因为hash值的变化不会让页面失去响应,不会向服务器发送请求.下面列出几种可能改变hash值的方法,改变url中的hash.浏览器回退按钮可能出现历史记录中的url包含的hash值不一样,都将触发该事件:还有触发带

借助 Vue 来构建单页面应用

原文: https://github.com/MeCKodo/vue-tutorial 主题 Vue.js (1/2)Vue构建单页应用最佳实战 前言 我们将会选择使用一些vue周边的库 1.使用node.js后台,了解到如何获取数据 2.实现单页路由 3.实现HTTP请求我们的node 4.单项数据流 5.使用.vue文件进行开发 最终我们将会构建出一个小demo,不废话,直接上图. 安装 1.我们将会使用webpack去为我们的模块打包,预处理,热加载.如果你对webpack不熟悉,它就是可

详解webpack + vue + node 打造单页面(入门篇)

1.node下载地址:http://nodejs.cn/download/,安装完成检查node和npm版本 2.淘宝镜像 : npm install cnpm -g --registry=https://registry.npm.taobao.org ,淘宝镜像比npm要快很多,可以直接用cnpm代替npm 3.安装vue-cli:cnpm install -g vue-cli 安装webpack:cnpm install -g webpack -g 表示全局安装 编程过程中需要引入模块的话可

如何在嵌套的app中运用vue去写单页面H5

本文主要介绍移动端.为了避免移动端兼容出现各种奇奇怪怪的bug,所以秉承着能不用复杂的语法就不用,尽量用最基础的语法. 可用惯了各种ES6语法的童鞋们,写原生真是头疼,再加上各种领导催工期,肯定是内心各种烦躁.这里介绍一下,如何在H5中运vue 去写,嵌套到用到app中. 首先引入vue CDN ,记得去扒一个vue.js. 下载下来,不要用htpp,这样可以避免有些模块因为网卡导致,页面加载错乱. <script src="./js/vue.min.js"></sc

通过Blazor使用C#开发SPA单页面应用程序(4) - Ant Design Button

前面学习了Blazor的特点.环境搭建及基础知识,现在我们尝试的做个实际的组件. Ant Design是蚂蚁金服是基于Ant Design设计体系的 UI 组件库,主要用于研发企业级中后台产品.目前官方是基于React和Angular实现的,今年也推出了Vue的实现.其组件涵盖面较广,其组件风格及交互效果还是比较惊艳的,后面准备利用Ant Design的样式文件利用Blazor模仿几个组件的实现. 由于也是新学的Blazor开发,可能实现的方式有些笨拙,希望高手提出宝贵意见,先看看实现的Butt

Vue系列:滚动页面到指定位置实现

方法1:scrollTop 滚动到某位置 方法2:scrollTo,scrollBy,scroll滚动到某位置 方法3:scrollIntoView() 实现滚动到具体某元素 需注意,上述3种方法都不是平滑滚动 原文地址:https://www.cnblogs.com/One-sprite/p/10083899.html