MLN -- 陌陌團隊一個支持熱更新的移動跨平臺框架

前言

最近偶然在Github發現了一個跨平臺的新框架 -- MLN,項目介紹上說是一個基於Lua語言的高性能、小巧、易上手的移動跨平臺開發框架,而且支持熱更新。引發了個人興趣,怎麼來講也要去嘗試一番,一個興趣點固然是由於陌陌這個名字,另外一個就是熱更新(畢竟連flutter都不支持熱更了)。前端

MLN項目介紹(來源於Readme)

MLN是一個移動跨平臺開發框架,讓開發者用一套代碼構建Android、iOS應用。MLN設計思路貼近原生開發,客戶端開發者的經驗,能夠迅速遷移到MLN上,輕易構建出跨平臺移動應用。vue

移動跨平臺開發中flutter、weex、react native,已經各自擁有大量粉絲。MLN爲何忽然以黑馬姿態闖入?react

  • 專爲客戶端開發者設計。git

  • 增長包體積小,1.2M程序員

  • 真正的原生性能。跨平臺每每意味着性能受損,得益於lua虛擬機的高性能和MLN優化,咱們極大減小了中間介質影響,即便在低端安卓手機加載頁面也極快。github

  • 支持熱更新。npm

嚐鮮

有看到陌陌團隊的設計初衷:咱們最初開發Lua Native的目的,只是讓程序員早下班半小時 weex

我我的很是喜歡這句話,身爲程序員,我也想早點下班啊,可準時下班彷彿成爲了一種奢望。網絡

搭建環境

按照ReadMe的文章開始搭建環境,MLN開發環境搭建,官方的文檔已經至關詳細了,我也就再也不囉嗦了,親自體驗一下。本人也嘗試過,在很短的時間內裝上了這些開發環境,主要是安裝IDEA開發工具和它上面的兩個插件。框架

熱重載

熱重載: 修改代碼,當即生效,免去編譯等待階段

經過使用下載下來的demo,而後進入到熱重載頁面,用USB或掃碼的方式鏈接到手機,就能夠進行熱重載體驗了,使用起來很方便,操做很容易懂!

打開自動同步的開關,更是方便,親測可用。

專爲客戶端開發者設計

MLN專爲客戶端開發者設計,iOS、Android程序員很是容易上手。使用MLN不須要學習Node.js、npm、vue、ES6這些對客戶端開發陌生的前端技術,也不強迫使用響應式框架。花幾個小時瞭解下lua語言和文檔就能輕鬆上手,客戶端開發者的整個技術棧在這裏都派得上用場。

關於這個,我在體驗的時候確實感受上手比flutter要快,更不用說RN了,熟悉文檔還挺快的。畢竟lua這個開發語言,自己就具備速度快、易上手的特色。頁面佈局使用熟悉的 FrameLayout、LinearLayout。感受對安卓開發者更友好,畢竟這些佈局常常用到,不過對於iOS開發者這也不是什麼難事。

各平臺安裝包大小和性能對比

原本本身想去嘗試一番最熱門的幾個跨平臺框架在安卓和蘋果手機上的各個方面的對比,正好偶然看到有位大佬已經作了這個測試了,就沒有再嘗試一番了,用了兩臺測試機分增長包體積大小、頁面加載速度、頁面刷新幀率(fps)、內存佔用四個方面進行了測試。

因而可知,在安卓平臺上,相比Weex、Flutter、React Native,使用MLN開發的APP,安裝包體積增量最小,fps和頁面加載速度都更接近原生APP。

因而可知,在iOS平臺上,相比Weex、Flutter、React Native,使用MLN開發的APP,安裝到手機後包大小增量最小,頁面加載速度和內存佔用都更接近原生APP。

應用場景

  1. 支持開發完整的APP,能明顯節省人力。

  2. 嵌入到已有開發工程裏使用,能顯著提高開發效率。

陌陌首頁、直播幀、更多幀部份內容、附近羣組、狼人圈等一系列功能都是用MLN開發的。MLN的穩定性和性能在一年多的時間裏,經受住了陌陌過億量級MAU的考驗。

相對來講,若是準備應用的話,可能仍是會考慮嵌入方式吧,某些頁面若是能熱更新仍是很是不錯的,對項目頗有幫助。

關於熱更新

因爲它是用lua語言開發的,只要把lua文件打包到工程就行了,固然經過網絡下載的方式能夠替換這個lua文件作到熱更新咯。

至於這個過審會不會被拒,陌陌是採用這種方式的,不過我暫時尚未提審嘗試過。至於可以使用熱更新多久,那就看蘋果的審覈規則咯。

缺點

分析瞭解了一大堆,感受各個方面都優秀的樣子,但其實缺點仍是很是明顯的。

  1. 暫時主要應用於陌陌,缺乏第三方驗證。
  2. 後期的技術支持和擴展性未知。

總結

其實這些跨平臺框架的誕生,都有着本身的技術背景。只有選對了場景才能發揮出他們真正的威力, 不過MLN仍是值得嘗試一番的 !

參考連接

github.com/momotech/ML…

zhuanlan.zhihu.com/p/97925879

github.com/momotech/ML…

相關文章
相關標籤/搜索