前言

如果想用前端的方式写一个app怎么办呢?

如果你用的是 React,那么它已经有了一个比较完善的体系跟社区。如果你用的是Vue又不想花费太多时间去重新学习React,那么目前比较靠谱的方案就是weex了,但是其官方文档写的并不友好,更新也不给力。

在实际操作中对前端也并不友好,它需要一些 Android 的知识,跟一些前端比较陌生的环境跟方式去开发,这使得一些人在尝试之后便转向了RN的怀抱。

所以今天就来安利一个基于weex二次封装的框架---eros;

正文

eros 是基于 weex 封装面向前端的 vue 写法的解决方案,由于 app 开发的特殊性,eros 则更偏重关心于整个 app 项目。

先看下weex的实现原理图:

其中主要分为两部分 Server 和 Client ;

Server

weex file: 就是我们的 .vue 文件(或官方的 .we 文件),和我们平时进行前端开发的一样。

JS Bundle:在编译客户端静态资源文件的时候,是通过 weex-loader 来加载这些经过限制语法编写的 weex file,最终编译成为能让客户端读懂的 JS 文件。

Client

引用 weex 官网上的话。

Weex 的 iOS 和 Android 客户端中都会运行一个 JavaScript 引擎,来执行 JS bundle,同时向各端的渲染层发送规范化的指令,调度客户端的渲染和其它各种能力。我们在 iOS 下选择了 JavaScriptCore 内核,而在 Android 下选择了 UC 提供的 v8 内核。无论是从性能还是稳定性方面都提供了强有力的保障。

为了让整个移动应用的资源利用得更好,我们在客户端提供的 JavaScript 引擎是单例的,即所有 JS bundle 公用一个 JavaScript 内核实例,同时对每个 JS bundle 在运行时进行了上下文的隔离,使得每个 JS bundle 都能够高效安全的工作。我们还把 Vue 2.0 这样的 JS Framework 做了预置,开发者不必把 JS Framework 打包在每个 JS bundle 里,从而大大减少了 JS bundle 的体积,也就进一步保障了页面打开的速度。

client对于前端来说肯定是越了解会更好,不了解也没关系,但 weex 有个功能是很重要的,那就是 weex 搭建起了一条 JS Bridge,通过客户端自定义 module 和 component ,让前端与客户端有了交互能力。

eros流程图:

eros 能解决什么

  • 详细的文档来解决环境搭建过程中的坑。

  • 一套代码编译成 ios,android 两端原生应用。

  • 封装了大量 module,让前端开发方便进行原生的操作。

  • 提供 appboard 机制来减少包体积,并可以对其实时修改。

  • 内置了一套完整的 widget ,可根据业务自行修改。

  • 中介者模式来集中管理业务。

  • 提供了服务器端增量发布更新逻辑。

  • 脚手架可直接生成开发最新模板。

  • 脚手架启动服务进行实时开发效果查看和 debug 调试。

  • 脚手架更新开发平台所需 eros 依赖。

  • 脚手架支持打对应平台内置包。

  • 脚手架支持生成全量包,增量包,并内置与更新服务器交互逻辑。

  • 脚手架支持同步更新模板内容。

  • 脚手架支持 weex 的 vue 入口和 js 入口两种开发方式。

  • 支持 weex debug

eros 不能做什么

  • eros 开发中也有很多限制,需要开发者自行斟酌。

  • weex 代码在浏览器端还有很多兼容性问题,所有 eros 目前不支持浏览器端。

  • eros 不能使用 weex 市场,如果您有原生开发经验可以自行接入。

  • 由于 eros 对 JS Bundle 运行机制采用了 appboard 机制来减少了 js bundle 的大小,导致 weex debug 需要特定的处理。

  • 由于目前开源的 weex ui 库都并不支持 tree-shaking ,官方引入的 webpack 也是 1.x.x 版本,eros 脚手架即便升级了 webpack,但并未配置 tree-shaking,所以目前引入代码的方式需要限制很多写法来减少 JS Bundle 的体积,eros 后续会出对应的 UI组件库 来解决这些问题。

  • eros 打出来的包体积稍大,为解决这个问题,eros 客户端动态加载依赖正在开发中。

  • 如果遇到复杂的页面,如 IM 之类的,eros 建议用原生实现,weex 应付此类需求还是比较吃力。

eros 现状

目前 eros 已有数十个 app 在开发中和上线的状态,其中有正在开发中的国外应用 starLife(100+页面) ,也有国内正在开发的 蜂觅(60+ 页面) ,还有 已上线的应用都在 0-50+ 页面不等 ,行业分布于资讯,医疗,招商,购物,政府,办公等。

而本木医疗(京医通)技术团队本身也基于 weex 开发了三个已上线的 app,均可在苹果商店和应用宝下载:

  • 健康首都(京医通 app版,100+页面,很多功能还未开放)
  • 本木医疗助手(30+页面)
  • 本木医生助理(20+页面)

所以开发者大可放心,这不是一个 KPI 项目(公司没有 KPI ),已基于 MIT 协议开源。

支持性

Android 4.1 (API 16)

iOS 8.0+

WebKit 534.30+

结语

目前eros可以满足我们基本的开发需求,但还有很多不足,网上并没有太多的关于weex跟eros的资料,遇到困难也相对不好解决,写这篇文章是想去传播一下这个正在发展中的项目,希望能够帮助到一些人,也希望更多的人了解并参与进来逐步去完善这个体系,最终给vue开发者们一个更大的舞台。

以上只是对eros的简单介绍,还有不少遗漏。了解更多eros信息请移步官方文档 ->

地址:https://github.com/bmfe/eros-template

转载于:https://www.cnblogs.com/adoctors/p/8391259.html

weex前端式写法解决方案---eros相关推荐

  1. 前端通用国际化解决方案 di18n-translate

    di18n-translate 前端通用国际化解决方案 背景 前端技术日新月异,技术栈繁多.以前端框架来说有React, Vue, Angular等等,再配以webpack, gulp, Browse ...

  2. 基于webpack的前端工程化开发解决方案探索(一):动态生成HTML

    基于webpack的前端工程化开发解决方案探索(一):动态生成HTML 参考文章: (1)基于webpack的前端工程化开发解决方案探索(一):动态生成HTML (2)https://www.cnbl ...

  3. php sql 条件拼组_ThinkPHP框架SQL操作链式写法原理(浅显易懂)

    引言 大家如果有面试几次不难发现,虽然国产的TP一直被人诟病.但是丝毫不能影响它在广大企业中的开发受到青睐,强大的社区,暴力实用详细的中文手册.有一个地方相信大家都不陌生,就是他的链式写法,链式写法的 ...

  4. jQuery事件的链式写法

    <head>     <title>jQuery事件的链式写法</title>     <script src="jquery-1.9.1.js&q ...

  5. Jdbc模版式写法与Spring-JdbcTemplate的比较

    一.Jdbc模版式写法: [流程] 加载驱动 获取数据库链接 创建Statement对象(用于发送sql语句) 向数据库发送sql语句,获取数据库返回的结果集 从结果集中获取数据 释放资源 上述部分用 ...

  6. ajax操作的链式写法

    ajax操作的传统写法: $.ajax({ url: url, success: function(){ doWhenSuccess(); }, error: function(){ doWhenEr ...

  7. 鼐鼐家为用户打造3D互动体验式营销解决方案

    公司介绍 我们公司是上海鼐鼐家软件有限公司,主要业务是装修设计平台,有一个官网和APP,APP是鼐鼐家软件,是我们公司自主研发基于HTML5的WEB 3D 云设计和云渲染技术平台.专业的在线3D设计工 ...

  8. 【Web技术】1431- 总结前端主题切换的思考和现代前端样式的解决方案落地

    关于本文 来自:codercao https://juejin.cn/post/7106702604024938503 demo在线体验地址:https://hongqingcao.github.io ...

  9. 主题:EXE + BPL + DLL + Interface实现插件式客户端解决方案

    时间:2005-02-25(星期五) 15:00(下午三点) 主题:浅谈怎样利用EXE + BPL + DLL + Interface实现插件式客户端解决方案 地点:群号:5726882(煮茶待英雄会 ...

最新文章

  1. 2011面试题大汇总
  2. 2021年春季学期-信号与系统-第十次作业参考答案-第五小题
  3. python函数定义的要点_python基础之函数重点
  4. 微软向.NET开发者开放Windows Phone 7 Market
  5. tensorflow tf.enable_eager_execution()(立即执行操作,不添加到稍后在“ tf.Session”中执行的图)
  6. 免费分享|linefriends手帐内页|横线方格|非卖品
  7. 关于Linux系统的运行级别
  8. python saltstack web_saltstack学习-8:web管理页面(halite)
  9. js29--装饰着模式
  10. 微信与qq怎么连接到服务器,王者荣耀微信和qq可以一起玩吗 王者荣耀微信和qq互通吗说明...
  11. 计算机毕业设计SSM电影院购票系统【附源码数据库】
  12. 免费的桌面主题按钮 V1.0
  13. php杂谈【基础篇】之_7.PHP涉及的所有英文单词
  14. Batch Normalization和Dropout
  15. 基于链表的贪吃蛇(C语言)
  16. 转载GitHub中Android开源项目及库汇总
  17. zookeeper3.4.6配置实现自动清理日志【转】
  18. 计算机视觉的相关会议,计算机视觉方向三大顶级会议
  19. 周易起名大师快速破解教程
  20. 【UE4源代码观察】学习队列模板TQueue

热门文章

  1. Android的Activity生命周期模拟程序及解析
  2. VS2019编写简单的C程序示例
  3. C++模板:类模板和类模板的友元【C++模板】(57)
  4. 2020 我的C++学习之路 C++PrimerPlus第四章课后习题
  5. html页面加文字横向滚动,js实现文字横向滚动
  6. python画数学函数_Python 绘制你想要的数学函数图形
  7. java 深拷贝_java 深拷贝与浅拷贝机制详解
  8. 现代微波滤波器结构与设计_高功率射频及微波无源器件中的考虑和限制
  9. 一个字稳,云原生产品家族支撑冬奥会九大业务场景,打造云上奥运新体验
  10. 你不得不了解 Helm 3 中的 5 个关键新特性