亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

微信小程序webview 腳手架使用詳解

2019-11-19 11:09:18
字體:
來源:轉載
供稿:網友

項目地址

https://github.com/fangkyi03/wechat-webview-template

項目介紹

1.wechat

使用taro創建的初始化項目

2.react-ssr-h5

使用nextjs創建的項目 已經做好完整的兼容處理 使用vw vh為單位

簡單介紹

因小程序對于webview通信做出的限制 從webview發起的postMessage并不會實時的被小程序端接受到

詳情可見 :https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html

登錄 分享 支付 視頻上傳 這幾塊是沒法使用webview來實現的 必須用小程序原生來寫

所以如果想使用小程序內嵌webview的朋友 這里要提個醒

webview跳轉小程序

webview - 通過jumpRouter - 跳轉到小程序的other頁面

實際轉換:

Taro.navigateTo({ url: ../../pages/otherView/index?viewName=${routerName}& + createRouterParams(routerParams) })

通過這種方式 就會在小程序原生router中push一個路由 從而達到跟小程序打開原生頁面一致的效果

在webview中發起的任何一個postMessage 也都會在這個otherView中進行統一的處理

提醒

下面使用到的apitool都是對應項目里面的 而不是共用一個

wechat api

  小程序項目中跳轉頁面并傳參  jumpNativeRouter  使用方式:  apitool.jumpNativeRouter(routerName,params : object)
  替換小程序網頁頁面  replaceRouter  使用方式:  apitool.replaceRouter(routerName,params : object)
  獲取臨時緩存區數據  getTemp  使用方式:  Object apitool.getTemp()  備注:  請見緩存區說明
  銷毀臨時緩存區  clearTemp  使用方式:  apitool.clearTemp()  備注:  請見緩存區說明

react-ssr-h5 api

  獲取小程序分享以后的路徑 轉換成obj的格式  getSharePath  使用方式:  Object apitool.getSharePath(this)
  獲取路由參數  getRouterParams  使用方式:  Object apitool.getRouterParams(this)
  獲取轉換以后的尺寸  getSize  使用方式:  String apitool.getSize(size)  備注:  因為ssr項目里面使用了postcss-px-to-viewport的關系在less里面寫的px會自動轉換成vw 但是行內樣式不行 所以你需要使用這個來轉換一下
獲取當前運行環境  getIsWxClient  使用方式:  apitool.getIsWxClient({success,fail})  備注:  成功或者失敗都會調用對應的回調 但是這里只判斷了MicroMessenger是否存在 無法得知當前是微信小程序在用還是微信內打開網頁 所以如果你是直接從公眾號遷移 要保證公眾號功能都正常使用的話 這邊還得做個判斷
  將路由參數轉換成string  createRouterParams  使用方式:  String apitool.createRouterParams(obj)
  跳轉到小程序other原生頁面  jumpRouter  使用方式:  apitool.jumpRouter(routerName:String,routerParams:Object)  備注:  請看上面注意中寫的介紹
  跳轉小程序原生頁面  jumpNativeRouter  使用方式:  apitool.jumpNativeRouter(routerName:String,routerParams:Object)  備注:  這個可以用來跳轉分享 支付 登錄等小程序pages下面的原生頁面
  跳轉原生登錄頁面  jumpLogin  使用方式:  apitool.jumpLogin()
  從webview發起請求到小程序  postMessage  使用方式:  apitool.postMessage({type:'xxx',data:{}})  備注:  具體詳情請看后面介紹
  返回頁面  backRouter  使用方式:  apitool.backRouter()
  跳轉tab  jumpTab  使用方式:  apitool.jumpTab(tabName:String || 'home') 
  創建臨時緩存區  createTemp  使用方式  apitool.createTemp(obj)  備注:  請看緩存區說明
動態更新webview標題  updateTitle  使用方式:  apitool.updateTitle(string)  備注:  微信小程序中使用的標題是根據當前頁面的webview標題來的所以如果你想進入頁面的時候顯示對應的商品名稱 就調用這個即可

緩存區說明

因小程序對于webview限制的原因 所以如果你有以下場景 那么可以考慮用緩存區來傳遞數據

比如從支付中跳轉到地址選擇或者優惠券選擇等webview選擇頁面的時候 如果想要回顯webview頁面選中的東西 因為小程序webview的限制 沒法兩者之間直接通信 所以就需要創建一個緩存區來獲取數據

登錄為何使用原生?

起初我項目中也是使用webview配合jssdk的授權方式來做登錄 但是這個方案會有幾點問題

1.使用jssdk授權 必須使用80端口

2.使用jssdk處理登錄的話 在小程序里面 體驗不好 會導致你頁面有可能會出現頻繁的跳轉 難以控制

3.后臺必須為此寫一個接口來生成對應的簽名

登錄說明

登錄這邊有一點必須注意的是 必須使用webview保存的token 絕對不要嘗試在小程序里面去保存token

因為當你刪除小程序的時候 微信只會清空小程序的緩存數據 但是不會清空對應的webview的緩存數據

這會導致你小程序那邊沒登錄 但是webview那邊還是登錄的狀態 所以一般都是在跳轉頁面到小程序那邊的時候直接傳遞一個token過去來解決這個問題

webview頁面刷新

場景:

比如你新增了某條數據或者編輯刪除了某條數據 想讓上一個頁面刷新的話

只需要在wechat - otherView中將你想要刷新的routerName添加進去即可

  const { viewName } = this.$router.params  // 強制指定頁面刷新  if ([這里就是你想要刷新的路由名字].indexOf(viewName) !== -1 && this.init) {   Taro.redirectTo({ url: `../../pages/otherView/index?viewName=${viewName}&` + util.tranParams(this.$router.params) })  }

頁面分享

如果你想要你的頁面有分享功能 那么只需要在webview端發起一個apitool.postMessage即可

如果你想要控制分享的標題與內容的話

可以按照這種格式進行發送

apitool.postMessage({type:'share',data:{  title:'分享標題',  path:'分享路徑',  shareUrl:'分享的圖片url'}})

其他處理

如果你想要讓你的應用具備更多的擴展性的話 可以在wechat - otherView - onMessage中增加對應的判斷

nodeServer

在react-ssr-h5根目錄下面有個nodeServer的文件

這個文件是一個js授權的本地服務器版本 如果你想用jssdk的一些功能來進行授權的話可以在項目中執行npm run wechat來開啟這個服務

appid跟secret都被我刪除了 你需要自己手動替換一下

頁面授權在_app.js文件中

postcss.config說明

react-ssr-h5使用的是vw vh為單位 所以設計搞那邊如果寬高不是750 * 1334的話 需要postcss.config.js中對對應的修改

    "postcss-px-to-viewport": {      viewportWidth: 750,   // (Number) The width of the viewport.      viewportHeight: 1334,  // (Number) The height of the viewport.      unitPrecision: 3,    // (Number) The decimal numbers to allow the REM units to grow to.      viewportUnit: 'vw',   // (String) Expected units.      selectorBlackList: ['.ignore', '.hairlines'], // (Array) The selectors to ignore and leave as px.      minPixelValue: 1,    // (Number) Set the minimum pixel value to replace.      mediaQuery: false    // (Boolean) Allow px to be converted in media queries.    },

react-ssr-h5提醒

這個項目在啟動或者export的時候都做了處理

你只需要在pages里面添加內容即可

不需要在server中再去編寫指定的路由 也無需在export的時候編寫路由

你對pages做的改動都會實時刷新

服務端渲染建議

1.不要在網頁中引入antd庫 尤其不要使用帶有icon的組件 如input
引入這個將會導致你的體積直接增加140k 因為antd的圖標是全量引入的

2.使用swiper之類的庫 可以采用cdn的方式引入而不是npm 這樣可以使你的打包體積變得更小

3.建議使用webp而非png只需要在url中?webp即可 已經安裝了對應的插件庫

4.盡量全部使用css module而非全局樣式

海報圖

小程序海報圖可以使用Painter生成

鏈接如下: https://github.com/Kujiale-Mobile/Painter

這是taro引入Painter的demo

https://github.com/Kujiale-Mobile/Taro-Painter-Demo

項目地址

https://github.com/fangkyi03/wechat-webview-template

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人女保姆的销魂服务| 夜夜躁日日躁狠狠久久88av| 国内精久久久久久久久久人| 久久综合免费视频影院| 欧美伊久线香蕉线新在线| 精品久久久久久久久久久久久| 久久999免费视频| 亚洲黄页网在线观看| 国产精品久久久久高潮| 91精品国产91久久久久久吃药| 中文字幕精品一区久久久久| 97婷婷大伊香蕉精品视频| 欧美精品久久久久久久久久| 日韩精品在线观看一区二区| 欧美自拍视频在线| 亚洲免费小视频| 欧美亚洲日本网站| 2023亚洲男人天堂| 色琪琪综合男人的天堂aⅴ视频| 日韩高清电影免费观看完整| 日韩中文字幕视频在线| 欧美一区二区三区免费观看| 国产精品久久久久一区二区| 奇门遁甲1982国语版免费观看高清| 国产精品丝袜一区二区三区| 欧美有码在线观看| 久久久亚洲网站| 中日韩午夜理伦电影免费| 亚洲精品一区二区久| 国模精品视频一区二区| 日韩av黄色在线观看| 欧美精品videossex88| 在线观看亚洲视频| 欧美激情精品久久久久久蜜臀| 亚洲综合自拍一区| 国产精品久在线观看| 精品国内自产拍在线观看| 欧美性猛交xxxx黑人猛交| 中文字幕国产亚洲2019| 日韩av免费看网站| 亚洲一区二区久久久久久| 中文字幕欧美精品日韩中文字幕| 亚洲最大激情中文字幕| 国产日韩欧美一二三区| 久久成人综合视频| 亚洲香蕉av在线一区二区三区| 国产精品美乳一区二区免费| 欧美精品久久一区二区| 日韩在线观看你懂的| 国产日韩视频在线观看| 性欧美视频videos6一9| 欧美在线观看一区二区三区| 亚洲人成在线免费观看| 97精品一区二区视频在线观看| 亚洲精品日韩激情在线电影| 性欧美xxxx| 中文字幕精品国产| 狠狠躁夜夜躁久久躁别揉| 国产乱人伦真实精品视频| 日韩精品中文字幕视频在线| 久久97久久97精品免视看| 欧美在线视频一区二区| 日韩视频免费观看| 色天天综合狠狠色| 日韩福利视频在线观看| 91成人在线视频| 日本欧美中文字幕| 日本欧美爱爱爱| 亚洲区中文字幕| 亚洲精品美女网站| 国内精品国产三级国产在线专| 欧美日韩中文字幕在线视频| 亚洲免费影视第一页| 国产成人在线亚洲欧美| 国产精品亚发布| 欧美激情亚洲视频| 91精品久久久久久久久中文字幕| 久久伊人精品视频| 亚洲精品久久久久久久久久久| 成人h猎奇视频网站| 国产成人精品一区二区在线| 国产91在线视频| 亚洲精品国产综合区久久久久久久| 亚洲一级黄色av| 奇门遁甲1982国语版免费观看高清| 色综合色综合网色综合| 中文字幕国产亚洲2019| 精品亚洲一区二区三区在线观看| 一区二区三区视频在线| 亚洲欧美日韩在线高清直播| 最近2019中文字幕一页二页| 国产精品普通话| 国产精品欧美亚洲777777| 在线观看国产精品日韩av| 欧美成人午夜激情视频| 色综合亚洲精品激情狠狠| 日本精品免费观看| 午夜精品蜜臀一区二区三区免费| 国产亚洲精品久久久久久牛牛| 国产亚洲美女久久| 国产综合久久久久| 欧美日韩国产成人| 国产精品久久久久秋霞鲁丝| 国产欧美精品日韩| 日韩一级裸体免费视频| 超薄丝袜一区二区| 欧美激情综合亚洲一二区| 日韩av电影在线播放| 日韩av片永久免费网站| 热久久这里只有| 最近的2019中文字幕免费一页| 人人做人人澡人人爽欧美| 青草青草久热精品视频在线网站| 国产欧美一区二区三区在线| 欧美大片免费看| 久久久久久久一区二区三区| 日韩久久免费视频| 国产精品自产拍高潮在线观看| 亚洲国产精品电影在线观看| 欧美视频在线免费看| 日韩精品免费综合视频在线播放| 亚洲aa中文字幕| 欧美疯狂性受xxxxx另类| 91久热免费在线视频| 69国产精品成人在线播放| 91精品国产一区| 亚洲3p在线观看| 久久久影视精品| 国产午夜精品全部视频在线播放| 亚洲资源在线看| 亚洲精品动漫100p| 亚洲日本成人网| 日韩av资源在线播放| 精品自拍视频在线观看| 日韩av网址在线| 国产97免费视| 亚洲精品国产综合区久久久久久久| 久久精品视频中文字幕| 4438全国亚洲精品在线观看视频| 狠狠综合久久av一区二区小说| 欧美日韩国产中字| 一区二区三区回区在观看免费视频| 欧美精品成人在线| 欧美国产日韩免费| 亚洲一区二区三区四区视频| 欧美日韩一区二区三区| 日韩免费av片在线观看| 国产日韩欧美在线播放| 亚洲理论在线a中文字幕| 亚洲精品国产拍免费91在线| 2019亚洲日韩新视频| 久久精品中文字幕电影| 色爱av美腿丝袜综合粉嫩av| 欧洲永久精品大片ww免费漫画| 精品一区二区亚洲| 日韩在线观看免费| 亚洲91精品在线观看| 国产婷婷色综合av蜜臀av| 亚洲成色www8888| 成人写真福利网| 日韩精品在线播放| 精品网站999www| 超碰日本道色综合久久综合| 91精品久久久久久久久久另类|