今天咱們簡單介紹一下 Hybrid 混合App開發javascript
響應式佈局,就是讓頁面響應各類設備,例如PC端,Phone(手機端) H5新增的語義標籤,表單的新特性,和h5 , canvas 以及相關的js和API包括localstorage等等 如今h5已經稱爲移動端開發和響應式佈局的標準代名詞。css
native開發一般打包後上傳到應用商店,他的優勢在於能夠操做手機內部的軟件或者硬件,由於他直接運行在操做系統中因此性能相對不錯,全部代碼都在手機上,一些須要聯網的能夠提早緩存,可是手機操做系統不同,使用的技術也不同,因此須要兩個不一樣的開發團隊,開發不一樣版本的app,這樣會致使版本升級問題,同時也會增長開發成本html
h5頁面須要基於瀏覽器或者v8內核的工具(pc,移動端瀏覽器或者v8內核的工具),h5運行在瀏覽器,因此若是想讓h5操做系統,取決於瀏覽器是否支持這個功能,若是由,瀏覽器會把該功能放在window全局對象中,相比於native性能很差,全部的請求訪問都必須基於聯網的狀態,除了有些native-app把h5特殊處理了,基於manifest的穩定性,服務器支持,存儲容量等都有限制,咱們離線緩存做用並不突出,所以咱們h5頁面部署到本身服務器上,用戶想看頁面必須從新拉取,這樣也使得數據代碼能夠及時更新,優缺並存。前端
混合app開發 把h5的接入APP,native-app有自帶的web-view機制,它是一款基於v8引擎渲染html頁面的工具,在web-view中嵌入h5頁面,由他渲染h5頁面java
混合app開發就是按照響應式佈局的思想去完成h5頁面的開發,而且部署到服務器上(有個http訪問地址),此時用戶能夠手動輸入地址訪問,也可一掃描生成的二維碼 整個產品的外層框架交給native-app開發,搭建盒子,提供調取手機內部軟件或者硬件的功能和實現緩存機制,提供好對應的調取方法ios
前端開發把生成的H5地址告訴native-app,他們會在本身的webview中經過提供地址渲染出對應頁面,通常一般常常容易更新的位置一般都用h5開發,H5中若是須要使用手機內部功能,只須要調取本身的宿主環境web-view中提供的方法便可,具體參考調用接口文檔css3
瀏覽器會給h5提供window全局對象,web-view也給h5提供了全局對象,並且把一些供h5調取的方法都集成到內置的全局對象上。Hybrid 混合App開發須要實現H5和web通訊,咱們須要這種js bridge技術 微信就是Hybrid最好的案例,他支持h5在native-app中運行,咱們能夠調取微信提供的一些方法實現相關操做,好比微信二次分享,具體請參考微信公衆平臺。(qq瀏覽器)es6
PC端和移動端公用一個地址,這樣確定要考慮響應式,並且樣式改動較大,適用於交互較少的靜態頁面web
PC端一個項目 => 不須要考慮響應式canvas
手機端一個項目 => 考慮響應式
如今咱們適配320-750px的屏幕尺寸
手機經常使用尺寸
最初咱們都用@midia 官方惟一規範響應式佈局,可是這種方式很麻煩,前後出現不少方案,好比scale等比縮放佈局,可是他對文字/圖片等是真處理不是特別好,因此目前最主要的方案是REM響應式佈局
在移動端咱們須要加viewport pc端是當前頁面設備多寬,html頁面就是多寬展現,可是在手機端,無論手機設備有多寬,html頁面寬度默認980,好比在手機端看視頻咱們須要將頁面縮小固定倍數,全部內容都變小了,爲了避免讓頁面縮放,咱們要讓html寬度等於設備寬度
<meta name="viewport" content="width=device,user-scalable=no,initial-scale=1.0,maximum-scale=1.0">
複製代碼
動態設置
//設備寬/750 * 100
複製代碼
咱們如今來作個例子,具體用到的技術棧,h5 ,less ,zepto ,es6 ,css3
<meta name="viewport" content="width=device,user-scalable=no,initial-scale=1.0,maximum-scale=1.0">
複製代碼