SPA(single-page application),翻译过来就是单页应用。
SPA是一种特殊的web应用。将所有的活动局限于一个Web页面中,仅在该Web页面初始化时加载相应的HTML、JavaScript和CSS。 一旦页面加载完成,SPA不会因为用户的操作而进行页面的重新加载或跳转。取而代之的是利用JavaScript动态的变换HTML的内容, 从而实现UI与用户的交互。
优点:
缺点:
//方案1
document.addEventListener('DOMContentLoaded',(event) =>{
console.log(111);
})
//方案2
performance.getEntriesByName("first-contentful-paint")[0].startTime
减少入口文件体积 | 常用手段:懒加载,把不同路由对应的组件分割成不同的代码块,当用时才加载,使得入口文件体积减少,加载速度提高。在vue-router配置动态加载路由的形式 |
静态资源本地缓存 | 后端返回资源问题:后端设置响应头cache-control ,Exprise, Etag ,Last-modified等;采用Service Worker离线缓存。前端合理利用locaStorage |
UI框架按需加载 | 比如适用element-UI,不要直接引入UI库,而要按需加载 |
组件重复打包 | 一个组件被多个路由同时适用,会造成重复下载。在webpack的config文件中,修改CommonChunkPlugin的配置,将minChunk:3,表示会把三次及以上的包抽离出来,放进公共样式,避免重新加载组件 |
图片资源的压缩 | 对于所有的图片,都可以进行适当的压缩,对于页面上的icon,我们可以适用字体图表来代替;或者使用雪碧图,把多个小的图片放在一张图上加载,这样可以加快加载速度 |
开启gzip的压缩 | |
适用SSR | 服务端渲染,组件或者页面通过服务器生成html字符串,发送到浏览器 |
MPA(mutiple-page application),翻译过来就是多页面应用。
MPA(多页应用):每个页面都是一个主页面,都是独立的,当我们访问一个页面时,需要重新加载HTML、Javascript和CSS,公共文件则按需下载。
SPA | MPA | |
---|---|---|
组成 | 一个主页面和多个片段页面 | 多个主页面 |
url路由模式 | hash模式 http://xxx/abc.html#page1 | history模式 http://xxx/page1.html |
SEO搜索引擎优化 | 难实现,可用SSR(服务端渲染)方式改善 | 容易实现 |
数据传递 | 容易(全局变量Vuex或Vue中的父子组件通讯props对象) | 依赖url、cookie或者localstorage,实现麻烦 |
页面切换 | 速度快,用户体验好 | 切换加载资源,速度慢,用户体验差 |
维护成本 | 相对容易 | 相对复杂 |
过渡动画 | 提供了transition的封装组件,容易实现 | 很难实现 |
适用场景 | 对于体验度和流畅度有较高要求的应用,不利于SEO | 适用于对SEO要求很高的应用 |
如果这篇文章对你有帮助的话,就留下一个赞吧!