經歷了兩年多的打磨及開發實踐,mln終於開源了,git位址mln即momo lua native,是lua程式到android、ios原生的媒介,與rn和weex依賴jscore不同,mln處理lua to native的介質是lua虛擬機器
,lua虛擬機器支援將c函式對映到虛擬機器中,並支援在lua**中呼叫這些c函式。
在安卓和ios原生,每個activity
和viewcontroller
例項都跑乙個120k左右的lua虛擬機器,lua虛擬機器執行lua程式,並通過原生和lua虛擬機器間的bridges實現和原生的通訊,從而實現各種操作。與weex或rn通過jscore與原生通訊異曲同工。
一句話概括:mln中用到的基礎ui元件、網路元件等都是基於原生的,在建立lua虛擬機器後將一些列原生方法包裝成c函式註冊到虛擬機器中,形成lua到native的bridges,在lua程式中呼叫這些bridge實現呼叫原生的目的。
mln做了一些工作去盡量抹平兩端差異,因此有時候可能會感到稍許彆扭,比如android上tableview不是繼承自scrollview,就導致你可能無法使用setcontentoffset方法,實際開發體驗來看,這些影響並不大。
據團隊內部開發情況,實際能節省至少30%的人力成本。之所以不是50%,是以因為考慮到要除錯並處理一些平台差異性問題,對於乙個熟練的開發者來說,這部分時間是相當少的。
如在原生實現一些業務邏輯介面,註冊到lua虛擬機器中即可在lua層呼叫。lua是巴西里約熱內盧天主教大學(pontifical catholic university of rio de janeiro)裡的乙個研究小組於 1993 年開發的,用標準c語言編寫並以源**形式開放, 其設計目的是為了嵌入應用程式中,從而為應用程式提供靈活的擴充套件和定製功能。
lua是一種輕量語言,它的官方版本只包括乙個精簡的核心和最基本的庫。這使得lua體積小、啟動速度快。它用ansi c
語言編寫並以源**形式開放,編譯後僅僅一百餘k,可以很方便的嵌入別的程式裡。lua可以很容易地被擴充套件:由宿主語言(通常是c或c++)提供這些功能,lua可以使用它們,就像是本來就內建的功能一樣。lua的目標是成為乙個很容易嵌入其它語言中使用的語言。【來自維基百科】
在大家關心的學習方面,大致可以做如下規劃
學習lua語法
了解mln提供的基礎元件及ide的使用
從demo開始熟悉mln開發中的各種套路
對於有多年移動開發經驗的開發者來說學習lua以及mln簡直小菜一碟,希望大家對此抱有興趣和信心。
本人自18年8月入職後開始學習並使用lua重構weex相關業務,用半年時間在版本開發間隙完成所在專案組的所有weex業務重構工作。剛入職時並不知道什麼是lua,也沒有weex或rn相關開發經驗,加上當時mln還未達到開源標準,而且沒有可以請教的擁有mln開發經驗的同學,其中很多酸甜苦辣也都默默的扛了過來~~~
Unity 的跨平台以及熱更
1.unity的跨平台原理 首先說到unity的跨平台。unity的跨平台是基於mono實現的,在windows上,netframework提供了vs的編譯器,將c 編譯為cil的 指令集 中間碼 然後通過clr將中間碼變為機器碼執行。cil是一種可以在任何支援cli common language...
解決跨平台出現亂碼的問題
有時候我們需要將windows平台的檔案傳輸到linux平台上.但是普通的上傳對中文會出現亂碼情況.其實很簡單,只需一步即可.當我們用ftp上傳的時候會出現亂碼,在文字裡隨便寫幾個字,如圖所示.新建文字6 是我們要傳輸的檔案 在linux平台開啟後 當開啟檔案後,你一定很茫然,為什麼會有亂碼呢,不要...
移動平台使用的支援觸屏操作的Sliders
在移動平台上,使用jquery傳統的slider可能有點吃力。而利用css3的transform3d可以呼叫硬體加速,所以可以達到很流暢的效果。下面是幾個很好的jquery image slider,均支援手勢操作 後來發現,最強大的應該是hamer.js 首推當然是 photoswipe 非常流暢...