青青草国产精品视频,亚洲一区二区三区四区在线观看,国产精品1234区,日本黄色一级

有了微信公眾號(hào)為什么還要做微信小程序呢?

善微科技 2017 08月16日 發(fā)布

有人說(shuō)小程序是原生應(yīng)用,不知道是現(xiàn)在什么立場(chǎng)這樣說(shuō)的,微信內(nèi)嵌web view 控件,本質(zhì)上就是一個(gè)定制化的web瀏覽器,與普通瀏覽器相比只是增加了一些豐富的內(nèi)部交互,比如可以輕松用戶信息等等,雖然站在前端的角度,小程序和H5應(yīng)用有一點(diǎn)區(qū)別,但是虛擬機(jī)永遠(yuǎn)是虛擬機(jī),跟原生永遠(yuǎn)差了一個(gè)解釋執(zhí)行的鴻溝。還提到了自更新,只要你是基于HTTP協(xié)議的那就是古老的HTTP REQUEST 和 RESPONSE方式,沒(méi)有什么值得吹捧的。如果答主稍微對(duì)Native了解深一點(diǎn),可能就會(huì)拿application stream來(lái)說(shuō)了,這才是目前解決Native程序分發(fā)方式的一大方向,ctrix 有application 虛擬化,Google有dynamrio,微軟有drawbridge,這些技術(shù)含量可比react或者codepush技術(shù)含量高多了。一個(gè)是接近OS級(jí)別的革新,一個(gè)是虛擬機(jī)里面的優(yōu)化,層次高低,技術(shù)深度不言自明。虛擬機(jī)永遠(yuǎn)是虛擬機(jī),玩不出花來(lái)。不過(guò)如今的CPU架構(gòu)也是發(fā)展了幾十年而沒(méi)有大的改變,這也制約了native程序的基本運(yùn)行原理。-----------------技術(shù)上沒(méi)什么區(qū)別,但是在意義上小程序是騰訊實(shí)現(xiàn)“成為互聯(lián)網(wǎng)的水和電”這一企業(yè)愿景的堅(jiān)實(shí)而正確的一步。很普通的技術(shù),但是放到騰訊的平臺(tái)中,都可以因?yàn)榱孔円鹳|(zhì)變。比如公眾號(hào),其實(shí)就是增加了主動(dòng)Push的RSS訂閱一樣的技術(shù)。應(yīng)該沒(méi)有什么下載不下載,最多是給你在手機(jī)桌面添加一個(gè)自定義scheme的hyper link的快捷方式,打開(kāi)以后也是直接切換到微信內(nèi)置的Webview控件。


 

首先明確幾個(gè)概念:

Runtime,運(yùn)行時(shí)環(huán)境。

所謂 runtime 就是能夠運(yùn)行我們寫(xiě)的代碼的代碼。說(shuō)來(lái)很繞,理解起來(lái)很簡(jiǎn)單——我們寫(xiě)的代碼是要運(yùn)行在一個(gè)特定的環(huán)境中的,這個(gè)環(huán)境負(fù)責(zé)具體執(zhí)行代碼所表示的指令,也就是說(shuō)代碼最終能有什么樣的能力、能實(shí)現(xiàn)什么樣的效果,不取決于怎么寫(xiě),而取決于 runtime 怎么理解和執(zhí)行。

比如,你用 console.log('Hello World'); 想在控制臺(tái)里輸出「Hello World」,如果 runtime 就是要把「Hello World」轉(zhuǎn)換成「Vote for Trump」你也沒(méi)有任何辦法。HTML,特指符合 W3C HTML Specification 的標(biāo)記語(yǔ)言,包括 4.01、5、5.1 等等眾多版本。并不是用「< 」和「>」符號(hào)包起來(lái)的就都叫 HTML,比如 <吃飯></吃飯>。CSS,特指符合 W3C Cascading Style Sheets Specification 的樣式描述語(yǔ)言,包括 Level 1、2、3、4 等眾多版本。網(wǎng)頁(yè)技術(shù)、web 技術(shù)——隨便怎么叫,特指用 JavaScript、HTML、CSS 幾種技術(shù)構(gòu)建應(yīng)用,最終運(yùn)行在「瀏覽器」這個(gè)特定 runtime 中的技術(shù)。瀏覽器(中的 JavaScript 引擎)和 Node.js(中的 JavaScript 引擎) 都只是 runtime 的一種——它們決定了我們的 JavaScript 代碼能做什么,有什么樣的能力供我們使用。window.alert('Hello World') 就只有瀏覽器能理解,同樣 require('fs').readFile('/'); 也只有 Node.js 能明白是什么意思。微信小程序是眾多實(shí)現(xiàn)了 JavaScript(MAYA、3DS MAX、Nginx 以及某些游戲引擎也有) runtime 的環(huán)境中的一種。瀏覽器作為一個(gè) runtime 的另一個(gè)重要特點(diǎn)是有 UI 繪制和用戶交互行為的捕獲能力——(曾經(jīng))只有瀏覽器能識(shí)別用 HTML 和 CSS 描述的 UI 結(jié)構(gòu)和樣式,并捕獲用戶的輸入傳遞給 JavaScript 進(jìn)行相應(yīng)的處理。小程序也有 UI 繪制和用戶交互行為的捕獲能力,但嚴(yán)格來(lái)講,它并不能識(shí)別 HTML 和 CSS,對(duì)應(yīng)的,它使用 WXML 和 WXSS 兩種標(biāo)準(zhǔn)來(lái)解釋標(biāo)記語(yǔ)言和樣式描述,而標(biāo)準(zhǔn)由微信小程序自己制定。HTML 和 WXML 有交集、CSS 和 WXSS 有交集,但他們是不同的。Runtime 能理解我們寫(xiě)的標(biāo)記語(yǔ)言、樣式描述和業(yè)務(wù)代碼了,接下來(lái)需要去執(zhí)行它們。而問(wèn)題里提到的當(dāng)年 Facebook 的客戶端,使用的是 Hybrid 解決方案——就是在平臺(tái)原生應(yīng)用的外殼里嵌入一個(gè) webview,它能提供基于 HTML、CSS 和 JavaScript 這些技術(shù)構(gòu)建的應(yīng)用所需的 runtime,因?yàn)樗鋵?shí)就是一個(gè)閹割的瀏覽器,不提供前進(jìn)后退按鈕、書(shū)簽管理等等,只提供運(yùn)行環(huán)境和繪制 UI 的能力。Hybrid 解決方案繼承了所有 web 技術(shù)的優(yōu)點(diǎn)——跨平臺(tái)、易維護(hù)、易部署和開(kāi)發(fā)成本低等,同時(shí)也繼承了所有缺點(diǎn),而其中最為人詬病的缺點(diǎn)就是——安裝包體積大(由于兼容性問(wèn)題,很多應(yīng)用不想使用用戶設(shè)備自帶的瀏覽器環(huán)境,而選擇打包一個(gè)瀏覽器核心在自己安裝包里),以及 UI 繪制效率低。嚴(yán)格來(lái)講,所有最終放棄 Hybrid 解決方案的公司,都不是由于過(guò)分相信 HTML 5 和 JavaScript,而是對(duì)移動(dòng)設(shè)備上的瀏覽器的核心部分(webview)的性能,特別是 UI 繪制性能,過(guò)分樂(lè)觀了。時(shí)間推移到 2015 年前后,開(kāi)始出現(xiàn)了以 ReactNative 和 Weex 等技術(shù)方案為代表的新型技術(shù)解決方案,而小程序單純從技術(shù)實(shí)現(xiàn)角度來(lái)講,同這些技術(shù)方案差異不大——提供 JavaScript 的 runtime,用某種同 HTML 相似的結(jié)構(gòu)化標(biāo)簽語(yǔ)言來(lái)描述 UI 結(jié)構(gòu),用某種類似 CSS 的語(yǔ)言來(lái)描述 UI 樣式,然后將這些代碼直接繪制為原生 UI。這個(gè)過(guò)程中已經(jīng)沒(méi)有 webview 什么事情了,所以微信小程序并不是我們平時(shí)所說(shuō)的 web 技術(shù),他們只是使用一樣或類似的語(yǔ)言而已(總不能說(shuō)在 MAYA 里寫(xiě) JavaScript 腳本也叫 web 開(kāi)發(fā)吧?)。客戶端開(kāi)發(fā)的核心是通過(guò) runtime 來(lái)調(diào)度和控制 runtime 之下的平臺(tái)能力,瀏覽器這個(gè) runtime 下面的平臺(tái)是操作系統(tǒng)(Windows、macOS、iOS、Android、*nix 等),而小程序這個(gè) runtime 下面的平臺(tái)是微信,這是二者的本質(zhì)區(qū)別。再說(shuō)下載。以前,網(wǎng)頁(yè)的所有內(nèi)容必須要先下載再執(zhí)行,而近些年瀏覽器提供了離線緩存的相關(guān)功能,讓網(wǎng)頁(yè)應(yīng)用的非數(shù)據(jù)部分可以離線使用,但這樣會(huì)把問(wèn)題復(fù)雜度直接拉成指數(shù)級(jí)提升——以前默認(rèn)所有東西都要連網(wǎng)才能使用,現(xiàn)在要區(qū)分哪些可以連、哪些必須連、連上怎么處理、連不上怎么處理、要緩存的話緩存策略怎么設(shè)置,產(chǎn)品和技術(shù)上面臨的問(wèn)題都太多,收益也未必有多大,如果離線使用是剛需還不如索性直接做 app,所以瀏覽器內(nèi)的離線應(yīng)用發(fā)展一直不溫不火,但如果你真心想做,還是可以實(shí)現(xiàn)首次下載后再次使用速度得到質(zhì)的提升的。所以問(wèn)題描述的慢,下載慢并不是癥結(jié),UI 繪制慢、交互響應(yīng)慢(得益于 JavaScript 引擎本身的性能提升,連 JavaScript 執(zhí)行都不是瓶頸了,但占用 UI 線程導(dǎo)致整體卡頓是另外一個(gè)話題)才是根本問(wèn)題,而這是瀏覽器本身的實(shí)現(xiàn)原理導(dǎo)致的。小程序也需要在首次加載的時(shí)候把應(yīng)用相關(guān)的代碼(當(dāng)然資源大小可能有差異)下載下來(lái),這同網(wǎng)頁(yè)沒(méi)區(qū)別,而性能的提升體現(xiàn)在后面同 UI 相關(guān)的效率上,從這個(gè)角度講也不是什么新鮮事兒了,ReactNative、Weex 都是類似的原理和訴求。

所以需不需要下載,并不是兩種技術(shù)之間相比在性能上的主要差異。小程序的價(jià)值不是在技術(shù)上,而是在能否通過(guò)它來(lái) leverage 整個(gè)微信生態(tài)及附屬其上的相關(guān)資源。這就要涉及到小程序作為 runtime 到底給接入商提供什么樣的能力、多大程度的把微信生態(tài)的資源暴露給開(kāi)發(fā)者、入口位置、限制上等等,這就取決于微信自己的生態(tài)策略了。瀏覽器作為開(kāi)放標(biāo)準(zhǔn)的中立技術(shù),廠商對(duì)生態(tài)的控制其實(shí)非常有限,因?yàn)榇蠹也幌Mヂ?lián)網(wǎng)的入口被某一家商業(yè)公司所完全掌控,這是為什么當(dāng)年微軟選擇在操作系統(tǒng)捆綁 IE,也是為什么會(huì)被起訴壟斷。作為開(kāi)發(fā)者,(大多數(shù)情況下)不需要考慮用戶用什么瀏覽器,因?yàn)楦髌放频臑g覽器(通常情況下)遵循同樣的標(biāo)準(zhǔn)。過(guò)去十幾年不停有公司想基于瀏覽器做封閉的生態(tài)和標(biāo)準(zhǔn),比較成功的也就只有 UC 一家了,但是大家可以問(wèn)下作為 web 開(kāi)發(fā)者對(duì) UC 瀏覽器的平價(jià)是如何的 =。=...強(qiáng)化微信的「入口」能力才是小程序的野心。入口就是個(gè)門,既然是門就是雙向的——作為用戶,從什么途徑獲取到我需要的信息/服務(wù)(從哪扇門進(jìn)去?)?作為內(nèi)容/服務(wù)提供商,從什么途徑能夠接觸到我的目標(biāo)和潛在用戶(在哪扇門后等候或者直接出去?)?

目前從官方發(fā)布的信息來(lái)看,微信描繪的圖景對(duì)于用戶確實(shí)還是很美好的,裝了微信,掃下二維碼就可以方便的交水電費(fèi);而對(duì)于服務(wù)商,現(xiàn)在還看不到太多的好處,沒(méi)有高曝光的入口,不能推送等等,直接限制了服務(wù)商 touch 用戶的能力,但如果你天然是個(gè)自帶流量的大 V 服務(wù)商,小程序能提高現(xiàn)有流量在某些場(chǎng)景(現(xiàn)在看線下可能是主要)的轉(zhuǎn)化率,則是能馬上實(shí)現(xiàn)的,但想從微信的生態(tài)拿流量可能就沒(méi)那么簡(jiǎn)單,微信成貔貅把大 V 流量都轉(zhuǎn)化成自己的倒是很有可能。有微信全球 7 億月活的用戶(2015 年底數(shù)據(jù))資源,至于是不是基于所謂的 web 技術(shù)來(lái)實(shí)現(xiàn),who cares?

=========補(bǔ)充一下關(guān)于小程序最終使用 webview 渲染的事情。目前的小程序最終還是使用 webview 渲染,這是之前表述不嚴(yán)謹(jǐn)?shù)牡胤健6宜f(shuō)的 runtime 差異,是指開(kāi)發(fā)者的運(yùn)行環(huán)境依賴于什么。小程序的環(huán)境,就是開(kāi)發(fā)者所能接觸到的最底層環(huán)境,開(kāi)發(fā)者只依賴小程序給大家提供的環(huán)境。而這個(gè)環(huán)境再下層如何處理,并不受開(kāi)發(fā)者控制,也沒(méi)有任何辦法 access,這意味小程序的開(kāi)發(fā)并不依賴 webview,開(kāi)發(fā)的目標(biāo)平臺(tái)也不是 webview。

這樣實(shí)現(xiàn)的原因,可能有很多,比如綜合考量研發(fā)成本和收益、最大化利用現(xiàn)有技術(shù)等等。而可能性同樣很多,比如他可以隨時(shí)把渲染換成原生 UI,而不需要現(xiàn)有的接入商做任何調(diào)整。無(wú)論開(kāi)發(fā)體驗(yàn)多像瀏覽器,它都不是瀏覽器,即使它現(xiàn)在最終使用 webview 來(lái)渲染,開(kāi)發(fā)者同這個(gè) webview 中間還是有個(gè)中間件的,就像你不能說(shuō)我在一個(gè)跑在 Windows 上的瀏覽器里做 web 開(kāi)發(fā)就是在做 Windows 開(kāi)發(fā)一樣。它是微信自己規(guī)定的一個(gè)新環(huán)境,只能同微信允許訪問(wèn)的資源互動(dòng)。

二十幾年 web 開(kāi)發(fā)所積累的經(jīng)驗(yàn),能復(fù)用到其中的除了語(yǔ)言層面之外,并不多,當(dāng)然目前它的復(fù)雜度也不高。只要它定義好的 API、標(biāo)準(zhǔn)不變,作為 runtime 如何理解、執(zhí)行就同開(kāi)發(fā)者無(wú)關(guān),更重要的是我們無(wú)法控制。WXML 轉(zhuǎn)成 HTML 再給 webview 渲染,這是 runtime 的行為,對(duì)開(kāi)發(fā)者是透明的。

某個(gè)版本如果把 WXML 直接繪制成原生 UI 了,他不說(shuō)用戶和開(kāi)發(fā)者可能都是無(wú)法感知的事情。


如沒(méi)特殊注明,文章均為善微網(wǎng)絡(luò)原創(chuàng),轉(zhuǎn)載請(qǐng)注明來(lái)自http://www.tianfbx.com/news/378.html
相關(guān)標(biāo)簽
相關(guān)新聞

湖南省文化和旅游廳2024年湖南文化旅游主流媒體及商業(yè)門戶網(wǎng)站推廣傳播項(xiàng)目公開(kāi)招標(biāo)公告

湖南省文化和旅游廳 的2024年湖南文化旅游主流媒體及商業(yè)門戶網(wǎng)站推廣傳播 進(jìn)行...

日期:2024-10-17 瀏覽次數(shù):1274

搬家下單小程序開(kāi)發(fā)方案

搬家下單小程序旨在為用戶提供一站式搬家服務(wù)解決方案。它將搬家過(guò)程中的各項(xiàng)服務(wù)整合...

日期:2023-11-27 瀏覽次數(shù):90030

產(chǎn)品設(shè)計(jì)師從哪里獲得靈感?

學(xué)習(xí)設(shè)計(jì)酷炫的東西來(lái)給人們留下深刻印象的工具很容易。 ...

日期:2023-10-14 瀏覽次數(shù):95040

長(zhǎng)沙宇立電氣有限公司官網(wǎng)上線

長(zhǎng)沙宇立電氣有限公司是專業(yè)開(kāi)發(fā)工業(yè)自動(dòng)化控制系統(tǒng)、過(guò)程控制儀表以及機(jī)電一體化產(chǎn)品...

日期:2023-10-14 瀏覽次數(shù):94882

DragGAN:人工智能驅(qū)動(dòng)的圖像編輯工具,讓編輯圖像變得簡(jiǎn)單

DragGAN 是馬克斯普朗克研究所開(kāi)發(fā)的一種新的 AI 工具,允許用戶通過(guò)幾次...

日期:2023-05-24 瀏覽次數(shù):203202

?