【Vue.js】SPA
SPA
2019-11-13 23:20:48 by冲冲
1、概念
(1)MPA(multi-page application)

特点:每一次页面跳转的时候,后台服务器都会返回一个新的html文档,这种类型的网站就是多页网站,也叫多页应用。
(2)SPA(single-page application)

① 原理:第一次进入页面时就会加载相应的HTML、JavaScript 和 CSS,需要切换内容时,通过JavaScript感知url变化,更换当前页面内容,但是并没有新的html文件请求。此时路由不再是后端做,而是前端做。
② 页面跳转:js渲染
③ 优点:
A. 页面切换快。前端局部渲染。
B. 减轻服务器压力。服务器前期发送静态资源(html、css、js)到浏览器,往后通过RESTful API提供接口数据,并使用Ajax异步获取,实现前后端分离。
C. 不用修改后端程序代码(API接口)就可以同时用于web界面、手机、平板等多种客户端。
④ 缺点:
A. 首屏时间慢。首屏时不仅需要请求一次html,同时还要发送一次js请求,两次请求回来了,首屏才会展示出来。相对于多页面应用只需要发送一次html,SPA首屏时间慢。
B. SEO差。因为搜索引擎只认识html里的内容,不认识js渲染生成的内容,搜索引擎不识别,也就不会给一个好排名,会导致单页应用做出来的网页在搜索引擎上的排名差。(解决方案:vue的SSR)
2、比较
| 多页面应用模式(MPA) | 单页面应用模式(SPA) | |
| 应用构成 | 由多个完整页面构成 | 一个外壳页面和多个页面片段构成 |
| 跳转方式 | 页面之间的跳转是从一个页面到另一个页面 | 一个页面片段删除或隐藏,加载另一个页面片段并显示 |
| 跳转后公共资源是否重新加载 | 是 | 否 |
| URL模式 |
|
|
| 用户体验 | 页面间切换加载慢,用户体验差,尤其在移动端 | 页面片段间切换快,用户体验好,包括移动设备 |
| 能否实现转场动画 | 否 | 容易实现(手机APP动效) |
| 页面间传递数据 | 依赖URL、cookies或者localstorage,实现麻烦 |
页面传递数据容易(Vuex或Vue中的父子组件通讯props对象) |
| 搜索引擎优化(SEO) | 可以直接做 | 需要单独方案SSR |
| 特别适用范围 | 需要对搜索引擎友好的网站 | 对用户体验要求高,特别是移动应用 |
| 开发难度 | 较低,大部分JS框架适用 | 较高,需要特定JS框架 |
【Vue.js】SPA的更多相关文章
- 【Vue.js】代码优化:在dom中加一行v-if就可少写一个循环类方法
[问题描述] 把当前用户的购物车中(cartList),商品(good)选中字段checked = true的商品在订单页面中进行展示出来. [一般做法](两次循环) 首先取出当前用户的购物车列表,循 ...
- 【vue.js】windows下安装vue.js
windows下搭建vue开发环境 Vue.js是一套构建用户界面的 “渐进式框架”.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,并且非常容易学习,非常 ...
- 【vue.js】入门
慕课网视频学习笔记:http://www.imooc.com/learn/694 1.将html.js.css写到一个后缀名.vue的文件中,区分这三种类型是通过<template>.&l ...
- 【Vue.js】高仿饿了么外卖App(一)
1.架构从传统的MVC向REST API+前端MV*迁移 参考链接: http://blog.csdn.net/broadview2006/article/details/8615055 http:/ ...
- 【Vue.js】简单说下vuejs中v-model自定义使用姿势
vue.js中有个v-model的语法,可以实现双向绑定. 起初刚看到的时候,觉得很神奇.后面随着对vue.js的熟悉.发现这个其实是vue官方给我们实现的一个语法糖. 使用v-model的时候,vu ...
- 【Vue.js】vue项目目录作用
1. build文件夹:打包配置的文件夹 1.1 webpack.base.conf.js :打包的核心配置 1.2 build.js:构建生产版本,项目开发完成之后,通过build.js打包(加 ...
- 【Vue.js】加载更多—vue-infinite-scroll
引言 今天用到了一个加载更多的插件,用起来很方便,插件的名字叫做vue-infinite-scroll 我们可以去npmjs.com官网看一下这个vue-infinite-scroll的用法,官网上面 ...
- 【Vue.js】基于vue的实时搜索,在结果中高亮显示关键词
一.搜素效果如下: 二.核心 1)利用oninput属性来触发搜素功能 2)利用RegExp来对字符串来全局匹配关键字,利用replace方法来对匹配的关键字进行嵌入高亮的<span class ...
- 【VUE/JS】vue和js禁止浏览器页面后退
1.vue 禁止浏览器后退需求是:需要某个路由不能通过浏览器返回,同时不影响相互之间的切换整理一下解决方法 和 使用方法: 1.在路由配置中给这个路由添加meta信息,比如: { path: '/ho ...
随机推荐
- linux下nginx编译安装、版本信息修改
环境 centos 7 安装依赖包 yum install -y gcc gcc-c++ glibc glibc-devel pcre pcre-devel zlib zlib-devel opens ...
- Windows用cmd编译运行C程序
在Windows环境下用命令行编译运行程序 浙江大学-C语言程序设计进阶 配置gcc 准备一个Dev-cpp 找到gcc.exe所在目录 Dev-Cpp\MinGW64\bin 地址栏右键将地址复制为 ...
- Java(33)IO流的介绍&字节流
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15228446.html 博客主页:https://www.cnblogs.com/testero ...
- NX二次开发 克隆
NXOpen.UF.UFSession theUfSession = NXOpen.UF.UFSession.GetUFSession(); try { //初始化 NXOpen.UF.UFClone ...
- javascript高级程序设计第三版书摘
在HTML 中使用JavaScript <script>元素 在使用<script>元素嵌入 JavaScript 代码时,只须为<script>指定 type 属 ...
- 【UE4 插件】UnrealEnginePython 源码版编译、项目打包注意事项
源码下载 git clone git clone https://github.com/20tab/UnrealEnginePython 直接下载zip https://github.com/20ta ...
- vue3.x全局插件和组件
做vue项目的时候,总有一些小组件或者工具类,我们需要频繁的使用,每个使用的地方再去引用相对比较麻烦,当然也有一些好处,尤其是配合组件异步加载的时候,能最更好的减少项目首次加载的体积,从而优化一些体验 ...
- pycharm 服务器连接及一些问题解决
主要介绍一下如何使用pycharm连接服务器并在服务器上炼丹,并对遇到的一个小问题进行说明. 目录 1,SSH连接 2,linux常用命令 3,配置anaconda 4,运行代码 5,一个常见错误 1 ...
- 需求存在,功能存在——Alpha阶段性总结
0.Alpha开发成果 题士Alpha发布报告 题士开发记录 1.任务划分 Alpha阶段大致将任务划分为Design,Develop和Test三类 Design型任务包含页面UI设计和接口API设计 ...
- Python课程笔记(一)
由于新冠状病毒的爆发,不得不在家里上网课,开课已经两个礼拜了,今天上完Python课后,准备整理一下最近学习Python的笔记. 人生苦短,我用Python 一.Hello World 初学一门新的语 ...