再谈多端适配

简介: 多端适配其实已经是个老生常谈的话题了,随着移动端的兴起到趋于稳定,WEB也已经发展到相对成熟的阶段。在经历了一番番的更新演进后,业界有了非常丰富的多端适配的方案。PC与移动也从分离 → 融合 → 分离走了完整的一个过程。今天小剧就来聊聊我个人对多端适配的一些想法。



多端适配其实已经是个老生常谈的话题了,随着移动端的兴起到趋于稳定,WEB也已经发展到相对成熟的阶段。在经历了一番番的更新演进后,业界有了非常丰富的多端适配的方案。PC与移动也从分离 → 融合 → 分离走了完整的一个过程。今天小剧就来聊聊我个人对多端适配的一些想法。

为什么要做多端适配?

为什么需要做多端适配呢?因为前面提到移动端的兴起,带来的是用户访问我们网站的途径越来越多样化的。传统PC的站点已经很难在移动设备上使用,所以我们需要通过多端适配的方案来让WEB产品在各个设备下具有良好体验。

关于多端适配的定义有很多,小剧认为的多端适配应该是一套完整的,能同时兼容PC、移动端这两大类主流设备的WEB方案。

有哪些方案可以实现多端适配?

实际操作起来多端适配的实现方式非常多,小剧总结下来最基本的套路主要有以下三种:响应式设计、多站点跳转、多视图切分。下面小剧分别来介绍下这三种方案以及各自的优劣势。

1、响应式设计

响应式设计是早些时候炒的比较火的一个技术方案,甚至有种被神话的感觉。那什么是响应式设计呢?响应式设计是利用 media query 和 CSS3 的一些其他特性实现的多端适配方案,本质是同一套代码同时响应多个设备。

响应式设计有什么好处呢?首先响应式设计在视觉上具有高度的统一性,在合理的前期设计配合下可以大幅度减轻多端适配的工作量。可以做到一次开发适配多种设备平台。

然而响应式设计同时也是一种交互、视觉、前端高度配合的开发方式,需要更为紧密的上下游沟通交流。同时在设计时需要在多种设备的交互模式上做平衡,无法将各类设备特有的交互模式做个性化的发挥。若是前期预见产品在多端下的功能模块、交互模式有差异的可能,最好不要考虑使用响应式设计的方案。另外如果设想通过一套代码完全适配从PC到移动端各类设备及各类浏览器,难度也是不言而喻的。以上均是响应式设计存在的弊端。

2、多站点跳转

在实际应用中多站点跳转应该是使用最为广泛的一种多端适配方案。这类实现方式相对简单易于操作。多站点跳转是:针对PC、移动端各开发一套网站,通过对UA的判断由nginx或各个站点自身做相互跳转。比较常见的表现就是PC URL为xxx.com,移动端URL为m.xxx.comxxx.com/m

这样分析下来多站点跳转的优势就很明显了。其一是因为站点是相互独立的,所以项目可以拆分给不同的团队使用不同的后端环境各自独立开发;其二是多端代码分离,可以有效利用各个设备下的交互模式并发挥到极致。相对于后面要说的多视图切分的方案还有第三个优势,这一点后面再做描述。

多站点跳转的弊端总的来说还是比较少的。勉强算一个的话,在跨设备访问的时候,细心的用户可以感知到URL的变化。另外就是需要特别处理好多端下的URL映射规则,需要保证线上多个站点下的URL同时存在,不至于由于页面缺失导致不必要404的存在。

3、多视图切分

多视图切分从URL上来看有点儿像响应式设计,但是从实现方式上来看又和多站点跳转非常类似。多视图切分一般是由同一个后端环境处理,在MVC结构上通过对各个设备开发独立的views,由controller根据UA做出views的选择。所以在多端适配的过程中用户不会感知到任何URL的变化。

多视图切分的优势和多站点跳转有点类似,只是工作拆分粒度没那么粗,仅仅是在views层面做切分。其次由于views的相互独立,同样可以针对各个设备开发相对独立的交互模式。

从上面的总结来看,多视图切分看起来在一定程度上同时具备了响应式设计和多站点跳转的优势,也同时缺少了各自的弊端,理论上应该是市面上应用最多的一种适配方案。然而观察市面上一些流行的大型站点,几乎很少能看见这种方案踪影,这是为什么呢?

可能有同学已经能猜到了,原因就是在CDN上。为了缓解服务器压力,运维同学通常需要对网站做缓存优化。目前市面上通用的缓存方案的最小粒度是URL,而多视图切分却是同一个URL对应多种响应,处理不好很容易导致缓存的混乱。这也就是在多站点跳转时提到的第三个优势,可以非常容易的进行CDN优化。

这三种方案改如何选择?

这三种方案总的来说各有利弊,所以如何在特定场景下做准确的选择是非常重要的。小剧从网站功能和交互模式上来分类,一般会有下面几种对应关系。

一类是纯展示类的官网、活动宣传网站。通常这类网站交互模式较轻,可以很方便的用同一套代码响应多类设备,因此响应式设计是最好的选择。无论是设计成本还是前端的还原成本都可以大幅度的降低。

另一类是交互模式较重的网站,如电商、社交平台。通常需要在各个设备下充分使用自身的交互模式,像PC的鼠标和移动的触摸事件,甚至某些场景下需要利用特定设备的特有特性如PC的拖放事件和移动端的陀螺仪。这类网站一般只能在多站点跳转和多视图切分两者间做出选择。

至于在后两者中推荐使用哪个方案,其实在一般中小型站点下并没有明显的区别。一来是开发模式比较像,仅仅是拆分粒度不同而已;二来是部分网站的缓存并不针对页面,主要的目的还是减轻静态资源的访问压力。

如果一定要问小剧更推荐哪个方案,我认为应该是多站点跳转。原因很简单就是简单、干净。


虽然小剧关于三种方案的描述比较独立,但是实际使用中它们并不是绝对互斥的存在。在同一个网站下面对不同的需求做出针对性的选择,可能会收到更为显著的效果。

仔细分析的话,市面上绝大多数的网站一般都是糅合了小剧提到的这三种方案。


PS:如果你看到了这一行,很感谢你没有因为小剧干涩的描述方式而走开。本文只是根据小剧的开发经验谈谈多端适配思路上的一些想法,并不一定完整、严谨。

PPS:举个小栗子,小剧客栈的从大的逻辑来看使用了多视图切分的方式,用来区分IE678等低端浏览器和高级浏览器。具体到高级浏览器下的视图又使用了响应式的来做PC、移动端的适配。操作上和本文提到的方案略有出入,但是总体思路是互通的。


by 小剧客栈


目录
相关文章
|
4月前
|
人工智能 算法 安全
AR眼镜在工业AI大模型识别的使用流程​
AR眼镜融合AI大模型,实现工业场景智能识别与预警,提升制造质量与安全。通过多模态模型适配、开源模型选型、端云协同部署及定向训练,打造高精度工业AI识别系统,助力制造业智能化升级。
|
11月前
|
IDE iOS开发 Python
小白如何开始使用通义灵码(含安装IDE、安装灵码插件)
PyCharm 和 IntelliJ IDEA 下载安装及通义灵码插件下载安装说明
9799 9
|
前端开发 Java 关系型数据库
超市商品管理系统的设计与实现(论文+源码)_kaic
超市商品管理系统的设计与实现(论文+源码)_kaic
|
编解码 前端开发 开发者
前端开发的必修课:如何让你的网页在不同设备上完美呈现?
【10月更文挑战第30天】随着互联网的普及,用户访问网页的设备种类繁多。前端开发者需确保网页在不同设备上完美呈现。本文介绍了一些最佳实践,包括使用响应式设计、相对单位、灵活的图片和视频、测试与优化及考虑交互设计,帮助实现跨设备兼容。
501 2
|
Web App开发 编解码 前端开发
构建响应式Web应用的最佳实践
构建响应式Web应用的最佳实践
239 0
|
SQL JSON 分布式计算
hive get_json_object解析json结果为null咋办?
解决get_json_object解析json结果为null的问题
1127 0
|
传感器 人工智能 安全
AI识别技术在智慧工地的应用场景
智慧工地是指以物联网、移动互联网技术为基础,充分应用人工智能等信息技术,通过AI赋能建筑行业,对住建项目内人员、车辆、安全、设备、材料等进行智能化管理,实现工地现场生产作业协调、智能处理和科学管理。AI智能分析系统,对工地未佩戴安全帽、未穿反光背心、明烟明火等违规现象实时识别报警,可灵活对接智慧工地管理平台系统,为政府部门、施工单位和监管企业提供高效、经济、安全的安监方案,推动施工作业风险管理从事后管理向事前、事中管理转变,使作业风险得到有效管控。
945 1
|
缓存 前端开发 JavaScript
前端技术栈的深入解析
前端技术栈的深入解析
480 1
|
编解码 前端开发 开发者
构建响应式Web界面:现代前端开发的最佳实践
【2月更文挑战第16天】 在多设备浏览时代,为不同屏幕尺寸和分辨率构建兼容的Web界面成为前端开发者的核心挑战。本文深入探讨了响应式设计的理念、关键技术和最佳实践,旨在指导开发者通过灵活布局、媒体查询、弹性图片等技术手段,实现流畅的用户体验。通过分析真实案例,本文将提供一套行之有效的方法论,帮助前端工程师高效地构建和维护响应式Web项目。
270 2
|
资源调度 前端开发 JavaScript
前端技术栈
前端技术栈
403 0