【HPP开发】让所有中小企业拥有自己的APP
HPP
hybirdApp或者hbuilderApp,
指通过html,css,js语言开发出ios和android两个版本的APP,
开发效率成倍上升,开发时间大幅缩减,开发成本同样也大大缩减。
移动互联网时代,还有多少中小公司没有自己的app,原因何在?
1.中小公司有多少?
这个都不需要引用相关数据,想想一句话就明白了,
“一将功成万骨枯”,这句话同样适合创业者,普通人耳熟能详的大公司已经很多了,
可以想象下中小公司有多少,数量极多极多。
2.大部分中小公司没有自己app
迫于app开发人员的用人成本极高,
初级android,ios工资基本10k左右,中级15k左右,高级25k左右,大概这个价,
中小公司找两个初级的做不出东西,找两个中级的差不多了,但是时间成本用人成本都很高,
最终的结果是只能做出一个demo类的app,或者计划一直往后拖,
又或者根本没有能力招app开发~
HPP,让所有中小公司轻松拥有自己的APP
1.成本比较
拿开发一个app,需要6个月,android,ios两个版本,
配备andorid中级(15k)+ios中级(15k)来说,成本是30*6=180k=18w,
配备一个hpp中级(15k)来说,成本是15*3=45k=4.5w,
这里是乘以3不是乘以6,因为hpp开发速度绝对比原生开发快一倍。
这样一来,
hpp开发app的成本是原生app的四分之一~
hpp开发app的成本是原生app的四分之一~
hpp开发app的成本是原生app的四分之一~
2.招人难度
android和ios的工资这么高(相对其他工种),原因之一就是招人比较难,
而hpp开发,只要会html+css+js就可以,
想想哪个java开发,php开发,.net开发不会点html+css+js,只需要在精通点,
想想哪个前端开发,不精通html+css+js呢,
所以招人来说,完成原生app
3.流畅度和加载速度
很多人会说流畅度,
随着手机厂商的竞争,手机硬件的发展,想想现在的千元小米,魅族之流,
目前来说千元机都很流畅,以后来说是手机就很流畅。
很多人说加载速度,
诚然,中小公司自己的带宽限制等等因素,加载页面比较满,
但是想想网络发展,从2g,3g,4g以及之后的5g,以及wifi的adsl,光纤,512k,1m,2m,10m,20m,
以及现在越来越普及的云服务,百度bae,新浪sae,阿里云等等,
网速也不是问题了。
HPP详述
1.HPP由来
其实用html+css+js本人用得比较多的是dcloud(公司)推出的hbuilder(ide),使用mui(ui)+nativejs开发app,
但是总这么hbuilder,mui的叫,感觉不是很顺口,或者不是很响亮,
百度上说基于html+css+js开发app的技术叫做HybirdApp,详见:这里
所以借用HybirdApp和Hbuilder开发的App这两个概念,推出HPP的叫法,
简单,好记。
2.HPP案例
说了这么多,如果你已经心动了,不妨看看这些HPP案例,
http://dcloud.io/case/#group-1
可以看出,HPP开发app本身流畅度是毫无问题,问题在于ui设计太low,一下子拉低档次,
如果有一个好的ui,外加一下开发的技巧,开发出的app还是很棒的,例如“爱学车”这个HPP。
3.HPP趋势如何
硬件趋势:手机硬件性能越来越好,
网络趋势:网速越来越快,
就业趋势:12年错过了android的你,15年还想错过HPP?
疑问解答
1.一次开发,生成android和ios两种app?
是的
2.需要熟悉哪里技术才可以从事HPP开发?
需要熟悉html,css,js,最好熟悉jquery,以及一些常用框架的上手方法(bootstrap,amazeui)。
3.具体使用哪些技术工具?
使用Hbuilder做ide进行开发打包app,
使用mui做ui层,理论上可以用其他的ui框架,例如amazeui,bootstrap,jquery mobile等,
使用nativejs做js桥调用原生方法,这个无可替换,比较重要。
4.免费吗?
Hbuilder已经开源,所以ide免费:https://github.com/dcloudio/HBuilder-opensource
mui已经开源,所以ui免费:https://github.com/dcloudio/mui
总之都是开源,都是免费的,看这里:https://github.com/dcloudio
5.开发的时候用浏览器调试和看效果?
no
虽然开发语言是html+css+js,但是成果是一个app,也就是一个apk或者ipa,
你见过用浏览器调试apk或者ipa的吗?
最佳推荐是真机调试。
6.只是网页套了个webview吗?原生功能可以调用吗?
完全不是,原生功能都可以调用,原生体验:http://www.dcloud.io/runtime.html
7.mui是个啥,可以替换吗?
mui是负责你做出来app的ui效果的,
完全可以替换为其他ui框架,bootstrap,amazeui等等,
dcloud做的不好的是mui太杂了,让很多人搞不清楚,
mui既负责了ui框架的部分:样式,组件,效果
mui又负责了js操作的部分:dom操作,事件绑定等,完全是copy的jquery,但是做的又没有jquery好,有很多坑。
mui又负责了原生调用的一部分:mui.init,mui.plusready等,
在我看来,mui只需要做好ui的部分就行,或者干脆交给国内类似的amazeui做,节省精力,效果还更好,
然后让js操作用jquery实现,又节省好多精力,效果性能还好,
最后专注于nativejs的开发,研发更多更好的原生能力,三方插件等。
技术的意义究竟何在?
1.提高效率,降低成本
以javaee的mvc框架们为例,
从刚开始的jsp+servlet,
到后来的ssh1(spring+struts1+hibernate),
再后来的ssh2(spring+struts2+hibernate),
然后的ssm(spring+springmvc+mybatis)。
除了jsp+servlet只是在学习过程中使用,而没有在工作中使用外,其他的框架都在工作中使用过,
也见证了几个公司框架的更新路程,
但是,停下来思考下,为什么框架在不停的更新,不停的变,
也许框架怎么变,最终用户看到的东西都是一样的,从用户的角度看,框架的变更毫无意义。
那么意义是?可能有人很快就会说,“更加安全”,“开发更快”。。。
伪原因:更加安全
为什么这么说,旧的框架由于历史原因会有很公开很明显的漏洞,为了避免这个漏洞你更新到了新框架,
但是请相信,新的框架也会有漏洞在等着你,
所以“更加安全”这个理由完全是为了凑字数或者说你作为架构者想推行自己熟悉框架的借口~
原因1:开发快
这个才是真正的原因,开发快,比较下jsp+servlet时代和后期的mvc框架时代,
不得不说,开发速度大大加快。
原因2:成本低
就公司招人的成本来说,新人总是熟悉新框架,当你想招一大波廉价的劳动力的时候,
发现你公司用的ssh1对于新人来说早已不知道是什么玩意,反而炫耀自己用的ssm,嘲笑你用的ssh1,
所以如果你想在目前的市场招到一大波的廉价劳动力,那么更新公司的框架在所难免。
原因3:自我实现
这个原因听起来比较怪,但是可以说却是根本原因,
技术世界就像中国的历史朝代一样,不停的更替,
如果一个技术新人,技术相当好,却出生(工作)在ssh1时代,
为了想证明自己的技术能力,为了让自己获得更好的报酬,
所以举起“更加安全,更加快速”的大旗,开始建立自己的朝代(ssm)。
同样,对于培训机构来说,为了招到更多的学生,
总是不停的退出新的框架教程,
最后,招来了更多的学生,培训出了更多熟悉新框架的工作新人。
技术研发者和技术推广者(培训)的自我实现才是推进技术更新换代的最根本原因,
技术接受者(新人)和技术使用者(公司)只能被迫的接受这种变化。
站在公司的角度,技术存在的意义只有:
提高工作效率:同样的时间内开发更多的东西;
降低用人成本:使用工作新人们都懂的框架,以便以更低的成本找到更多的人。
2.提高用户体验,科技方便生活
上面所说的技术意义,偏向于用户看不到的后台的技术,其意义就是降低成本,
还有一种技术是和用户实时相关的,用户看得见的,一直在使用的,可以方便生活,简化工作流程的。
例如html5,css3,让用户看到的网页越来越好看越来越有意思,
例如android,将用户拉进移动互联网时代,充话费,买外卖等等动动手指就做到了,大大方便人们的生活。
总结:
技术就是降低成本,方便生活,HPP是一门好技术~
HPP例子——滴石
源码:https://github.com/uikoo9/dishi
教程:http://uikoo9.com/book/detail/3
HPP例子——识岁
源码:https://github.com/uikoo9/shisui
教程:http://uikoo9.com/book/detail/5
【HPP开发】让所有中小企业拥有自己的APP的更多相关文章
- 《iOS开发指南:从零基础到App Store上架(第2版)》
<iOS开发指南:从零基础到App Store上架(第2版)> 基本信息 作者: 关东升 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115348029 上架时间:201 ...
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第11章节--为Office和SP解决方式开发集成Apps 集成SP和Office App
BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第11章节--为Office和SP解决方式开发集成Apps 集成SP和Office App 你能够用两种 ...
- 优秀前端开发教程:超炫的 Mobile App 3D 演示
今天,我们想与您分享一个实验性的3D效果.它涉及到一个3D移动设备和一些移动应用程序截图.点击切换按钮时,我们将让移动设备转动并移动每个画面,使我们能看到一个分层的视图.你可能之前没见过这种应用程序演 ...
- Win10/UWP开发—使用Cortana语音指令启动前台App
这两天进群(53078485)找大咖的童鞋比较多,只是大咖比较忙,目前Demo还没有要到,这里先给大家转载一篇Aran大咖的博客学习下,以下是原文: Win10开发中最具有系统特色的功能点绝对少不了集 ...
- <Chapter 2>2-2-2.开发Java应用(Developing a Java App)
App Engine的Java网络应用使用了Java Servlet标准接口来和应用服务器交互.一个应用由一个或多个servlet类组成,每个都扩展了(extend)servlet基类.使用一个叫做部 ...
- 触摸屏网站开发系列(一)-ios web App应用程序(ios meta)
触摸屏网站的开发其实现在来讲比前几年移动端网站开发好多了,触摸屏设备IOS.Android.BBOS6等系统自带浏览器均为WEBKIT核心,这就说明PC上面尚未立行的HTML5 CSS3能够运用在这里 ...
- 开发一个基于 Android系统车载智能APP
很久之前就想做一个车载相关的app.需要实现如下功能: (1)每0.2秒更新一次当前车辆的最新速度值. (2)可控制性记录行驶里程. (3)不连接网络情况下获取当前车辆位置.如(北京市X区X路X号) ...
- HoloLens开发手记 - HoloLens上的应用视图 App views on HoloLens
运行在HoloLens上的应用可能包含2种视图,分别是全息视图和2D视图.应用可以在全息视图和2D视图之间转换,这常被用于访问系统提供的接口,例如虚拟键盘.拥有至少一个全息视图的应用被归类为全息应用. ...
- iOS开发笔记(Swift)-通用App安装引导页的实现
之前一直做的项目都是基于OC开发的,最近开始尝试使用Swift语言来重写整个项目. 本篇文章主要是讲述如何使用Swift来实现常见的通用App安装引导界面. 效果预览: 实现思路: 主要是采用了UIS ...
随机推荐
- cogs 1008 贪婪大陆
/* 不要思维定视 盯着线段树维护l r 的ans不放 显然没法区间合并 换一种思路 如果打暴力的话 O(nm) 每次询问 扫一遍之前所有的修改 有交点则说明种数++ 接下来考虑如何优化 我们把每个区 ...
- LINQ Enumerable
System.Linq.Enumerable类,提供了数十种称为扩展方法的共享方法,帮助您操作所有实现IEnumerable(of T)接口的类中的数据.由于Enumerable类的扩展方法可以处理许 ...
- 【C#学习笔记】二、面向对象编程
2.1 抽象类与接口 1)概念 抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类 ...
- java加载配置文件
有时候一些变量可能会变,但直接写在程序代码中不好,因为有时候需要改的时候要改动源代码,这时候可以使用配置文件来管理.比如数据库中的端口和密码. 1. 把.properties配置文件放在src目录下. ...
- poj1204之AC自动机
Word Puzzles Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 8235 Accepted: 3104 Sp ...
- Rand
我看了下网上,是这样的:rand()随机产生一个数(0-65535),加上%后,就是对其它数求余,求余产生的数取决于求余的数.比如,rand()%20;意思是利用rand()的返回值(一个0-6553 ...
- 自定义窗口 mfc
typedef struct _WNDCLASS { UINT style; //制定窗口的类型 WNDPROC lpfnWndProc; int cbClsExtra; //额外的数值 int cb ...
- ECSTORE2.0 去页面底部版权
ECstore系统在每个页面底部都有版权信息,非常烦人,之前的解决方法是修改系统代码,但是对不懂的php代码人来说是个很困扰的事情. 现在ECStore在版本为2.0.32中进行了代码更新,只需要在c ...
- 不在界面上用控件 动态创建idhttp,IdAntiFreeze来用
不在界面上用控件 动态创建idhttp,IdAntiFreeze来用 var IdHTTP: Tidhttp; IdAntiFreeze: TidAntiFreeze; begin IdAntiFre ...
- C语言刷新缓冲区(转载)
C语言中有几个基本输入函数: //获取字符系列 int fgetc(FILE *stream); int getc(FILE *stream); int getchar(void); //获取行系列 ...