## 网站PC版和移动版的模板方案
### 网页实现PC端和移动端的两种方案
#### 1:自适应
越开越多的网页使用自适应技术开发,我们可以通过一套自适应网页来适应PC端和移动端,但是要注意自适应技术的局限性,阅读展示类网站可以做成自适应,但是功能性,交互性较强的页面就不适合 了,比如商城,商品详情页,这样的页面用自适应来做,代码量很臃肿。此时只能使用第二种方案。
* * * * *
#### 2:PC和移动端分离开发
这种情况,里面又会涉及到多个问题了,不同设备访问时,url会不会变化,要不要做跳转。
应用是否分离,PC端和移动端应用分离开发,比如模块分离开发也可以(tpshop就是分模块,但是跳转了)。
分离主要有两种方式,模板分离,应用分离。
简单的做法就是模板分离,同一套程序,只不过有两套模板,根据客户端类型,渲染不同的模板,这样用户看起来网址是一样的,但是不同设备访问时模板界面不一样。V1就是那样做的。
但这种有很明显的缺点,有的PC端和移动端的同一个业务页面功能性/页面结构/展示内容也会有很大差别,直接套同一个应用(控制器),只是模板不同,这样显然是不可取的,很多时候移动端和PC端所需要的数据都不同,并且移动端更多的是接口开发,所以这种方式非常低效。
第二种就是应用(模块)分离开发了,这种最灵活科学,PC端功能和移动端没有重耦合。
再要思考的问题就是url了,要不要分url。
有的人觉得有必要分url,既然应用分开的,那就应该区分,这样对用户体验好。并且可能会出现有的页面PC端有,移动端没有,不过一般用于分享传播的页面,PC端和移动端都是有的。
比如对于同一个页面,移动端和PC端有如下的url:
m.xxx.com/ac/12.html
www.xxx.com/ac/12.html
当用户设备访问到不对应的url时,应该跳转,那这个跳转时客户端的js跳转还是服务端的重定向呢,服务端的重定向比较好,有时候两套url的对应不像上面那样规整,需要服务端自己转换了。
也有人觉得为了提供统一一致的服务,移动端和pc端尽管展示不同的模板,但是url保持一致不需要有区别,GitHub就是这样的。
> 如果不想跳转url,不用响应式,用两套模板,但不想共用控制器,那么可以请求一开始就用拦截器,检测到是移动端访问时,绑定模块mobile,否则就是pc模块,这样就不用url跳转来切换模块了。
* * * * *
### 移动端wap全部用静态模板
基于shopnc的好商城,移动端直接 http://v5.33hao.com/wap (index.html)都是静态文件,连控制器都不需要,都不需要经过PHP处理,直接nginx就可以。功能都是调用接口,模板是前端根据数据自己渲染的(使用artTemplate模板引擎),和APP共用一套接口。简直不要太方便。
>[danger] 这是前后端分离。但是分离后是否也存在一个问题,比如微信端授权登录还是要调到动态文件上做授权操作的,还有微信支付等,需要尝试一下,如果可以,那就可以完全做到前后端分离了,这样前端直接使用前端自动化工具开发就好了,全部使用后台接口。还有,传统插件模块开发可能对前后端分离不友好。
* * * * *
### 扩展
[哔哩哔哩(B站)的前端之路](https://m.toutiaocdn.com/group/6580148672208568846/?iid=33124962994&app=news_article_lite×tamp=1532108136&wxshare_count=1&tt_from=weixin&utm_source=weixin&utm_medium=toutiao_android&utm_campaign=client_share)
[php - 网站模板应该分为PC版和WAP版吗? - SegmentFault](https://segmentfault.com/q/1010000003026926)
[php - 有PC版的网站如何做一套手机版的网站出来 - SegmentFault](https://segmentfault.com/q/1010000004043075)
[互联网分层架构,为啥要前后端分离? - 架构师之路](http://mp.weixin.qq.com/s/Nhyo969WnEwyCWpr34ECcA)
[分层架构,前后端分离有啥坏处?](http://mp.weixin.qq.com/s/ZKjKUkWkNqxiwNEjBDXtiQ)
[服务端渲染 vs 客户端渲染](http://mp.weixin.qq.com/s/I28GlXxzC1aT0LeXVfCThw)
[一分钟了解互联网动静分离架构](https://mp.weixin.qq.com/s/Kpsq8MH2TvXQEECyGrmj9A)
[浅谈响应式Web设计与实现思路 – 熊建刚的博客](http://blog.codingplayboy.com/2018/01/06/responsive-web-design/)
[浅谈响应式Web设计与实现思路](https://www.toutiao.com/a6508149161299280398/?tt_from=weixin&utm_campaign=client_share×tamp=1515350460&app=news_article&utm_source=weixin&iid=22069500288&utm_medium=toutiao_android&wxshare_count=1)
[利用Nuxt.js创建服务端渲染的Vue.js应用程序](https://mp.weixin.qq.com/s/HCOIjWDSjJIKPsjJO3LKmQ)
[理解模板引擎](https://mp.weixin.qq.com/s/U0c79XHFYPeie0a7ucOPbQ)
~~~
自适应vs响应式
自适应和响应式设计的不同主要概括如下:
自适应是多套用户界面,而后者则只有一套用户界面;
自适应需要服务端检测请求设备分辨率相关信息,然后选择对应版本返回;
自适应可以在不同版本使用不同适配方案,如在PC端使用百分比,在移动端使用rem等,而响应式则需要一个完美兼容的适配方案;
~~~
> 特别注意的是margin,padding属性值为百分比时,是基于当前元素width值的。%单位也是一个缩放单位,所以也常用于样式适配。
>[tip] 错!!!只有padding才是基于当前元素的,margin和width一样,都是基于父元素的。
>[danger] **自适应和响应式不是一个东西。**
> 自适应、响应式、适配都是为了展示最好的前端效果,即在每一种设备上,都极力呈现出最好的效果。这个最好的效果,指的是,在各终端表现出最好的视觉效果,以及最合适、最方便的操作习惯。
**自适应,响应式,屏幕适配,这是三个独立不同的概念。**
自适应是多端返回不同的页面,需要多套程序或者多套模板。
响应式主要是利用css媒体查询。
适配主要是应用于对完美还原设计稿尺寸有要求的页面,主要是利用 flexible.js、rem、vm等技术。
* * * * *
last update:2018-7-12 14:03:27
- 开始
- 微信小程序
- 获取用户信息
- 记录
- HTML
- HTML5
- 文档根节点
- 你真的了解script标签吗?
- 文档结构
- 已经落后的技术
- form表单
- html实体
- CSS
- css优先级 & 设计模式
- 如何编写高效的 CSS 选择符
- 笔记
- 小计
- flex布局
- 细节体验
- Flex
- Grid
- tailwindcss
- JavaScript
- javascript物语
- js函数定义
- js中的数组对象
- js的json解析
- js中数组的操作
- js事件冒泡
- js中的判断
- js语句声明会提前
- cookie操作
- 关于javascript你要知道的
- 关于innerHTML的试验
- js引擎与GUI引擎是互斥的
- 如何安全的修改对象
- 当渲染引擎遇上强迫症
- 不要使用连相等
- 修改数组-对象
- 算法-函数
- 事件探析
- 事件循环
- js事件循环中的上下文和作用域的经典问题
- Promise
- 最佳实践
- 页面遮罩加载效果
- 网站静态文件之思考
- 图片加载问题
- 路由及转场解决方案
- web app
- 写一个页面路由转场的管理工具
- 谈编程
- 技术/思想的斗争
- 前端技术选型分析
- 我想放点html模板代码
- 开发自适应网页
- 后台前端项目的开发
- 网站PC版和移动版的模板方案
- 前后端分离
- 淘宝前后端分离
- 前后端分离的思考与实践(一)
- 前后端分离的思考与实践(二)
- 前后端分离的思考与实践(三)
- 前后端分离的思考与实践(四)
- 前后端分离的思考与实践(五)
- 前后端分离的思考与实践(六)
- 动画
- 开发小技巧
- Axios
- 屏幕适配
- 理论基础
- 思考
- flexible.js原理
- 实验
- rem的坑,为什么要设置成百分比,为什么又是62.5%
- 为什么以一个标准适配的,其它宽度也能同等适配
- 自适应、响应式、弹性布局、屏幕适配
- 适配:都用百分比?
- 番外篇
- 给你看看0.5px长什么样?
- 用事实证明viewport scale缩放不会改变rem元素的大小
- 为什么PC端页面缩放不会影响rem元素
- 究竟以哪个为设备独立像素
- PC到移动端初试
- 深入理解px
- 响应式之栅格系统
- 深入理解px(二)
- 一篇搞定移动端适配
- flex版栅格布局
- 其他
- 浏览器加载初探
- 警惕你的开发工具
- JS模块化
- webpack
- 打包原理
- 异步加载
- gulp
- 命名规范
- 接口开发
- sea.js学习
- require.js学习
- react学习
- react笔记
- vue学习
- vue3
- 工具、技巧
- 临时笔记
- 怎么维护好开源项目
- 待办
- 对前端MVV*C框架的思考
- jquery问题
- 临时
- 好文
- 节流防抖