寫一個易于維護使用方便性能可靠的Hybrid框架(一)—— 思路構建

寫一個易于維護使用方便性能可靠的Hybrid框架(二)—— 插件化

寫一個易于維護使用方便性能可靠的Hybrid框架(三)—— 配置插件

前言

本來上一篇博文寫完,我就告訴自己,這是最后一篇,之后不再總結和Cordova相關和web容器相關的內容,但是,很不巧,我昨天總結完關于Cordova框架對URL攔截導致通信丟失問題的處理之后,又看了味精大佬的從零收拾一個hybrid框架(二)-- WebView容器基礎功能設計思路(別問我3月份的文章為何才看到,因為我才路轉的掘金)之后,我又按耐不住自己了(PS:我本來是沒想研究這么深的,但是,停不下來了),那我就問自己,如果是我呢,因為我一直在總結Cordova的思想,那么如果是我設計一個Hybrid框架,我要怎么做?于是我又陷入了沉思...因為我本來是想在后續著重研究weex,RN等動態UI方面的實現的,講真的通過味精大佬的分析,我現在也不確定到底是我們的web容器更好還是基于weex等的動態UI更好,于是我又陷入了沉思...經過深思之后,個人覺得后者是大前端的趨勢,什么是大前端,就是各種的各種前端客戶端糅合在了一起,四處交叉延伸,不分你我。

不扯那么多了,還是基于這個想法,我決定給自己總結一個自己的Hybird框架,一方面屬于知識的總結,年紀大了不總結就忘是真的,另一方面算是對自己知識的擴展延伸,希望多像大神學習...另外,味精大佬的思想是框架內并不自己構建webView,而是開發人員完全使用自己的webView即可,那么我也在糾結,到底要不要開發者自己控制webView還是說框架內控制?那么我先在大佬的基礎上做下延伸擴展,決定框架內不提供webView,webView的創建由開發者自己控制。

那么現在就有了兩個前提:一是webView使用WKWebView,二是框架內不提供webView,webView需要開發者自己創建。下面進入正題:

一個好的Hybrid框架應該具有哪有特點:

1.插件化,這個是必須的,解耦沒毛病,什么叫插件化,就是可插拔,用的時候拽進來,不用的時候拖出去,其余什么都不用干。說實話這很符合Cordova(優點太多離不開了),插件化又可以細分:

  • 1.webView的代理方法具體實現插件化,這樣不管哪個webView的代理方法都可以隨意設置而不會影響業務。
  • 2.js與native交互插件化,就是我們所謂的js插件,native插件,它們統一叫插件(比如fetch,io等),配對插配對拔,具體看業務需求。

2.可配置性,就是說一切皆可配置,所有的插件,都是被一個配置文件搞定的,也就是說一個配置文件即可搞定上面提到的一切插件。配置又可以細分:

  • 1.插件可配置,插件的可配置又細分為native端的插件可配置和js端的插件可配置。
  • 2.插件是否在加載webView時就加載到緩存里面還是說在調用的時候在加載,這個要看具體業務,個人覺得常用的插件,例如fetch插件,js的網絡請求都使用native來做,這種插件是完全有必要提前加載的,像地圖這類插件,可能偶爾會用一次或者用戶一時半會用不到,這類插件就完全可以在調用的時候再實例化放入緩存。

3.對于前端開發者來說接口統一,并且框架內怎么變也不需要js做改動,對于前端來說,始終是一套接口,他不需要關心webView具體是啥。

  • 需要提供出一套前端接口給前端開發者。

4.通信上必須用WKWebView,因為它對性能的提升是顯而易見的,而且不得不用,webView這一塊打算參考味精大佬所選擇的通信方式。具體可以參考

  • 1.從零收拾一個hybrid框架(一)-- 從選擇JS通信方案開始
  • 2.從零收拾一個hybrid框架(二)-- WebView容器基礎功能設計思路

5.js與native插件交互的性能優化。這一塊又可以細分三部分:

  • 1.js調用native是否需要搞個隊列,像我上一篇所提到的,是不是不需要每次調用都要經過webView?那么同樣native端是否一樣也需要搞個隊列出來(Cordova思想,別問我為什么,我也不知道)。
  • 2.插件回調一旦耗時,是否需要將其放入后臺線程執行?
  • 3.我在淺析iOS-Cordova里面提到過一點,如果插件執行時間過長造成卡頓,向runloop中添加了一個timer來喚醒runloop繼續干活,防止休眠,那么我們是不是也可以將它帶過來。

我就想到了上面的五點,不過感覺有這五點也差不多了,就這些吧,那接下來要做的事情就是,一步一步的解決上面的五個問題,主題思想還是抽離前兩篇文章外加Cordova框架思想,畢竟Cordova有點重量級有些是我們平時開發用不到的,而且集成起來也比較麻煩,基于此,打算造一個性能可靠,使用方便,易于維護且輕量級的Hybrid框架出來。目前構建了思路,具體實現準備放在下一篇(PS:因為我現在也沒想好,太晚了,就到這吧)來寫。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281388.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281388.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281388.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

程序員制作出價值5億外賣神器卻不能取消訂單,你知道嗎?

小編今日給大家帶來RACDisopsable,大家可能有部分人對這個會感覺到很陌生,那么我就用一句話來表達就是他可以幫我們取消訂閱。那么又會有人會對這個產生疑問了,我們什么時候需要用到這個取消訂閱了打個實際的例子來說吧,今天我在餓…

Computer

鏈接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2196https://blog.csdn.net/shuangde800/article/details/9732825#include<iostream> #include<cstdio> #include<algorithm> #include<vector> #include<queue> #include<cmath&…

智慧“昆明”在路上 未來充滿精彩

智慧城市是運用物聯網、云計算、大數據、移動互聯網、空間地理信息集成等新一代信息技術&#xff0c;促進城市規劃、建設、管理和服務智慧化的新理念和新模式。近年來&#xff0c;昆明市全面加快智慧城市建設&#xff0c;力爭通過三年的努力&#xff0c;打造區域信息輻射中心的…

《精讀 Mastering ABP Framework》教程發布

精讀《Mastering ABP Framework》學習總結&#xff0c;掌握軟件開發最佳實踐&#xff0c;構建可維護 .NET 解決方案。從 ABP Framework 框架中學習如何構建現代 WEB 應用程序。掌握 ABP Framework 框架ABP Framework 是一個完整的基礎架構&#xff0c;遵循軟件開發最佳實踐&…

C# 委托知識總結

1.什么是委托&#xff0c;為什么要使用委托 我正在埋頭苦寫程序&#xff0c;突然想喝水&#xff0c;但是又不想自己去掉杯水而打斷自己的思路&#xff0c;于是我就想讓女朋友去給我倒水。她去給我倒水&#xff0c;首先我得讓她知道我想讓她干什么&#xff0c;通知她之后我可以繼…

阿里云大學課程學習有獎征文活動現在開始

2019獨角獸企業重金招聘Python工程師標準>>> "學有所獲&#xff0c;分享為美"--阿里云大學課程學習有獎征文活動開始啦~~ 看課程&#xff0c;寫心得&#xff0c;贏千元大獎&#xff0c;還有機會加入阿里云大學技術作者群&#xff01;想試試自己的技術文筆…

配置網絡測試環境的批處理

引言 有次需要測試 50 臺左右的設備&#xff0c;每個都要連上電腦并搭好測試環境。這種事當然用服務器下發配置最方便&#xff0c;但條件不允許哦&#xff0c;只得手工一臺臺設。 寫了個批處理配置腳本&#xff0c;放到 U 盤上&#xff0c;最好再配上 autorun.inf&#xff0c;嘿…

Android 的系統架構

Android 的系統架構和其它操作系統一樣&#xff0c;采用了分層的架構。android 分為四個層&#xff0c;從高層到低層分別是應用程序層、應用程序框架層、系統運行庫層和 linux 核心層。 Android 是以 Linux 為核心的手機操作平臺&#xff0c;作為一款開放式的操作系統&#xf…

記一次 .NET 某制造業 MES 系統崩潰分析

一&#xff1a;背景 1.講故事前段時間有位朋友微信找到我&#xff0c;說他的程序偶爾會出現內存溢出崩潰&#xff0c;讓我幫忙看下是怎么回事&#xff0c;咨詢了下程序是 x86 部署&#xff0c;聽到這個詞其實心里已經有了數&#xff0c;不管怎么樣還是用 windbg 分析一下。二&a…

HTTPS協議開通,Apache服務器CSR簽名申請

登錄您的服務器終端 (SSH)。在命令提示符下&#xff0c;鍵入以下命令&#xff1a;openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr將 yourdomain 替換為您要保護的域名。例如&#xff0c;如果您的域名是 coolexample.com&#xff0c;您就…

首次公開!單日600PB的計算力--阿里巴巴EB級大數據平臺的進擊

摘要&#xff1a; 每年的雙11之前&#xff0c;也是MaxCompute各種乾坤大挪移落定的時候&#xff0c;因為雙11就是各種大折騰項目的自然deadline。在今年雙11之前&#xff0c;一路向北遷移和在離線混部項目&#xff0c;將杭州集群除螞蟻外整體遷移到張北&#xff0c;涉及了絕大部…

軟件測試金字塔

軟件測試金字塔 在敏捷方法中&#xff0c;持續集成是其基石&#xff0c;持續集成的核心是自動化測試。下面這篇關于測試金字塔的文章&#xff0c;來自大師Martin Fowler。 測試金字塔的概念來自Mike Cohn&#xff0c;在他的書Succeeding With Agile中有詳細描述&#xff1a;測試…

使用pm2守護你的.NET Core應用程序

簡介PM2是常用的node進程管理工具&#xff0c;它可以提供node.js應用管理&#xff0c;如自動重載、性能監控、負載均衡等。同類工具有Supervisor、Forever等。pm2是一個進程管理工具,可以用它來管理你的node進程&#xff0c;并查看node進程的狀態&#xff0c;當然也支持性能監控…

C-指針02 2017/11/24

/* 復習 1.指針類型 int *指針類型 指針指向的變量類型指針指向哪個變量2.基本數據類型 4種指針類型 存放的地址 和系統有關系 4個字節數組類型結構體 枚舉 聯合3.指針加法減法 p 和數組搭配使用4.兩個運算符 *取值(解引用) &取地址5. *(pi) p[i] …

程序員搞笑段子

轉載于:https://www.cnblogs.com/Zhusi/p/10083474.html

學習之旅——工作記錄日志2017.7.09

1.例子&#xff1a;在dev_lala上開發完畢后&#xff0c;切換到dev分支&#xff0c;在此分支上pull最新的代碼來保證dev上的代碼是最新的。在dev分支上git branch -b haha一個新的分支haha&#xff0c; 用git log dev_lala查看提交記錄&#xff0c;將我自己的幾個記錄加到haha分…

Git常用命令與基本操作

Git操作指令系統配置基本命令獲取/刪除Git倉庫更新記錄撤銷操作遠程倉庫的使用分支系統系統配置 git config 為系統自帶的配置指令&#xff0c;它可以控制GIT的行為和外觀 配置用戶信息 git config --global user.name "John Doe" git config --global user.email …

CA周記 - 在 Azure ML 上用 .NET 跑機器學習

.NET 是一個跨平臺&#xff0c;全場景應用的開源技術。你有在用 .NET 做機器學習/深度學習的應用嗎&#xff1f;如果從框架角度&#xff0c;ML.NET / Tensorflow.NET / 不斷在進步的 TorchSharp 通過幾年的發展已經開始穩定&#xff0c;但如果在一些大型項目上&#xff0c;特別…

iOS10 優化APP首次安裝網絡權限提示方案

我剛經歷了一場末日&#xff08;停電&#xff09;&#xff0c;特別是在你想寫文檔的時候。。。 言歸正傳&#xff0c;今天的問題是解決iOS10系統下首次按鈕APP彈出的網絡權限提示所帶來了問題以及優化。 起因 查了相關文章知道由于大陸工信部出臺的新規指出&#xff0c;應用在未…

su命令

從一個用戶切換到另一個用戶&#xff1a;su - ceshi(ceshi是用戶名) 查看當前用戶&#xff1a;whoami 在不切換用戶的情況執行另一個用戶的命令&#xff1a;例&#xff1a;su - -c "touch /tmp/111.txt" admin 若用戶沒有加目錄需要添加家目錄&#xff0c;并更改所有…