第二十一期 AMA 掘金團隊請來了閒魚客戶端架構師,《Fish-Redux》做者-- 鄔吉風作了爲期三天的 Ask Me Anything (AMA) 活動(活動已結束)。 咱們在此精選了一些來自用戶的提問及鄔吉風的回答。前端
阿里花名吉豐, 《Fish-Redux》做者。現任閒魚客戶端架構師,負責研發效能 & 高可用相關工做。react
- flutter目前是沒有line-space的選項,可是咱們能夠經過換算獲得相同的結果。
- 自定義Refresh控件的原理和native基本相同,是能夠徹底控制的。Future是一個對異步的封裝,在刷新過程當中,使用Future是一種實現手段。
- Flutter的熱更新方案除了閒魚提出的模板json外,建議是跟隨Google的官方方案。
- provide方案目前已經再也不建議使用,它的替代者是 scoped_model。
拋開場景直接作比較是不合理的,scoped_model和fish-redux,在各自的場景下有各自的優點。ios
相對而言,fish-redux 更適合有必定複雜度的中大型的項目。它核心解決了狀態集中管理和組件分治管理的關係,因此一方面咱們能享受到Redux集中管理的巨大好處,另外一方面咱們也能享受到組件化分治的能力。同時對移動應用中最多見的ListView場景對了作了上層抽象,獲得最佳的性能和最佳的分治模型。git
Dart會替代js嗎?github
我認爲dart不會徹底替代js,可是會做爲一種對js的補充存在。同時dart語法上有很是多的對js的繼承,對js的同窗在語法上算是友好的。算法
大家是如何解決TextField Widget 的光標高度問題的? flutter環境Flutter (Channel beta, v1.3.8, on Mac OS X 10.14.3 18D109, locale zh-Hans-CN) 左邊是鹹魚,右邊是我作的編程
你截圖裏的閒魚頁面是用的native的輸入法,不過咱們目前已經在將它變成flutter的實現了(內部對flutter的patch)。json
而你的右截圖是flutter的實現,實際上是一個flutter的bug,它將空格符的高度做爲光標的高度和全部textfield文本內容的高度,這致使了一系列的問題。redux
好消息是flutter團隊正在處理這個問題,相信不久後,這個問題將獲得完全解決。
對Provide狀態管理怎麼看?能夠直接在fish_redux裏面用嗎
Provide狀態管理目前已經再也不推薦了,它能夠在fish_redux內使用,但並不推薦這樣作。fish_redux更增強調的是單一數據源驅動。 固然若是有更加具體的case的話,歡迎去https://github.com/alibaba/fish-redux/issues 給咱們issue。
widget嵌套太不方便閱讀了,有什麼解決的辦法
能夠經過IDE的重構能力,拆分紅若干小的函數,必定程度上會讓可讀性提升。
你好,我也是redux愛好者,不過基於對redux的不滿從新寫了一個flux架構的實現:react-control-center, counter實例:stackblitz.com/edit/cc-cou…, cc-antd-pro: github.com/fantasticso…, 我本身認爲這樣的方式是最接近react的方式去管理react狀態,可是苦於redux生態已經作大作強,不知道你cc有何見解,或者建議,讓我可以在redux的世界裏可以殺出一條血路。
redux愛好者和強烈的不滿彷佛是個矛盾體。 我簡單看了你給的連接,看上去是個不錯的設計。 開源自己是成就你我,普惠衆人,沒有那麼強的對立性,建議是擁抱redux社區,作出更好的做品。
在當下,原生開發的優點依然存在,但從軟件架構分層看,它更加適合往下層發展。 而對於廣大的軟件開發者而言,平常最多的每每是上層的具體業務需求,受效率和成本的驅動,將愈來愈趨向統一的跨端解決方案。
大前端是一種解決方案,flutter也是,它們有各自適合的場景,在這個基礎上,我相信它們都會成爲下一代的主流的跨平臺解決方案。
而在這個過程當中,小公司反而是更加容易擁抱變化,成爲這個技術領域的先驅。
- Flutter,就上層應用開發而言,對於新同窗是很是友好的一個框架。我建議在有實踐的場景學以至用,是比較有效的學習方式。選擇技術方向也是相似,只有在對的場景纔有用。
- Fish Redux 是經過大量實踐檢驗的項目,但在文檔方面僅僅是知足最基礎的要求,後面咱們會對文檔整理和細化,也很是歡迎更多的社區同窗加入進來,一塊兒讓它變得更好,讓它慢慢演進成一個有影響力的flutter應用框架。
- 從閒魚的實踐來看,flutter的問題已經不多了,目前在鍵盤、輸入法相關場景下,flutter比native稍差些。圖文混排能夠自定義,通常是將圖片轉化爲一個寬度爲0字符,而後給它設置寬高。
- Ui2code也是閒魚技術團隊在作的一個技術項目,我本身也曾參與其中, 我相信它是將來終端技術的一部分,而且在不遠的未來,就會變爲一種通用的能力。
如今閒魚ios版本也使用了flutter麼?選用flutter而不是rn的考慮是什麼?混合開發的狀況下,爲了部分頁面而引入flutter的sdk,致使安裝包大小變大,會不會得不償失? 我是一名安卓研發,如今在考慮接下來學習rn仍是flutter,能給個建議麼?
是的,目前閒魚的Flutter是運行在兩個平臺上的。 引入Flutter,在Android端大體增長了6M大小,並非特別大,是可接受的範圍。
RN和Flutter之間的比較,應該有很是多的文章。以我淺見看,RN是一種中間妥協方案,它會被瀏覽器技術的進步而取代,而Flutter是更加面向將來的一種完全的跨平臺渲染框架。
對使用flutter與其餘語言混合開發比較感興趣(好比用flutter構建用戶界面,用rust/kotlin寫業務邏輯),可否講講?想這樣作是由於不太喜歡dart的語法,以及但願用rust能夠提升性能。
選擇任何技術都有它對應的場景,拋開具體場景談技術是不合適的。
好比使用rust來編寫業務邏輯,它適合什麼場景,解決了什麼問題?
若是比較性能,dart 代碼AOT下會被編譯成機器碼,它的性能不可能會比rust低。
若是是語法問題的話,我建議是更加開發的姿態去接受新鮮技術的挑戰。
我本身過去對dart也會存在疑問,可是隨着深刻使用,會漸漸喜歡上dart。它使用友好,產物小,性能高,同時擁有AOT和JIT,支持毫秒級的hot-reload等等特性,這樣你也能更加深刻的理解爲何Google選擇dart做爲flutter的開發語言,它幾乎就是最佳的終端語言選擇。
閒魚做爲阿里巴巴在閒置流通領域的戰略產品,是業內第一的閒置交易社區。
閒魚技術團隊推行打破技術棧分工限制(Android/iOS/HTML5/Server 編程模型和語言的統一), 以及計算機視覺技術在移動終端上的前沿實踐工做。致力於利用先進技術推進業務發展。 特別的是,咱們在 Flutter 和 Tensorflow Lite 等新技術的研發及應用處於行業領先位置,加入咱們,一塊兒用技術讓生活變得更加美好!
閒魚團隊現面向各大高校誠招 客戶端/服務端Java/前端/測試 實習生,base杭州阿里巴巴西溪園區 特別的咱們很是歡迎有算法經驗的工程同窗加入咱們的團隊,一塊兒完成深度學習在UI識別、商品內容理解、視頻圖片分類和質量檢測等領域的應用落地,讓算法的價值普惠閒魚億級用戶。 歡迎各位投遞簡歷,詳詢tino.wjf@alibaba-inc.com
因爲篇幅緣由,本期只摘錄了部分問題,鄔吉風 也回答了不少其餘的技術、非技術問題,歡迎去他的 AMA 下面交流技術喲,傳送門。