第一篇|腾讯开源项目盘点:WeUI,WePY,Tinker,Mars等
開源展示了人類共同協作,成果分享的魅力,每一次技術發展都是站在巨人的肩膀上,技術諸多創新和發展往往就是基于開源發展起來的,沒有任何一家網絡公司可以不使用開源技術,僅靠自身技術而發展起來。
騰訊開源了個很多非常有價值的項目,下面我們一起按照Stars(受歡迎程度)來盤點下這些開源項目。
1、微信原生視覺的基礎樣式庫 WeUI? ??star:21429
WeUI 是一套同微信原生視覺體驗一致的基礎樣式庫,由微信官方設計團隊為微信 Web 開發量身設計,可以令用戶的使用感知更加統一。
包含button、cell、dialog、 progress、 toast、article、actionsheet、icon等各式元素。
WeUI 是一套同微信原生視覺體驗一致的基礎樣式庫,由微信官方設計團隊為微信內網頁和微信小程序量身設計,令用戶的使用感知更加統一。
WeUI-Design 是微信官方設計團隊設計的一套同微信原生視覺體驗一致的基礎視覺樣式庫,目前提供 Sketch 與 PSD 基礎樣式庫源文件。
開發者或設計師可以使用 WeUI-Design 進行微信 Web 開發的原型設計、視覺設計等。
手機掃碼預覽:
項目地址:
https://github.com/Tencent/weui
官網:
https://weui.io
2、一款讓小程序支持組件化開發的框架 WePY? ?star:16621
WePY (發音: /'wepi/)是一款讓小程序支持組件化開發的框架,通過預編譯的手段讓開發者可以選擇自己喜歡的開發風格去開發小程序。
框架的細節優化,Promise,Async Functions的引入都是為了能讓開發小程序項目變得更加簡單,高效。
特性:
類Vue開發風格
支持自定義組件開發
支持引入NPM包
支持Promise
支持ES2015+特性,如Async Functions
支持多種編譯器,Less/Sass/Stylus/PostCSS、Babel/Typescript、Pug
支持多種插件處理,文件壓縮,圖片壓縮,內容替換等
支持 Sourcemap,ESLint等
小程序細節優化,如請求列隊,事件優化等
項目地址:
https://github.com/Tencent/wepy
官網:
https://tencent.github.io/wepy/
3、微信官方的Android熱補丁解決方案??Tinker? ? star:13237
微信開源的 Android 熱修復框架 Tinker,支持在無需升級APK的前提下更新 dex, library and resources 文件。
Tinker是微信官方的Android熱補丁解決方案,它支持動態下發代碼、So庫以及資源,讓應用能夠在不需要重新安裝的情況下實現更新。當然,你也可以使用Tinker來更新你的插件。
它主要包括以下幾個部分:
gradle編譯插件:?tinker-patch-gradle-plugin
核心sdk庫:?tinker-android-lib
非gradle編譯用戶的命令行版本:?tinker-patch-cli.jar
項目地址:
https://github.com/Tencent/tinker
4、微信官方的跨平臺跨業務的終端基礎組件?Mars? star:12071
Mars 是微信官方的跨平臺跨業務的終端基礎組件,是一個使用 C++ 編寫的業務性無關、平臺性無關的基礎組件。目前已接入微信 Android、iOS、Mac、Windows、WP 等客戶端。
主要包括以下幾個部分:
COMM:基礎庫,包括socket、線程、消息隊列、協程等基礎工具;
XLOG:通用日志模塊,充分考慮移動終端的特點,提供高性能、高可用、安全性、容錯性的日志功能;
SDT:網絡診斷模塊;
STN:信令傳輸網絡模塊(核心模塊),負責終端與服務器的小數據信令通道。包含了微信終端在移動網絡上的大量優化經驗與成果,經歷了微信海量用戶的考驗。
項目地址:
https://github.com/Tencent/mars
5、輕量級的高性能的Hybrid框架?VasSonic? ? ?star:9254
VasSonic取名于世嘉動畫形象音速小子,是騰訊QQ會員 VAS團隊研發的一個輕量級的高性能的Hybrid框架,專注于提升頁面首屏加載速度,完美支持靜態直出頁面和動態直出頁面,兼容離線包等方案。?
接入VasSonic后首次打開可以在初始化APP的時候并行請求頁面資源,并且具備邊加載邊渲染的能力。非首次打開時,APP可以快速加載上次打開動態緩存在本地的頁面資源,然后動態刷新頁面。騰訊手機QQ通過VasSonic框架使得頁面首屏耗時平均低于1S以下。
項目地址:
https://github.com/Tencent/VasSonic6、一個輕量、可拓展、針對手機網頁的前端開發者調試面板 vConsole?? ? star:8136
vConsole是一個輕量、可拓展、針對手機網頁的前端開發者調試面板。?
特性:
查看 console 日志
查看網絡請求
查看頁面 element 結構
查看 Cookies、localStorage 和 SessionStorage
手動執行 JS 命令行
自定義插件
掃碼預覽:
項目地址:
https://github.com/Tencent/vConsole
7、通用Web組件化框架 Omi? star:7383
Omi 是一款用于創建用戶界面的組件化框架,開放并且現代,故得名:Omi(Open and modern framework for building user interfaces)。
特性:
超小的尺寸,7 kb (gzip)
局部 CSS,HTML+ Scoped CSS + JS 組成可復用的組件。不用擔心組件的 CSS 會污染組件外的,Omi會幫你處理好一切
更自由的更新,每個組件都有 update 方法,自由選擇時機進行更新。你也可以和 obajs 或者 mobx 一起使用來實現自動更新
模板引擎可替換,開發者可以重寫 Omi.template 方法來使用任意模板引擎
完全面向對象,函數式和面向對象各有優劣,Omi 使用完全的面向對象的方式來構建 Web 程序
ES6+ 和 ES5 都可以,Omi 提供了 ES6+ 和 ES5 的兩種開發方案。你可以自有選擇你喜愛的方式
項目地址:
https://github.com/Tencent/omi
8、高效的 C++ JSON 解析/生成器? RapidJSON? ? star:7296
RapidJSON 是一個 C++ 的 JSON 解析器及生成器,提供 SAX 及 DOM 風格 API。它的靈感來自?RapidXml。
RapidJSON 小而全。它同時支持 SAX 和 DOM 風格的 API。SAX 解析器只有約 500 行代碼。
RapidJSON 快。它的性能可與?strlen()?相比。可支持 SSE2/SSE4.2 加速。
RapidJSON 獨立。它不依賴于 BOOST 等外部庫。它甚至不依賴于 STL。
RapidJSON 對內存友好。在大部分 32/64 位機器上,每個 JSON 值只占 16 字節(除字符串外)。它預設使用一個快速的內存分配器,令分析器可以緊湊地分配內存。
RapidJSON 對 Unicode 友好。它支持 UTF-8、UTF-16、UTF-32 (大端序/小端序),并內部支持這些編碼的檢測、校驗及轉碼。例如,RapidJSON 可以在分析一個 UTF-8 文件至 DOM 時,把當中的 JSON 字符串轉碼至 UTF-16。它也支持代理對(surrogate pair)及?"\u0000"(空字符)。
項目地址:
https://github.com/Tencent/RapidJSON
9、微信開源的高效、完整、易用的移動數據庫框架? WCDB? star:6988
WCDB是一個高效、完整、易用的移動數據庫框架,基于SQLCipher,支持iOS, macOS和Android。
WCDB for iOS/macOS
特性:
WINQ(WCDB語言集成查詢): 通過WINQ,開發者無須為了拼接SQL的字符串而寫一大坨膠水代碼。
ORM(Object Relational Mapping): WCDB支持靈活、易用的ORM。開發者可以很便捷地定義表、索引、約束,并進行增刪改查操作。
多線程高并發: WCDB支持多線程讀與讀、讀與寫并發執行,寫與寫串行執行。
加密:WCDB提供基于SQLCipher的數據庫加密。
損壞修復: WCDB內建了Repair Kit用于修復損壞的數據庫。
反注入: WCDB內建了對SQL注入的保護。
項目地址:
https://github.com/Tencent/wcdb
10、基于 mmap 內存映射的移動端通用 key-value 組件? ?MMKV?
?star:6521
MMKV 是基于 mmap 內存映射的 key-value 組件,底層序列化/反序列化使用 protobuf 實現,性能高,穩定性強。從 2015 年中至今在微信上使用,其性能和穩定性經過了時間的驗證。
近期也已移植到 Android / macOS / Windows 平臺,一并開源。
MMKV 源起:
在微信客戶端的日常運營中,時不時就會爆發特殊文字引起系統的 crash,參考文章,文章里面設計的技術方案是在關鍵代碼前后進行計數器的加減,通過檢查計數器的異常,來發現引起閃退的異常文字。在會話列表、會話界面等有大量 cell 的地方,希望新加的計時器不會影響滑動性能;另外這些計數器還要永久存儲下來——因為閃退隨時可能發生。
這就需要一個性能非常高的通用 key-value 存儲組件,我們考察了 SharedPreferences、NSUserDefaults、SQLite 等常見組件,發現都沒能滿足如此苛刻的性能要求。
考慮到這個防 crash 方案最主要的訴求還是實時寫入,而 mmap 內存映射文件剛好滿足這種需求,我們嘗試通過它來實現一套 key-value 組件。
項目地址:
https://github.com/Tencent/mmkv
請各位保持關注「騰訊技術工程」公眾號,我們會持續更新騰訊開源項目。
總結
以上是生活随笔為你收集整理的第一篇|腾讯开源项目盘点:WeUI,WePY,Tinker,Mars等的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何不用服务器来开发一个小游戏
- 下一篇: 第二篇|腾讯开源项目盘点:ncnn、xL