03.07 dna:一個輕量級的 Dart 到 Native 的超級通道


dna:一個輕量級的 Dart 到 Native 的超級通道

大家好,我是章魚貓。先告訴大家一個好消息,由於我一直給大家堅持優質的分享,所以得到了微信官方的推薦,最近有很多朋友通過發現公眾號的功能,關注到了我的號,我會繼續努力,堅持一直為大家提供優質的開源項目分享的。

今天,我給大家分享的一個開源項目是來自於餓了麼團隊的朋友開源的,確實非常好,所以,我也不得不推薦給大家。

今天給大家分享的這個開源項目,是跟 Flutter 相關的,是 dna 。它是一個 flutter plugin 。一個輕量級的 Dart 到 Native 的超級通道,可直接在 dart 代碼中調用原生代碼,目前支持安卓 JAVA 和 iOS ObjC. 主要用途:

  • 可以把 channel 中的原生代碼寫在 dart 代碼中;
  • 讓原生代碼也支持熱加載。

大家都知道,Flutter 作為當下最火的跨平臺技術,提供了媲美原生性能的 App 體驗。Flutter 相比 RN 還自建了自己的 RenderObject 層和 Rendering 實現,“幾乎” 徹底解決了多端一致性問題,讓 dart 代碼真正有效的落實 “一處編寫,處處運行”,接近雙倍的提升了開發者們的搬磚效率。前面為什麼說 "幾乎",因為雖然 Flutter 為我們提供了一種快捷構建用戶界面和交互的開發方案,但涉及到平臺 native 能力的使用,如推送、定位、藍牙等,也只能 "曲線救國",藉助 Channel 實現,這就免不了我們要分別寫一部分 native 代碼 和 dart 代碼做 “技術對接”,略略破壞了這 “完美” 的跨平臺一致性。另外,大部分公司的 app 都不是完全重新建立起來的 Flutter app,更多情況下,Flutter 開發的頁面及業務最終會以編譯產物作為一個模塊集成到主工程。主工程原先已經有了大量優秀的工具或業務相關庫,如可能是功能強大、做了大量優化的網絡庫,也可能是一個到處使用的本地緩存庫,那麼無疑,需要使用的 native 能力範圍相比平臺自身的能力範圍擴大了不少,channel 的定義和使用變得更加高頻。

所以,餓了麼物流技術團隊專門為此提供瞭解決方案,開源了這個 dna 開源項目。

如果你是 flutter 技術的愛好者,你應該知道它的作用了。

dna 的主要功能特點如下:

主要有以下能力和特性:

  1. 使用 dart 代碼 調用 native 任意類的任意方法;意味著要調用 native 代碼 可以寫在 dart 源文件中,同時大大減少 channel 的數量和創建成本;
  2. 可以組合調用多個 native 方法確定返回值,支持上下文調用,鏈式調用;
  3. 調用 native 方法的參數直接順序放到不定長度數組,native 自動順序為參數解包調用;
  4. 支持 native 代碼的 熱加載,不中斷的開發體驗;
  5. 更加簡單的代碼維護。

關於 dna 的主要介紹,大家還可以看餓了麼物流團隊寫的這篇文章,如下:

文章地址:

https://juejin.im/post/5e5f1d41518825495b29a05b?from=timeline&isappinstalled=0

大家可以點擊左下角的“閱讀原文”,直接觀看。

開源項目地址:https://github.com/Assuner-Lee/dna

今天的推薦不知道大家喜歡嗎?如果你喜歡,請在文章底部留言和點贊,以表示對我的支持,你們的留言、點贊和轉發關注是我持續更新的動力哦!


分享到:


相關文章: