浪货趴办公桌~H揉秘书电影无码|浪货趴办公桌~H揉秘书|辣妹子影院在线观看电视剧高清|狂C亲女含苞欲H|快穿做妓女好爽HNP|巜中字与上司出轨的人妻

0411-39943997
工作時間:周一至周日 8:30-17:30
技術(shù)文庫
Technical Library

小程序簡介及小程序技術(shù)發(fā)展史

標(biāo)簽:   訪問: 69292020-05-07

小程序簡介

小程序是一種全新的連接用戶與服務(wù)的方式,它可以在微信內(nèi)被便捷地獲取和傳播,同時具有出色的使用體驗(yàn)。

小程序技術(shù)發(fā)展史

小程序并非憑空冒出來的一個概念。當(dāng)微信中的 WebView 逐漸成為移動 Web 的一個重要入口時,微信就有相關(guān)的 JS API 了。

代碼清單1-1 使用 WeixinJSBridge 預(yù)覽圖片

WeixinJSBridge.invoke('imagePreview', {
    current: 'http://inews.gtimg.com/newsapp_bt/0/1693121381/641',
    urls: [ // 所有圖片的URL列表,數(shù)組格式
        'https://img1.gtimg.com/10/1048/104857/10485731_980x1200_0.jpg',
        'https://img1.gtimg.com/10/1048/104857/10485726_980x1200_0.jpg',
        'https://img1.gtimg.com/10/1048/104857/10485729_980x1200_0.jpg'
    ]}, function(res) {
    console.log(res.err_msg)})

代碼1-1是一個調(diào)用微信原生組件瀏覽圖片的JS API,相比于額外引入一個JS圖片預(yù)覽組件庫,這種調(diào)用方式顯得非常簡潔和高效。

實(shí)際上,微信官方是沒有對外暴露過如此調(diào)用的,此類 API 最初是提供給騰訊內(nèi)部一些業(yè)務(wù)使用,很多外部開發(fā)者發(fā)現(xiàn)了之后,依葫蘆畫瓢地使用了,逐漸成為微信中網(wǎng)頁的事實(shí)標(biāo)準(zhǔn)。2015年初,微信發(fā)布了一整套網(wǎng)頁開發(fā)工具包,稱之為 JS-SDK,開放了拍攝、錄音、語音識別、二維碼、地圖、支付、分享、卡券等幾十個API。給所有的 Web 開發(fā)者打開了一扇全新的窗戶,讓所有開發(fā)者都可以使用到微信的原生能力,去完成一些之前做不到或者難以做到的事情。

同樣是調(diào)用原生的瀏覽圖片,調(diào)用方式如代碼清單1-2所示。

代碼清單1-2 使用 JS-SDK 調(diào)用圖片預(yù)覽組件

wx.previewImage({
  current: 'https://img1.gtimg.com/10/1048/104857/10485726_980x1200_0.jpg',
  urls: [ // 所有圖片的URL列表,數(shù)組格式
    'https://img1.gtimg.com/10/1048/104857/10485731_980x1200_0.jpg',
    'https://img1.gtimg.com/10/1048/104857/10485726_980x1200_0.jpg',
    'https://img1.gtimg.com/10/1048/104857/10485729_980x1200_0.jpg'
  ],
  success: function(res) {
    console.log(res)
  }})

JS-SDK是對之前的 WeixinJSBridge 的一個包裝,以及新能力的釋放,并且由對內(nèi)開放轉(zhuǎn)為了對所有開發(fā)者開放,在很短的時間內(nèi)獲得了極大的關(guān)注。從數(shù)據(jù)監(jiān)控來看,絕大部分在微信內(nèi)傳播的移動網(wǎng)頁都使用到了相關(guān)的接口。

JS-SDK 解決了移動網(wǎng)頁能力不足的問題,通過暴露微信的接口使得 Web 開發(fā)者能夠擁有更多的能力,然而在更多的能力之外,JS-SDK 的模式并沒有解決使用移動網(wǎng)頁遇到的體驗(yàn)不良的問題。用戶在訪問網(wǎng)頁的時候,在瀏覽器開始顯示之前都會有一個的白屏過程,在移動端,受限于設(shè)備性能和網(wǎng)絡(luò)速度,白屏?xí)用黠@。我們團(tuán)隊(duì)把很多技術(shù)精力放置在如何幫助平臺上的Web開發(fā)者解決這個問題。因此我們設(shè)計了一個 JS-SDK 的增強(qiáng)版本,其中有一個重要的功能,稱之為“微信 Web 資源離線存儲”。

以下文字引用自內(nèi)部的文檔(沒有最終對外開放):

微信 Web 資源離線存儲是面向 Web 開發(fā)者提供的基于微信內(nèi)的 Web 加速方案。

通過使用微信離線存儲,Web 開發(fā)者可借助微信提供的資源存儲能力,直接從微信本地加載 Web 資源而不需要再從服務(wù)端拉取,從而減少網(wǎng)頁加載時間,為微信用戶提供更優(yōu)質(zhì)的網(wǎng)頁瀏覽體驗(yàn)。每個公眾號下所有 Web App 累計最多可緩存 5M 的資源。

這個設(shè)計有點(diǎn)類似 HTML5 的 Application Cache,但在設(shè)計上規(guī)避了一些 Application Cache的不足。

在內(nèi)部測試中,我們發(fā)現(xiàn) 離線存儲 能夠解決一些問題,但對于一些復(fù)雜的頁面依然會有白屏問題,例如頁面加載了大量的 CSS 或者是 JavaScript 文件。除了白屏,影響 Web 體驗(yàn)的問題還有缺少操作的反饋,主要表現(xiàn)在兩個方面:頁面切換的生硬和點(diǎn)擊的遲滯感。

微信面臨的問題是如何設(shè)計一個比較好的系統(tǒng),使得所有開發(fā)者在微信中都能獲得比較好的體驗(yàn)。這個問題是之前的 JS-SDK 所處理不了的,需要一個全新的系統(tǒng)來完成,它需要使得所有的開發(fā)者都能做到:

- 快速的加載

- 更強(qiáng)大的能力

- 原生的體驗(yàn)

- 易用且安全的微信數(shù)據(jù)開放

- 高效和簡單的開發(fā)

這就是小程序的由來。

小程序與普通網(wǎng)頁開發(fā)的區(qū)別

小程序的主要開發(fā)語言是 JavaScript ,小程序的開發(fā)同普通的網(wǎng)頁開發(fā)相比有很大的相似性。對于前端開發(fā)者而言,從網(wǎng)頁開發(fā)遷移到小程序的開發(fā)成本并不高,但是二者還是有些許區(qū)別的。

網(wǎng)頁開發(fā)渲染線程和腳本線程是互斥的,這也是為什么長時間的腳本運(yùn)行可能會導(dǎo)致頁面失去響應(yīng),而在小程序中,二者是分開的,分別運(yùn)行在不同的線程中。網(wǎng)頁開發(fā)者可以使用到各種瀏覽器暴露出來的 DOM API,進(jìn)行 DOM 選中和操作。而如上文所述,小程序的邏輯層和渲染層是分開的,邏輯層運(yùn)行在 JSCore 中,并沒有一個完整瀏覽器對象,因而缺少相關(guān)的DOM API和BOM API。這一區(qū)別導(dǎo)致了前端開發(fā)非常熟悉的一些庫,例如 jQuery、 Zepto 等,在小程序中是無法運(yùn)行的。同時 JSCore 的環(huán)境同 NodeJS 環(huán)境也是不盡相同,所以一些 NPM 的包在小程序中也是無法運(yùn)行的。

網(wǎng)頁開發(fā)者需要面對的環(huán)境是各式各樣的瀏覽器,PC 端需要面對 IE、Chrome、QQ瀏覽器等,在移動端需要面對Safari、Chrome以及 iOS、Android 系統(tǒng)中的各式 WebView 。而小程序開發(fā)過程中需要面對的是兩大操作系統(tǒng) iOS 和 Android 的微信客戶端,以及用于輔助開發(fā)的小程序開發(fā)者工具,小程序中三大運(yùn)行環(huán)境也是有所區(qū)別的,如表1-1所示。

表1-1 小程序的運(yùn)行環(huán)境

運(yùn)行環(huán)境邏輯層渲染層
iOSJavaScriptCoreWKWebView
安卓V8chromium定制內(nèi)核
小程序開發(fā)者工具NWJSChrome WebView

網(wǎng)頁開發(fā)者在開發(fā)網(wǎng)頁的時候,只需要使用到瀏覽器,并且搭配上一些輔助工具或者編輯器即可。小程序的開發(fā)則有所不同,需要經(jīng)過申請小程序帳號、安裝小程序開發(fā)者工具、配置項(xiàng)目等等過程方可完成。

體驗(yàn)小程序

開發(fā)者可使用微信客戶端(6.7.2 及以上版本)掃碼下方小程序碼,體驗(yàn)小程序。

Copyright? 2020 仟億科技,All rights reserved.
联系我们: 凤山县| 泸州市| 嘉黎县| 页游| 固阳县| 丰城市| 兴海县| 建宁县| 华坪县| 界首市| 金塔县| 莱阳市| 历史| 淳安县| 吉林市| 桐乡市| 麦盖提县| 五台县| 井冈山市| 西盟| 榆中县| 福泉市| 朝阳县| 荣昌县| 马尔康县| 确山县| 密山市| 新宾| 新泰市| 西华县| 筠连县| 泾阳县| 子长县| 乳山市| 星座| 茶陵县| 防城港市| 南召县| 宣武区| 汝城县| 错那县|