亚洲欧美黑人深猛交群,国产一级a毛一级a看免费视频,日韩电影在线观看免费观看完整版,91久久国产成人免费观看资源

有了微信公眾號為什么還要做微信小程序呢?

善微科技 2017 08月16日 發布

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


 

首先明確幾個概念:

Runtime,運行時環境。

所謂 runtime 就是能夠運行我們寫的代碼的代碼。說來很繞,理解起來很簡單——我們寫的代碼是要運行在一個特定的環境中的,這個環境負責具體執行代碼所表示的指令,也就是說代碼最終能有什么樣的能力、能實現什么樣的效果,不取決于怎么寫,而取決于 runtime 怎么理解和執行。

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

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

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

=========補充一下關于小程序最終使用 webview 渲染的事情。目前的小程序最終還是使用 webview 渲染,這是之前表述不嚴謹的地方。而我所說的 runtime 差異,是指開發者的運行環境依賴于什么。小程序的環境,就是開發者所能接觸到的最底層環境,開發者只依賴小程序給大家提供的環境。而這個環境再下層如何處理,并不受開發者控制,也沒有任何辦法 access,這意味小程序的開發并不依賴 webview,開發的目標平臺也不是 webview。

這樣實現的原因,可能有很多,比如綜合考量研發成本和收益、最大化利用現有技術等等。而可能性同樣很多,比如他可以隨時把渲染換成原生 UI,而不需要現有的接入商做任何調整。無論開發體驗多像瀏覽器,它都不是瀏覽器,即使它現在最終使用 webview 來渲染,開發者同這個 webview 中間還是有個中間件的,就像你不能說我在一個跑在 Windows 上的瀏覽器里做 web 開發就是在做 Windows 開發一樣。它是微信自己規定的一個新環境,只能同微信允許訪問的資源互動。

二十幾年 web 開發所積累的經驗,能復用到其中的除了語言層面之外,并不多,當然目前它的復雜度也不高。只要它定義好的 API、標準不變,作為 runtime 如何理解、執行就同開發者無關,更重要的是我們無法控制。WXML 轉成 HTML 再給 webview 渲染,這是 runtime 的行為,對開發者是透明的。

某個版本如果把 WXML 直接繪制成原生 UI 了,他不說用戶和開發者可能都是無法感知的事情。


如沒特殊注明,文章均為善微網絡原創,轉載請注明來自http://www.kunming3.com/news/378.html