We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
说明:文章待完成部分
思维导图地址:https://www.processon.com/view/link/60d49a45e401fd50b99305b1#map
H5 这个词,可以理解成就是混合 App 模型,只不过它特指混合 App 的前端部分。 因为混合 App 的前端就是 HTML5 网页,所以简称 H5。—— 阮一峰
H5 应用分为 3 种:
Web App 是使用网页做的应用程序,必须在浏览器中使用。
基本介绍
主要技术栈:
内部产品代表
混合 App (hybrid App)顾名思义就是原生 App 与 Web App 的结合。它的壳是原生 App,但是里面放的是网页。 可以理解成,混合 App 里面隐藏了一个浏览器,用户看到的实际上是这个隐藏浏览器渲染出来的网页。
混合 App 的原生外壳称为"容器",内部隐藏的浏览器,通常使用系统提供的网页渲染控件(即 WebView 控件),也可以自己内置一个浏览器内核。结构上,混合 App 从上到下分成三层:HTML5 网页层、网页引擎层(本质上是一个隔离的浏览器实例)、容器层。
API Bridge
混合 App 里面的网页不同于普通网页,可以调用底层系统所有的 API。奥秘就在于 外层容器提供了 API Bridge,充当底层 API 的中介,允许内部的网页调用底层。
所谓 API Bridge 就是容器在底层接口和网页之间,建立一座桥梁,让双方通信。容器一旦接到网页的请求,就根据请求去调用底层系统的 API,然后再返回结果给网页。API Bridge 往往以 JavaScript 语言提供,方便网页调用,这时又称为 JSbridge。
对比表格:来源 Hybrid APP基础篇(二)->Native、Hybrid、React Native、Web App方案的分析比较
产品代表
小程序,可以看作是针对特定容器的 H5 开发。微信本身是一个容器,开放自己的接口(JSbridge),外部开发者使用规定的语法,编写页面,容器可以动态加载这些页面。
当前,各个大厂都有自己的小程序:支付宝小程序,百度小程序,微信小程序等。
App 开发技术方案:
原生开发:安卓——Java技术栈,IOS——Object-C 或 Swift 技术栈。
混合开发:Web 技术栈 + 容器技术栈
跨平台技术:
对于 H5 中 Web App 的开发,采用 前端三剑客(HTML,CSS,JavaScript)技术方式实现。
在css中我们一般使用px作为单位,在桌面浏览器中css的1个像素往往都是对应着电脑屏幕的1个物理像素,这可能会造成我们的一个错觉,那就是css中的像素就是设备的物理像素。
但实际情况却并非如此,css中的像素只是一个抽象的单位,在不同的设备或不同的环境中,css中的1px所代表的设备物理像素是不同的。
在早先的移动设备中,屏幕像素密度都比较低,如iphone3,它的分辨率为 320x480,**在iphone3上,一个 css 像素确实是等于一个屏幕物理像素的。**后来随着技术的发展,移动设备的屏幕像素密度越来越高。
从iphone4开始,苹果公司便推出了所谓的Retina屏,分辨率提高了一倍,变成640x960,但屏幕尺寸却没变化,这就意味着同样大小的屏幕上,像素却多了一倍,这时,一个 css 像素是等于两个物理像素的。其他品牌的移动设备也是这个道理。例如安卓设备根据屏幕像素密度可分为ldpi、mdpi、hdpi、xhdpi等不同的等级,分辨率也是五花八门,安卓设备上的一个css像素相当于多少个屏幕物理像素,也因设备的不同而不同,没有一个定论。
还有一个因素也会引起css中px的变化,那就是用户缩放。例如,当用户把页面放大一倍,那么css中1px所代表的物理像素也会增加一倍;反之把页面缩小一倍,css中1px所代表的物理像素也会减少一倍。
在移动端浏览器中以及某些桌面浏览器中,window对象有一个devicePixelRatio属性,它的官方的定义为:
设备物理像素和设备独立像素的比例,也就是 devicePixelRatio = 物理像素 / 独立像素。
css中的px就可以看做是设备的独立像素,所以通过devicePixelRatio,我们可以知道该设备上一个css像素代表多少个物理像素。例如,在Retina屏的iphone上,devicePixelRatio的值为2,也就是说1个css像素相当于2个物理像素。
最标准的viewport设置
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
px2rem-loader
1px 处理?
使用Flexible实现手淘H5页面的终端适配 使用Flexible实现手淘H5页面的终端适配 amfe/article#17
H5 手机 App 开发入门:概念篇
原生开发、H5开发和混合开发的区别 https://juejin.cn/post/6844904008360919053
h5开发经验总结 https://wujiachen.top/2021/05/08/h5%E5%BC%80%E5%8F%91%E6%80%BB%E7%BB%93/
总结移动端H5开发常用技巧(干货满满哦!) https://juejin.cn/post/6844904066301050893?utm_source=gold_browser_extension
h5移动端常见开发总结 http://jinux.top/2021/01/28/h5%E7%A7%BB%E5%8A%A8%E7%AB%AF%E5%B8%B8%E8%A7%81%E5%BC%80%E5%8F%91%E6%80%BB%E7%BB%93/
移动端开发的几条总结 https://juejin.cn/post/6844903633037819912#heading-2
移动端h5开发相关内容总结(四) 移动端h5开发相关内容总结(四) zhiqiang21/blog#27
吃透 H5 开发 | 12种最常见的坑汇总 - 邵锁的文章 - 知乎 https://zhuanlan.zhihu.com/p/268677938
稍微整理了几个经常在H5移动端开发遇到的东西😢 https://juejin.cn/post/6844903959287562254
移动端H5页面开发坑点指南 https://juejin.cn/post/6844903976257896455
吃透移动端 H5 响应式布局 |深入原理到目前最佳实践方案 https://juejin.cn/post/6844904021552005128#heading-8
吃透移动端 1px|从基本原理到开源解决方案 https://juejin.cn/post/6844904023145857038
web移动端布局的那些事儿 https://juejin.cn/post/6844903651362734094#heading-1
大厂是怎么做移动端适配的 https://blog.csdn.net/liuyan19891230/article/details/105548875
移动端开发需要注意的 8 个方向 https://mp.weixin.qq.com/s/ah63zGv-qPI2h_FJjVrINw
移动端页面适配方案 https://blog.csdn.net/weixin_42114053/article/details/108620680
Hybrid App技术解析 -- 原理篇 https://segmentfault.com/a/1190000015678155
Hybrid App技术解析 -- 实战篇 https://segmentfault.com/a/1190000015812582
https://www.cnblogs.com/dailc/p/5930238.html
The text was updated successfully, but these errors were encountered:
No branches or pull requests
说明:文章待完成部分
什么是 H5
H5 这个词,可以理解成就是混合 App 模型,只不过它特指混合 App 的前端部分。 因为混合 App 的前端就是 HTML5 网页,所以简称 H5。—— 阮一峰
不同类型H5的特点
H5 应用分为 3 种:
Web 应用
Web App 是使用网页做的应用程序,必须在浏览器中使用。
基本介绍
主要技术栈:
内部产品代表
混合应用
混合 App (hybrid App)顾名思义就是原生 App 与 Web App 的结合。它的壳是原生 App,但是里面放的是网页。 可以理解成,混合 App 里面隐藏了一个浏览器,用户看到的实际上是这个隐藏浏览器渲染出来的网页。
混合 App 的原生外壳称为"容器",内部隐藏的浏览器,通常使用系统提供的网页渲染控件(即 WebView 控件),也可以自己内置一个浏览器内核。结构上,混合 App 从上到下分成三层:HTML5 网页层、网页引擎层(本质上是一个隔离的浏览器实例)、容器层。
API Bridge
混合 App 里面的网页不同于普通网页,可以调用底层系统所有的 API。奥秘就在于 外层容器提供了 API Bridge,充当底层 API 的中介,允许内部的网页调用底层。
所谓 API Bridge 就是容器在底层接口和网页之间,建立一座桥梁,让双方通信。容器一旦接到网页的请求,就根据请求去调用底层系统的 API,然后再返回结果给网页。API Bridge 往往以 JavaScript 语言提供,方便网页调用,这时又称为 JSbridge。
对比表格:来源 Hybrid APP基础篇(二)->Native、Hybrid、React Native、Web App方案的分析比较
产品代表
小程序
小程序,可以看作是针对特定容器的 H5 开发。微信本身是一个容器,开放自己的接口(JSbridge),外部开发者使用规定的语法,编写页面,容器可以动态加载这些页面。
当前,各个大厂都有自己的小程序:支付宝小程序,百度小程序,微信小程序等。
H5 开发
App 开发技术方案:
原生开发:安卓——Java技术栈,IOS——Object-C 或 Swift 技术栈。
混合开发:Web 技术栈 + 容器技术栈
跨平台技术:
对于 H5 中 Web App 的开发,采用 前端三剑客(HTML,CSS,JavaScript)技术方式实现。
DPR 相关
css 中的 1px 并不等于设备的1px
在css中我们一般使用px作为单位,在桌面浏览器中css的1个像素往往都是对应着电脑屏幕的1个物理像素,这可能会造成我们的一个错觉,那就是css中的像素就是设备的物理像素。
但实际情况却并非如此,css中的像素只是一个抽象的单位,在不同的设备或不同的环境中,css中的1px所代表的设备物理像素是不同的。
在早先的移动设备中,屏幕像素密度都比较低,如iphone3,它的分辨率为 320x480,**在iphone3上,一个 css 像素确实是等于一个屏幕物理像素的。**后来随着技术的发展,移动设备的屏幕像素密度越来越高。
从iphone4开始,苹果公司便推出了所谓的Retina屏,分辨率提高了一倍,变成640x960,但屏幕尺寸却没变化,这就意味着同样大小的屏幕上,像素却多了一倍,这时,一个 css 像素是等于两个物理像素的。其他品牌的移动设备也是这个道理。例如安卓设备根据屏幕像素密度可分为ldpi、mdpi、hdpi、xhdpi等不同的等级,分辨率也是五花八门,安卓设备上的一个css像素相当于多少个屏幕物理像素,也因设备的不同而不同,没有一个定论。
还有一个因素也会引起css中px的变化,那就是用户缩放。例如,当用户把页面放大一倍,那么css中1px所代表的物理像素也会增加一倍;反之把页面缩小一倍,css中1px所代表的物理像素也会减少一倍。
在移动端浏览器中以及某些桌面浏览器中,window对象有一个devicePixelRatio属性,它的官方的定义为:
设备物理像素和设备独立像素的比例,也就是 devicePixelRatio = 物理像素 / 独立像素。
css中的px就可以看做是设备的独立像素,所以通过devicePixelRatio,我们可以知道该设备上一个css像素代表多少个物理像素。例如,在Retina屏的iphone上,devicePixelRatio的值为2,也就是说1个css像素相当于2个物理像素。
为什么移动端设计稿总是640px和750px
移动端常见的布局方案:
viewport 设置
最标准的viewport设置
布局方案
px2rem-loader
等工具的辅助。项目开发注意问题
1px 处理?
参考资料
使用Flexible实现手淘H5页面的终端适配 使用Flexible实现手淘H5页面的终端适配 amfe/article#17
H5 手机 App 开发入门:概念篇
原生开发、H5开发和混合开发的区别 https://juejin.cn/post/6844904008360919053
h5开发经验总结 https://wujiachen.top/2021/05/08/h5%E5%BC%80%E5%8F%91%E6%80%BB%E7%BB%93/
总结移动端H5开发常用技巧(干货满满哦!) https://juejin.cn/post/6844904066301050893?utm_source=gold_browser_extension
h5移动端常见开发总结 http://jinux.top/2021/01/28/h5%E7%A7%BB%E5%8A%A8%E7%AB%AF%E5%B8%B8%E8%A7%81%E5%BC%80%E5%8F%91%E6%80%BB%E7%BB%93/
移动端开发的几条总结 https://juejin.cn/post/6844903633037819912#heading-2
移动端h5开发相关内容总结(四) 移动端h5开发相关内容总结(四) zhiqiang21/blog#27
吃透 H5 开发 | 12种最常见的坑汇总 - 邵锁的文章 - 知乎 https://zhuanlan.zhihu.com/p/268677938
稍微整理了几个经常在H5移动端开发遇到的东西😢 https://juejin.cn/post/6844903959287562254
移动端H5页面开发坑点指南 https://juejin.cn/post/6844903976257896455
吃透移动端 H5 响应式布局 |深入原理到目前最佳实践方案 https://juejin.cn/post/6844904021552005128#heading-8
吃透移动端 1px|从基本原理到开源解决方案 https://juejin.cn/post/6844904023145857038
web移动端布局的那些事儿 https://juejin.cn/post/6844903651362734094#heading-1
大厂是怎么做移动端适配的 https://blog.csdn.net/liuyan19891230/article/details/105548875
移动端开发需要注意的 8 个方向 https://mp.weixin.qq.com/s/ah63zGv-qPI2h_FJjVrINw
移动端页面适配方案 https://blog.csdn.net/weixin_42114053/article/details/108620680
Hybrid App技术解析 -- 原理篇 https://segmentfault.com/a/1190000015678155
Hybrid App技术解析 -- 实战篇 https://segmentfault.com/a/1190000015812582
https://www.cnblogs.com/dailc/p/5930238.html
The text was updated successfully, but these errors were encountered: