专为Web开发人员设计的跨端框架Hippy

《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个专为 Web 开发人员而设计,可轻松构建跨平台和高性能的出色应用框架——Hippy。

专为Web开发人员设计的跨端框架Hippy

Hippy 是一个新生的跨端开发框架,目标是使开发者可以只写一套代码就直接运行于三个平台(iOS、Android 和 Web)。Hippy 的设计是面向传统 Web 开发者的,特别是之前有过 React 和 Vue 开发经验的开发者用起来会更为顺手,Hippy 致力于让前端开发跨端 App 更加容易。

同时,Hippy 从底层进行了大量优化,在启动速度、可复用列表组件、渲染效率、动画速度、网络通信等等都提供了业内顶尖的性能表现。



特征

  • 为传统 Web 前端开发者设计,官方支持 React Vue 两种主流前端框架。
  • 不同的平台保持了相同的接口。
  • 通过 JS 引擎 binding 模式实现的前端-终端通讯,具备超强性能。
  • 提供了高性能的可复用列表。
  • 皆可平滑迁移到 Web 浏览器。
  • 完整支持 Flex 的布局引擎。

功能对比

Hippy 从底层增加了很多和浏览器相同的接口,方便了开发者使用,这里有几个 Hippy 的独有功能。

专为Web开发人员设计的跨端框架Hippy

包体积

下图是一个空的APK,在引入后终端包大小对比。

专为Web开发人员设计的跨端框架Hippy

下图是在前端搭建了一个最简单的 ListView 后,前端打出的 JS 的包大小对比。

专为Web开发人员设计的跨端框架Hippy

渲染性能

ListView 在滑动时的性能对比,Hippy 可以一直保持十分流畅的状态。

专为Web开发人员设计的跨端框架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音乐、腾讯新闻等,每日触达数亿用户。

专为Web开发人员设计的跨端框架Hippy


此项目使用Apache2.0开源协议,更多功能大家可自行前往阅读。

开源地址:https://github.com/Tencent/Hippy