国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

使用Vue.js開發微信小程序開源框架mpvue解析

來源:懂視網 責編:小采 時間:2020-11-27 19:46:04
文檔

使用Vue.js開發微信小程序開源框架mpvue解析

使用Vue.js開發微信小程序開源框架mpvue解析:這篇文章主要介紹了使用Vue.js開發微信小程序開源框架mpvue解析,現在分享給大家,也給大家做個參考。前言mpvue是一款使用Vue.js開發微信小程序的前端框架。使用此框架,開發者將得到完整的 Vue.js 開發體驗,同時為H5和小程序提供了代碼復用的能力。如果想將
推薦度:
導讀使用Vue.js開發微信小程序開源框架mpvue解析:這篇文章主要介紹了使用Vue.js開發微信小程序開源框架mpvue解析,現在分享給大家,也給大家做個參考。前言mpvue是一款使用Vue.js開發微信小程序的前端框架。使用此框架,開發者將得到完整的 Vue.js 開發體驗,同時為H5和小程序提供了代碼復用的能力。如果想將
這篇文章主要介紹了使用Vue.js開發微信小程序開源框架mpvue解析,現在分享給大家,也給大家做個參考。

前言

mpvue是一款使用Vue.js開發微信小程序的前端框架。使用此框架,開發者將得到完整的 Vue.js 開發體驗,同時為H5和小程序提供了代碼復用的能力。如果想將 H5 項目改造為小程序,或開發小程序后希望將其轉換為H5,mpvue將是十分契合的一種解決方案。

目前,mpvue已經在美團點評多個實際業務項目中得到了驗證,因此我們決定將其開源,希望更多技術同行一起開發,應用到更廣泛的場景里去。github項目地址請參見mpvue 。使用文檔請參見 http://mpvue.com/。

為了幫助大家更好的理解mpvue的架構,接下來我們來解析框架的設計和實現思路。文中主要內容已經發表在《程序員》雜志2017年第9期小程序專題封面報道,內容略有修改。

小程序開發特點

微信小程序推薦簡潔的開發方式,通過多頁面聚合完成輕量的產品功能。小程序以離線包方式下載到本地,通過微信客戶端載入和啟動,開發規范簡潔,技術封裝徹底,自成開發體系,有Native和H5的影子,但又絕不雷同。

小程序本身定位為一個簡單的邏輯視圖層框架,官方并不推薦用來開發復雜應用,但業務需求卻難以做到精簡。復雜的應用對開發方式有較高的要求,如組件和模塊化、自動構建和集成、代碼復用和開發效率等,但小程序開發規范較大的限制了這部分能力。為了解決上述問題,提供更好的開發體驗,我們創造了mpvue,通過使用Vue.js來開發微信小程序。

mpvue是什么

mpvue是一套定位于開發小程序的前端開發框架,其核心目標是提高開發效率,增強開發體驗。使用該框架,開發者只需初步了解小程序開發規范、熟悉Vue.js基本語法即可上手。框架提供了完整的 Vue.js 開發體驗,開發者編寫Vue.js代碼,mpvue 將其解析轉換為小程序并確保其正確運行。此外,框架還通過 vue-cli 工具向開發者提供quick start 示例代碼,開發者只需執行一條簡單命令,即可獲得可運行的項目。

為什么做mpvue

在小程序內測之初,我們計劃快速迭代出一款對標 H5 的產品實現,核心訴求是:快速實現、代碼復用、低成本和高效率… 隨后經歷了多個小程序建設,結合業務場景、技術選型和小程序開發方式,我們整理匯總出了開發階段面臨的主要問題:

  1. 組件化機制不夠完善

  2. 代碼多端復用能力欠缺

  3. 小程序框架和團隊技術棧無法有機結合

  4. 小程序學習成本不夠低

組件機制:小程序邏輯和視圖層代碼彼此分離,公共組件提取后無法聚合為單文件入口,組件需分別在視圖層和邏輯層引入,維護性差;組件無命名空間機制,事件回調必須設置為全局函數,組件設計有命名沖突的風險,數據封裝不強。開發者需要友好的代碼組織方式,通過 ES 模塊一次性導入;組件數據有良好的封裝。成熟的組件機制,對工程化開發至關重要。

多端復用:常見的業務場景有兩類,通過已有 H5 產品改造為小程序應用或反之。從效率角度出發,開發者希望通過復用代碼完成開發,但小程序開發框架卻無法做到。我們嘗試過通過靜態代碼分析將 H5 代碼轉換為小程序,但只做了視圖層轉換,無法帶來更多收益。多端代碼復用需要更成熟的解決方案。

引入 Vue.js:小程序開發方式與 H5 近似,因此我們考慮和 H5 做代碼復用。沿襲團隊技術棧選型,我們將 Vue.js 確定為小程序開發規范。使用 Vue.js 開發小程序,將直接帶來如下開發效率提升:

  1. H5 代碼可以通過最小修改復用到小程序

  2. 使用 Vue.js 組件機制開發小程序,可實現小程序和 H5 組件復用

  3. 技術棧統一后小程序學習成本降低,開發者從 H5 轉換到小程序不需要更多學習

  4. Vue.js 代碼可以讓所有前端直接參與開發維護

為什么是 Vue.js?這取決于團隊技術棧選型,引入新的選型與統一技術棧和提高開發效率相悖,有違開發工具服務業務的初衷。

mpvue 的演進

mpvue的形成,來源于業務場景和需求,最終方案的確定,經歷了三個階段。

第一階段:我們實現了一個視圖層代碼轉換工具,旨在提高代碼首次開發效率。通過將H5視圖層代碼轉換為小程序代碼,包括 HTML 標簽映射、Vue.js 模板和樣式轉換,在此目標代碼上進行二次開發。我們做到了有限的代碼復用,但組件化開發和小程序學習成本并未得到有效改善。

第二階段:我們著眼于完善代碼組件化機制。參照 Vue.js 組件規范設計了代碼組織形式,通過代碼轉換工具將代碼解析為小程序。轉換工具主要解決組件間數據同步、生命周期關聯和命名空間問題。最終我們實現了一個 Vue.js 語法子集,但想要實現更多特性或跟隨 Vue.js 版本迭代,工作量變得難以估計,有永無止境之感。

第三階段:我們的目標是實現對 Vue.js 語法全集的支持,達到使用 Vue.js 開發小程序的目的。并通過引入 Vue.js runtime 實現了對 Vue.js 語法的支持,從而避免了人肉語法適配。至此,我們完成了使用 Vue.js 開發小程序的目的。較好地實現了技術棧統一、組件化開發、多端代碼復用、降低學習成本和提高開發效率的目標。

mpvue設計思路

Vue.js 和小程序都是典型的邏輯視圖層框架,邏輯層和視圖層之間的工作方式為:數據變更驅動視圖更新;視圖交互觸發事件,事件響應函數修改數據再次觸發視圖更新,如圖1所示。

圖1: 小程序實現原理

鑒于 Vue.js 和小程序一致的工作原理,我們思考將小程序的功能托管給 Vue.js,在正確的時機將數據變更同步到小程序,從而達到開發小程序的目的。這樣,我們可以將精力聚焦在 Vue.js 上,參照 Vue.js 編寫與之對應的小程序代碼,小程序負責視圖層展示,所有業務邏輯收斂到 Vue.js 中,Vue.js 數據變更后同步到小程序,如圖2所示。如此一來,我們就獲得了以 Vue.js 的方式開發小程序的能力。

Vue代碼
- 將小程序頁面編寫為 Vue.js 實現
- 以 Vue.js 開發規范實現父子組件關聯

小程序代碼
- 以小程序開發規范編寫視圖層模板
- 配置生命周期函數,關聯數據更新調用
- 將 Vue.js 數據映射為小程序數據模型

并在此基礎上,附加如下機制
- Vue.js 實例與小程序 Page 實例建立關聯
- 小程序和 Vue.js 生命周期建立映射關系,能在小程序生命周期中觸發 Vue.js 生命周期
- 小程序事件建立代理機制,在事件代理函數中觸發與之對應的 Vue.js 組件事件響應

這套機制總結起來非常簡單,但實現卻相當復雜。在揭秘具體實現之前,讀者可能會有這樣一些疑問:

  1. 要同時維護 Vue.js 和小程序,是否需要寫兩個版本的代碼實現?

  2. 小程序負責視圖層展現,Vue.js的視圖層是否還需要,如果不需要應該如何處理?

  3. 生命周期如何打通,數據同步更新如何實現?

上述問題包含了 mpvue 框架的核心內容,下文將仔細為你道來。首先,mpvue 為提高效率而生,本身提供了自動生成小程序代碼的能力,小程序代碼根據 Vue.js 代碼構建得到,并不需要同時開發兩套代碼。

Vue.js 視圖層渲染由 render 方法完成,同時在內存中維護著一份虛擬 DOM,mpvue 無需使用 Vue.js 完成視圖層渲染,因此我們改造了 render 方法,禁止視圖層渲染。熟悉源代碼的讀者,都知道 Vue runtime 有多個平臺的實現,除了我們常見的 Web 平臺,還有 Weex。從現在開始,我們增加了新的平臺 mpvue。

生命周期關聯:生命周期和數據同步是 mpvue 框架的靈魂,Vue.js 和小程序的數據彼此隔離,各自有不同的更新機制。mpvue 從生命周期和事件回調函數切入,在 Vue.js 觸發數據更新時實現數據同步。小程序通過視圖層呈現給用戶、通過事件響應用戶交互,Vue.js 在后臺維護著數據變更和邏輯。可以看到,數據更新發端于小程序,處理自 Vue.js,Vue.js 數據變更后再同步到小程序。為實現數據同步,mpvue 修改了 Vue.js runtime 實現,在 Vue.js 的生命周期中增加了更新小程序數據的邏輯。

事件代理機制:用戶交互觸發的數據更新通過事件代理機制完成。在 Vue.js 代碼中,事件響應函數對應到組件的 method, Vue.js 自動維護了上下文環境。然而在小程序中并沒有類似的機制,又因為 Vue.js 執行環境中維護著一份實時的虛擬 DOM,這與小程序的視圖層完全對應,我們思考,在小程序組件節點上觸發事件后,只要找到虛擬 DOM 上對應的節點,觸發對應的事件不就完成了么;另一方面,Vue.js 事件響應如果觸發了數據更新,其生命周期函數更新將自動觸發,在此函數上同步更新小程序數據,數據同步也就實現了。

mpvue如何使用

mpvue框架本身由多個npm模塊構成,入口模塊已經處理好依賴關系,開發者只需要執行如下代碼即可完成本地項目創建。

# 安裝 vue-cli
$ npm install --global vue-cli
# 根據模板項目創建本地項目,目前為內網地址
$ vue init ‘bitbucket:xxx.meituan. com:hfe/mpvue-quickstart' --clone my- project
# 安裝依賴和啟動自動構建
$ cd my-project
$ npm install
$ npm run dev

執行完上述命令,在當前項目的 dist 子目錄將構建出小程序目標代碼,使用小程序開發者工具載入 dist 目錄即可啟動本地調試和預覽。示例項目遵循 Vue.js 模板項目規范,通過Vue.js 命令行工具vue-cli創建。代碼組織形式與 Vue.js 官方實例保持一致,我們為小程序定制了 Vue.js runtime 和 webpack 加載器,此部分依賴也已經內置到項目中。

針對小程序開發中常見的兩類代碼復用場景,mpvue 框架為開發者提供了解決思路和技術支持,開發者只需要在此指導下進行項目配置和改造。我們內部實踐了一個將 H5 轉換為小程序的項目,下圖為使用 mpvue 框架的轉換效果:

圖3: H5 和小程序轉換效果

將小程序轉換為H5:直接使用 Vue.js 規范開發小程序,代碼本身與H5并無不同,具體代碼差異會集中在平臺 Api 部分。此外并不需明顯改動,改造主要分如下幾部分:

  1. 將小程序平臺的 Vue.js 框架替換為標準 Vue.js

  2. 將小程序平臺的 vue-loader 加載器替換為標準 vue-loader

  3. 適配和改造小程序與 H5 的底層 Api 差異

將H5轉換為小程序:已經使用 Vue.js 開發完 H5,我們需要做的事情如下:

  1. 將標準 Vue.js 替換為小程序平臺的 Vue.js 框架

  2. 將標準 vue-loader 加載器替換為小程序平臺的 vue-loader

  3. 適配和改造小程序與 H5 的底層 Api 差異

根據小程序開發平臺提供的能力,我們最大程度的支持了 Vue.js 語法特性,但部分功能現階段暫時尚未實現。

表1: mpvue 暫不支持的語法特性

項目轉換注意事項:框架的目標是將小程序和 H5 的開發方式通過 Vue.js 建立關聯,達到最大程度的代碼復用。但由于平臺差異的客觀存在(主要集中在實現機制、底層Api 能力差異),我們無法做到代碼 100% 復用,平臺差異部分的改造成本無法避免。對于代碼復用的場景,開發者需要重點思考如下問題并做好準備:

  1. 盡量使用平臺無的語法特性,這部分特性無需轉換和適配成本

  2. 避免使用不支持的語法特性,譬如 slot, filter 等,降低改造成本

  3. 如果使用特定平臺 Api ,考慮抽象好適配層接口,通過切換底層實現完成平臺轉換

mpvue 最佳實踐

在表2中,我們對微信小程序、mpvue、WePY 這三個開發框架的主要能力和特點做了橫向對比,幫助大家了解不同框架的側重點,結合業務場景和開發習慣,確定技術方案。對于如何更好地使用 mpvue 進行小程序開發,我們總結了一些最佳實踐。

  1. 使用 vue-cli 命令行工具創建項目,使用Vue 2.x 的語法規范進行開發

  2. 避免使用框架不支持的語法特性,部分 Vue.js語法在小程序中無法使用,盡量使用 mpvue 和 Vue.js 共有特性

  3. 合理設計數據模型,對數據的更新和操作做到細粒度控制,避免性能問題

  4. 合理使用組件化開發小程序,提高代碼復用率

表2: 框架使用特點對比

結語

mpvue 框架已經在業務項目中得到實踐和驗證,目前正在美團點評內部大范圍使用。mpvue 來源于開源社區,飲水思源,我們也希望為開源社區貢獻一份力量,為廣大小程序開發者提供一套技術方案。mpvue 的初衷是讓 Vue.js 的開發者以低成本接入小程序開發,做到代碼的低成本遷移和復用,我們未來會繼續擴展現有能力、解決開發者的訴求、優化使用體驗、完善周邊生態建設,幫助到更多的開發者。

最后,mpvue 基于 Vue.js 源碼進行二次開發,新增加了小程序平臺的實現,我們保留了跟隨 Vue.js 版本升級的能力,由衷的感謝 Vue.js 框架和微信小程序給業界帶來的便利。

上面是我整理給大家的,希望今后會對大家有幫助。

相關文章:

基于Ajax表單提交及后臺處理簡單的應用

Ajax 上傳圖片并預覽的簡單實現

基于ajax html實現文件上傳技巧總結

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

使用Vue.js開發微信小程序開源框架mpvue解析

使用Vue.js開發微信小程序開源框架mpvue解析:這篇文章主要介紹了使用Vue.js開發微信小程序開源框架mpvue解析,現在分享給大家,也給大家做個參考。前言mpvue是一款使用Vue.js開發微信小程序的前端框架。使用此框架,開發者將得到完整的 Vue.js 開發體驗,同時為H5和小程序提供了代碼復用的能力。如果想將
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 欧美在线观看视频免费 | 亚洲图片欧美日韩 | 欧美日韩免费一区二区在线观看 | 日本伊人网 | 欧美亚洲韩国 | 国产黄色在线看 | 久久www免费人成精品香蕉 | 五月婷婷在线观看 | 国产区免费在线观看 | 精品国产欧美一区二区三区成人 | 国产一区二区在线免费观看 | 亚洲国产精品二区久久 | 久久网伊人 | 亚洲欧美日韩激情在线观看 | 欧美成人高清在线视频大全 | 欧美日韩国产一区二区三区播放 | 欧美激情一区 | 亚洲欧美视频在线观看 | 欧美日韩亚洲色图 | er久99久热只有精品国产 | 亚洲视频在线免费观看 | 日韩亚洲第一页 | 亚洲图区欧美 | 一区二区三区高清不卡 | 国产一区在线视频 | 黄色视频毛片 | 日产精品久久久一区二区 | 久久婷婷国产麻豆91天堂 | 亚洲一页| 手机国产精品一区二区 | 亚洲欧美日韩综合精品网 | 免费网站看v片在线成人国产系列 | 亚洲视频一二区 | 91精品啪在线观看国产线免费 | 亚洲综合欧美日本另类激情 | 久久精品国产三级不卡 | 国内精品免费视频 | 波多野结衣乳巨码无在线观看 | 午夜日本一区二区三区 | 日本一区二区三区免费观看 | 精品国产欧美一区二区五十路 |