一、前言

  前端部分的搭建,需要考虑使用哪种模式进行页面之间的跳转交互,

  而项目内的页面交互,不可避免的需要相互之间的数据共享。

  这就引出了本篇博客的目的,一起来谈谈:项目前端部分的构建方式以及数据共享方式。

二、正文

  (一)、搭建前端部分所需要注意的问题

  1)方便性
     结合开发的时间需求和方便性选择适合的前端模式;

  2)性能
     在项目的体量比较大,或者某个页面需要加载较多文件时,会对加载页面所需时间产生影响

  3)浏览器的缓存
     在项目发布后如果文件(css/js/image)有更新,需要用户浏览器清理缓存才会从服务器获取更新后的文件,
     可以通过文件末尾添加时间戳和版本号来避免浏览器优先使用内部缓存文件这样的问题。

  4)文件的目录结构
     是按照文件的类别设置目录结构?还是按照不同页面设置?

     

  (二)、前端搭建的模式选择(多页面模式和单页面模式)

    

图片来源:https://blog.csdn.net/u013291076/article/details/53667382

  1)多页面模式(MPA  Multi-page Application):
    多页面跳转需要刷新所有资源,每个公共资源(js、css等)需选择性重新加载
    页面跳转:使用window.location.href = "./index.html"进行页面间的跳转;
    数据传递:可以使用path?account="123"&password=""路径携带数据传递的方式,或者localstorage、cookie等存储方式

  2)单页面模式(SPA  Single-page Application): 
    只有一张Web页面的应用,是一种从Web服务器加载的富客户端,单页面跳转仅刷新局部资源 ,公共资源(js、css等)仅需加载一次
    页面跳转:使用js中的append/remove或者show/hide的方式来进行页面内容的更换;
    数据传递:可通过全局变量或者参数传递,进行相关数据交互
    

两种模式对比:

页面模式 多页面模式(MPA  Multi-page Application) 单页面模式(SPA  Single-page Application)
页面的组成 多个完整页面,
例如page1.html、page2.html等
由一个初始页面和多个页面模块组成,
例如:index.html和page1.htnl.js、page2.html.js等
公共文件加载 跳转页面前后,js/css/img等公用文件重新加载 js/css/img等公用文件只在加载初始页面时加载,更换页面内容前后无需重新加载
页面跳转/内容更新 页面通过window.location.href = "./index.html"跳转 通过使用js方法,append/remove或者show/hide等方式来进行页面内容的更换
页面跳转/内容更新
所需数据的传递
可以使用路径携带数据传递的方式,例如:http://index.html?account="123"&password=123456"",或者localstorage、cookie等存储方式

直接通过参数传递,或者全局变量的方式进行,因为都是在一个页面的脚本环境下

用户体验 如果单个页面加载的文件相对较大(多),页面切换加载会很慢

页面片段间切换较快,用户体验好,因为初次已经加载好相关文件。但是初次加载页面时需要调整优化,因为加载文件较多

 适用场景  适用于高度追求高度支持搜索引擎的应用  高要求的体验度,追求界面流畅的应用
 转场动画  不容易实现  容易实现

总结:
单页面模式:相对比较有优势,无论在用户体验还是页面切换的数据传递、页面切换动画,都可以有比较大的操作空间

多页面模式:比较适用于页面跳转较少,数据传递较少的项目中开发,否则使用cookie,localstorage进行数据传递,是一件很可怕而又不稳定的无奈选择

转载自:https://www.cnblogs.com/nangezi/p/9201226.html

Web —— 单页面和多页面模式相关推荐

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

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

  2. html表单怎么设置编码,form 表单 设置编码和页面编码

    var isIE=!!window.ActiveXObject; if(isIE && document.charset!="utf-8")location.rel ...

  3. 单页面与多页面的区别

    之前在一个视频面试的时候,被面试官问到这个问题,结果自己混乱答了一下,后面才发现自己混淆了它们的概念,所以特地来学习一下单页面和多页面的区别. 单页面,顾名思义只有一个界面.(SinglePage W ...

  4. web 静态页面和动态页面的区别

    文章目录 一.静态web页面: 二.动态web页面: 为什么需要web服务器?(web server) 三.关于两者区别的简单直接的描述 四.实验测试 一.静态web页面: 1.在静态Web程序中,客 ...

  5. web渗透测试之攻破登录页面

    web渗透测试之攻破登录页面 当我们在做渗透测试时,无论厂商项目还是src众测项目,都会遇到给一堆登录系统的URL,然后让我们自己去测,能不能进去全看天的状况,本文将讲一下怎么突破这种封闭的web系统 ...

  6. (面试)单页面和多页面区别?

    目录 定义 单页面 多页面 区别 刷新的方式 路由模式 结构 维护成本 加载资源文件 开发的成本 用户体验 转场动画 数据传递 搜索引擎优化(SEO) 使用范围 定义 单页面 只有一个对应的html页 ...

  7. web前端学习笔记总页面

    学习资料 自学视频 求知讲堂web前端html+css 参考文档 MDN 书单 你不知道JavaScript JavaScript设计模式和开发实践 css世界 css揭秘 什么是web前端开发 we ...

  8. java web实现页面跳转页面_JavaWeb过滤器实现页面跳转至登录页面

    需求说明: 1.用户登录某页面一段时间之内,如果无任何操作,跳转至登录页面. 2.用户在非登录状态下,无法访问项目下的某些页面. 解决方式: 通过session过滤器实现对请求的过滤,如果未登录跳转至 ...

  9. vue 添加完数据后刷新页面_vue form 表单提交后刷新页面的方法

    最近做的项目中,有增删改表格功能,在操作后需要实时更新页面数据.下面可以这样解决. 1.在methods中 定义好一个初始化渲染实例. 例如 lnitializationData(){//初始化页面数 ...

  10. 不使用Ajax,如何实现表单提交不刷新页面

    不使用Ajax,如何实现表单提交不刷新页面? 目前,我想到的是使用<iframe>,如果有其他的方式,后续再补. 举个栗子: 在表单上传文件的时候必须设置enctype="mul ...

最新文章

  1. matlab数学实验 胡良剑,matlab数学实验习题全部答案(胡良剑)
  2. 一行Java代码实现获取上传文件的后缀名
  3. 8皇后以及N皇后算法探究,回溯算法的JAVA实现,递归方案
  4. HDU 5741 Helter Skelter(构造法)
  5. c++ 编写函数返回两个值最小值_结合实例来分析SQL的窗口函数
  6. 正则匹配后缀 html,如何用正则匹配后缀名不为.jpg, .css, .js, .html, .htm, .png的文件...
  7. [GoogleAppEngine]GAE平台需设置默认threadsafe-编译问题
  8. loinc编码_通用检验编码系统(Universal Laboratory Test Code System)于香港电子健康纪录计划的应用...
  9. 将tensorflow与微信小程序结合,微信开发者工具使用tensorflowJS插件出错:Error: Plugin tfjsPlugin has not registered.
  10. winp 使用 lib文件 h文件的引入
  11. 数据结构和算法(Java),上
  12. 重读《从菜鸟到测试架构师》-- 从专家到高手
  13. 王者荣耀8月15日服务器维护,王者荣耀:8月15日更新,10件装备调整,依旧互秒荣耀...
  14. R语言逻辑回归的预测概率怎么算
  15. 浏览器页签icon图标的设置和获取
  16. Word 2013难搞的页眉,如何把单独一页的页眉去掉?
  17. 信号采样频率和信号频率的关系
  18. QR二维码编码解码原理算法介绍
  19. 【日常学习】【数学】codevs3625 士兵站队问题题解
  20. 超级鹰模拟登录古诗文网站

热门文章

  1. 本地玩邮件服务器和邮件客户端
  2. 基于无线Mesh网络OLSR路由协议的MATLAB仿真
  3. yolov5s-5.0网络模型结构图
  4. 基于滴滴云搭 SeaweedFS 存储系统
  5. carla学习笔记(二)
  6. uniapp搜索出的文字高光并添加锚点
  7. 保姆级教学如何在Ubuntu 20.04工作站上配置深度学习环境
  8. nodejs中使用ioredis库操作redis
  9. 大数据分析:智能交通发展的引擎
  10. 单片机c语言字符串比较,代码对比