Hera-将小程序打包成移动APP的开发框架
继移动APP之后,小程序作为当前移动的有一个入口为大家所推崇,不管是微信的小程序还是支付宝的小程序,其实现的思路都是一致的,即通过一个宿主来运行相关的JS页面。
现在Hera根据市场需求,推出了一款真正的跨平台框架,除了可以让你的小程序除了在微信上运行,还可以打包成 Android 、 iOS应用,以及以 h5 的方式跑在浏览器端。
主要的优点有:
- 一套代码 处处运行 Hera提供了强大的跨平台能力:不仅可以让开发者的微信小程序业务从微信中平滑迁移到Android和iOS端的App中,同时也提供了RN等其它框架没有的能力 —— 运行在Web端。
- 组件丰富 简单易用 自带常用组件,完美继承了小程序内置组件,学习成本低,完全兼容微信小程序的开发方式。
- 极速加载 体验流畅 Hera框架同时也可以支持业务的快速迭代和更新,所有组件和 API 内置在客户端中,每个页面只包含核心业务逻辑使页面更轻量,在高速加载的同时兼具动态更新的能力。
快速上手
安装脚手架
需要在系统中安装 Node.js 环境, 使用以下方法确认系统中 Node 的版本:
node -v
如果得到的版本低于v7.6.0,或是提示找不到 node 命令,请点此下载最新的 Node 环境安装包。 Tips: 如果下载时出现网络问题,可以尝试使用 nrm 或 npm config 命令切换至国内的npm源
安装运行
安装依赖库
npm i hera-cli -g
初始化小程序
hera init projName
进入新建的项目, 确认根目录有 config.json 文件:
# 进入项目
cd projName
# 查看配置文件
cat config.json
web运行
hera run web
Android中运行 如果想要在安卓虚拟机或真机上运行,需要安装 Android Studio 以及: Android SDK Platform 25 Android SDK Build-Tools 25.0.3 Tips:如果对Android环境搭建不清楚的可以自行查询资料。 然后使用命令查看设备是否连接,命令如下:
adb devices
说明:如果提示adb不是可用命令,请确认PATH 环境变量中增加了%ANDROID_HOME%platform-tools和%ANDROID_HOME%platform-tools 如果设备处于活跃状态会显示如下信息,如果列表为空或设备处于离线状态,请重新连接安卓手机或重启虚拟机。
List of devices attached
0ec123456 device
然后链接之后就可以运行了,运行的命令如下:
hera run android
iOS端运行 首先需要在系统中安装 Xcode 8.0 或更高版本。你可以通过App Store或是到Apple开发者官网上下载。这一步骤会同时安装Xcode IDE和Xcode的命令行工具。
安装完成后启动Xcode,并在Xcode | Preferences | Locations菜单中检查一下是否装有某个版本的Command Line Tools。
然后,使用如下命令安装依赖管理工具 cocoapods,命令如下:
sudo gem install cocoapods
然后,使用命令运行即可:
hera run ios
以上都是在模拟器上运行的,如果想要在真机上运行,可以访问下面的介绍:https://weidian-inc.github.io/hera/#/ios/ios-real-device
目录结构说明
新建后的项目的目录结构如下:
├── README.md
├── android
├── docs
├── h5
└── ios
其中:android 和 ios 目录下为小程序API 在客户端上的实现; h5 目录下为小程序转换工具:将小程序转换为客户端可以执行的代码; docs 目录下为项目文档及主页生成器;
- thymeleaf模板引擎调用java类中的方法(附源码)
- 由hugepage设置导致的数据库事故(r4笔记第28天)
- 判断js引擎是javascriptCore或者v8
- Springboot系列:Springboot与Thymeleaf模板引擎整合基础教程(附源码)
- 同样的sql执行结果不同的原因分析 (r4笔记第27天)
- 情感分析的新方法,使用word2vec对微博文本进行情感分析和分类
- 垂直属性
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(二)RESTful API实战笔记(接口设计及Java后端实现)
- 13(02)总结StringBuffer,StringBuilder,数组高级,Arrays,Integer,Character
- Mybatis-Generator生成Mapper文件中<if test="criteria.valid">的问题解答
- Java开源博客My-Blog之mysql容器重复初始化的严重bug修复过程
- 负margin的原理以及应用
- 关于exp/imp的总结学习(r4笔记第26天)
- 除了写烂的手写数据分类,你会不会做自定义图像数据集的识别?!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Word 批量转 PDF
- Python 数据分析(一):NumPy 基础知识
- 每日一题 | 环形排列问题
- 每日一题 | QQ群撩妹问题
- 每日一题 | 老板出的下棋问题
- Qt音视频开发12-mpv解码播放
- 算法专题 | 10行代码实现的最短路算法——Bellman-ford与SPFA
- 每日一题 | 土豪割草问题
- 高阶面试:伯努利过程
- Python 分析电影《南方车站的聚会》
- Python 基础(十八):命名空间 & 作用域
- Python爬虫(三):BeautifulSoup库
- Python 爬虫(四):Selenium 框架
- Python 爬虫(五):PyQuery 框架
- Python 爬虫(六):Scrapy 爬取景区信息