专为Web开发人员设计的跨端框架Hippy
《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个专为 Web 开发人员而设计,可轻松构建跨平台和高性能的出色应用框架——Hippy。
Hippy 是一个新生的跨端开发框架,目标是使开发者可以只写一套代码就直接运行于三个平台(iOS、Android 和 Web)。Hippy 的设计是面向传统 Web 开发者的,特别是之前有过 React 和 Vue 开发经验的开发者用起来会更为顺手,Hippy 致力于让前端开发跨端 App 更加容易。
同时,Hippy 从底层进行了大量优化,在启动速度、可复用列表组件、渲染效率、动画速度、网络通信等等都提供了业内顶尖的性能表现。
特征
- 为传统 Web 前端开发者设计,官方支持 React 和 Vue 两种主流前端框架。
- 不同的平台保持了相同的接口。
- 通过 JS 引擎 binding 模式实现的前端-终端通讯,具备超强性能。
- 提供了高性能的可复用列表。
- 皆可平滑迁移到 Web 浏览器。
- 完整支持 Flex 的布局引擎。
功能对比
Hippy 从底层增加了很多和浏览器相同的接口,方便了开发者使用,这里有几个 Hippy 的独有功能。
包体积
下图是一个空的APK,在引入后终端包大小对比。
下图是在前端搭建了一个最简单的 ListView 后,前端打出的 JS 的包大小对比。
渲染性能
ListView 在滑动时的性能对比,Hippy 可以一直保持十分流畅的状态。
开始接入
- 准备环境
确保你本地已经安装 git 和 npm 。
运行:
git clone https://github.com/Tencent/Hippy.git
然后在项目根目录运行:
npm install
Hippy 仓库使用 git-lfs 来管理 so,gz,otf 文件, 请确保你已经安装好 git-lfs。
macOS 用户需要以下软件:
- Xcode 和 iOS SDK: 用以编译 iOS 终端 app。
- Android Studio 和 NDK: 用以编译 Android app。
- Node.JS : 用以运行前端编译脚本。
Windows 用户需要以下软件:
- Android Studio 和 NDK: 用以编译 Android app。
- Node.JS : 用以运行前端编译脚本。
Windows 用户受条件所限,暂时无法进行 iOS app 开发。
- 使用 JS 范例来构建 iOS App
推荐 iOS 开发者使用模拟器来进行开发和调试工作。当然如果你熟悉 iOS 开发,也可以通过修改配置将 Hippy app 安装到 iPhone 手机上。
1. 在根目录运行 npm run init
该命令由 npm install && lerna bootstrap && npm run build 组成。
- npm install:安装项目构建脚本的依赖。
- lerna bootstrap:安装前端每一个 package 依赖。(Hippy 采用 Lerna 管理多 JS SDK 包仓库,如果出现 lerna command is not found , 先执行 npm install lerna -g 全局安装 Lerna 。)
- npm run build:编译每一个 JS SDK 包。
2. 选择一个前端范例项目来进行编译,在项目根目录运行 npm run buildexample -- [hippy-react-demo|hippy-vue-demo] 。
3. 启动 Xcode 并且开始编译终端 App:open
examples/ios-demo/HippyDemo.xcodeproj 。
如果步骤2出现错误,可以先 cd 到 examples hippy-react-demo 或者 hippy-vue-demo 目录下,执行 npm install --legacy-peer-deps ,提前将 demo 的 NPM 包依赖先安装好。
更多信息请参考 iOS SDK 集成: https://hippyjs.org/#/ios/integration
- 使用 JS 范例来构建 Android App
推荐 Android 开发者使用真机,因为 Hippy 使用的 X5 JS 引擎没有提供 x86 的库以至于无法支持 x86 模拟器,同时使用 ARM 模拟器也比较慢。
在开始前请确认好 SDK 和 NDK 都安装了范例的指定版本,并且请勿更新编译工具链。
1. 在根目录运行 npm run init
该命令由 npm install && lerna bootstrap && npm run build 组成。
- npm install:安装项目构建脚本的依赖。
- lerna bootstrap:安装前端每一个 package 依赖。(Hippy 采用 Lerna 管理多 JS SDK 包仓库,如果出现 lerna command is not found , 先执行 npm install lerna -g 全局安装 Lerna 。)
- npm run build:编译每一个 JS SDK 包。
2. 选择一个前端范例项目来进行编译,在项目根目录运行 npm run buildexample -- [hippy-react-demo|hippy-vue-demo] 。
3. 用 Android Studio 来打开终端范例工程 examples/android-demo 。
4. 用 USB 数据线插上你的 Android 手机,需要确认手机已经打开 USB 调试模式(可通过在电脑 Terminal 执行 adb devices 判断手机是否已经连上了电脑)。
5. 运行工程,并安装 APK。
如果步骤2出现错误,可以先 cd 到 examples hippy-react-demo 或者 hippy-vue-demo 目录下,执行 npm install --legacy-peer-deps,提前将 demo 的 NPM 包依赖先安装好。
如果 Android Studio 报了这个错误 No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android,查看解决办法:
https://github.com/google/filament/issues/15#issuecomment-415423557 。
更多信息请参考 Android SDK 集成: https://hippyjs.org/#/android/integration
- 构建前端生产环境 Demo
1. 先按照上述 [使用 JS 范例来构建 iOS App] 和 [使用 JS 范例来构建 Android App] 步骤执行。
2. cd 到 examples hippy-react-demo 或者 hippy-vue-demo 目录。
3. 执行 npm install 安装相应 js demo 的依赖包。
4. 依次执行 npm run hippy:vendor 和 npm run hippy:build 构建出生产模式的 vendor.[android|ios].js 和 index.[android|ios].js 。
Hippy 的 Demo 使用 DllPlugin 来分离 common chunk 和 app chunk.
谁在使用
到目前为止,腾讯公司内已经有 27+ 款主流 App 在使用 Hippy 框架,包括手机QQ、QQ浏览器、腾讯视频、QQ音乐、腾讯新闻等,每日触达数亿用户。
此项目使用Apache2.0开源协议,更多功能大家可自行前往阅读。
开源地址:https://github.com/Tencent/Hippy