java自学html5好学么吗?HTML5呢?

咨询电话:5/|||
最新开班信息
风口上的HTML5,今年的发展方向会有哪些?
时间: 11:50:10&&&来源:&&& 点击:
2014年下半年,微信捧火了HTML5小游戏,自此国内各行各业开始对HTML5保持高涨关注。2015年是国内HTML5行业迅速发展的一年,在媒体大肆渲染&互联网寒冬&之际,HTML5作品的生产数量和传播广度却居高不下,为寒冬增添一把热火。
  如图,根据百度指数对关键词&HTML5&搜索趋势结果,2015年&HTML5&的指数约是2014年的1.5倍;而HTML5的简单说法&H5&在2015年的检索量是前一年的2倍多,直逼&HTML5&。
  2015年,国内HTML5的传播仍以移动端为主,但简单的翻页这种低层次的设计已经不再适应大部分受众的需求,HTML5平台也开始由简单的工具应用逐步转型。其中,发展得比较快的是面向商企用户的iH5,自主研发引擎,并于2015年年底添加即时通讯功能和线上交易机制。
  为什么是HTML5?
  Web应用开发新标准
  HTML5,第五版超文本标记语言,于2014年10月由万维网联盟(W3C)发布为正式推荐标准。它是HTML自1991年问世以来,最具变革价值的技术规范,历经多年修订与完善才制定完成。
  过去,Web开发面临两种困境:
  (1)不少人质疑Flash的安全性等问题,却找不到替代它的合适插件;
  (2)工程师们抱怨PC端和移动端应用的多次开发,仍旧得为微软、苹果、安卓等系统设计不同方案。
  而HTML5提供了良好的解决方案。与JavaScript、CSS等紧密结合后,HTML5能使浏览器不需要类似Flash的插件也能实现桌面应用的交互效果,它的跨平台可用性更令应用的一次开发成为可能。
  如上图,Youtube使用HTML5的video元素进行标记后,网页不需要第三方插件就能播放音视频等。因此,HTML5的兴起具有非常深远的意义,它已经从简单的标记语言化身为Web应用开发的先驱。
  HTML5应用现状
  从硬件角度来看,国内手机和平板两种移动设备应用最广,PC端次之,紧接着是电视和游戏设备。
  从软件角度来看,桌面浏览器对HTML5的支持高于移动浏览器,最高可达95%;而从整体上而言,移动浏览器对HTML5的支持却优于桌面浏览器。
  HTML5具有较好的浏览器向后兼容性,开发者能对浏览器不支持的情形设计各种各样的回退方案。因此,HTML5页面的实际显示性能与开发者、制作平台密切相关。
  2015年,越来越多公司在HTML5品牌推广上进行布局。6至7月份起,鸡汤、自媒体等个人作品呈下降趋势,商企用户作品则保持高速增长。在商业需求的驱动下,HTML5页面设计的目的性更强,获得最好传播效果的基本是经过一定时间策划,在团队操作下有针对性地进行投放的企业案例。
&  相对应地,原有HTML5平台也进行了大面积升级。从平台性质而言,HTML5平台可分为轻营销模板类、功能引擎类和基础工具类三种,分别以易企秀、白鹭引擎和iH5为代表。
  三类HTML5平台的特点如下&&
  (1)轻营销模板类:提供类似PPT页面切换的HTML5制作工具,通常面向C端(个人)用户,部分为B端(企业)用户。该类平台的数量较大,只适用于轻度营销,所能提供的页面动态效果局限于翻页。
  (2)功能引擎类:提供HTML5网页的开发引擎,通常面向B端用户。该类平台主要提供基于Canvas(画布)的游戏引擎,适用于轻游戏的开发,依赖于开发者。
  (3)基础工具类:提供用于页面交互的HTML5可视化编辑工具,主要面向B端用户,部分为C端用户。该类平台只有iH5,采用自主研发的闭源引擎,应用领域广泛,涵盖轻度营销、重度营销、媒体电商内容应用、视频、动画、游戏等方面。
  与浏览器多采用谷歌开源引擎的状况相近,国内HTML5平台基本使用国内外开源框架或引擎。但和浏览器面向网页内容显示,只需提供高性能的技术支持不同,HTML5平台面向的是HTML5制作或开发,需要对网页质量负责。因此,使用开源框架或引擎意味着这些HTML5平台进一步拓展业务会比较被动,容易面临同质化的困境。
  三类HTML5平台的对比
  因为整体上移动端浏览器对HTML5的支持优于PC端,2015年HTML5平台主要面向移动端网页的制作和开发。
&  如上表,三种HTML5平台以PC网站、APP和软件三种形式提供制作或开发工具,成品为网页或HTML5源码。由表可见:
  (1)轻营销模板类HTML5平台只能做轻度营销,能实现翻页等简单动效,分为场景展示、电子出版和动画制作三种。如下图为易企秀桌面编辑界面,该类平台最大的共同点在于工具结构以页面为基础,与软件PowerPoint架构相近,能通过增减页面、使用功能组件和点击快捷菜单来调整内容。
  (2)功能引擎类HTML5平台的用户专指性很强,主要是有开发经验的技术人员。下图为Egret Wing软件设计师视图下的基本架构,使用HTML5引擎把基础代码流程化,再借助第三方集成开发环境Adobe Air构建可视化工具,就能通过让用户使用软件组件来简化开发过程。
  (3)基础工具类HTML5平台提供底层交互型产品,开发目的、设计原理和实现思路都以交互为基础,国内只有iH5。iH5于2015年9月上线,提供HTML5制作工具、工具培训和作品交易等服务。它本质上封装了DOM(文档对象模型)引擎的一个集成开发环境,使用者以设计师为主,适合广告公司、大型媒体公司和公司市场部等使用。
  如上图,iH5提供的是舞台、屏幕、页面、多媒体素材、事件、数据库等对象组件,而不是构建好的模块组件。在提供可视化编辑的前提上,它最大程度还原了HTML5页面的开发过程,具有较高的拓展性。由于提供底层交互功能,它的应用领域较广泛,能用于微信推广、网站建设、轻游戏设计、轻APP开发和视频交互等多个方面。
  同样是HTML5规范,对HTML5技术与性能的取舍成为国内HTML5平台工具定位和提供服务的差别所在。
  HTML5行业发展的趋势
  伴随着HTML5兴起的是Flash的没落,HTML5能打败在多媒体领域称霸多年的Flash,除了移动设备的跨平台性和较好的多媒体支持外,它的应用范围也广于Flash。比如,Flash动画作品的复用性极低,基本没有模板市场,而HTML5却能作为基础填充材料,用来制作报纸图文等模板。
  参考Flash发展的演化路径并结合HTML5的新特性,HTML5近几年会在重度内容、网页游戏、垂直领域解决方案和内容直接填充四个方面有所突破。
  (1)内容往重度化方向发展。
  重度营销并不完全意味着大项目、高预算、长周期、大团队,而是相对轻度营销以用户生产内容为主,它更注重专业内容的生产。在用户对页面交互能力和HTML5拓展功能的要求提高之际,轻度营销的市场份额会逐渐降低,往重度营销内容转化。
  (2)网页游戏往交互游戏方向发展。
  尽管HTML5游戏具备无需下载、包含社交属性、开发成本低等优势,但如果没有充分利用HTML5的新特性,加强移动游戏的交互能力,它很难在游戏市场中异军突起。由此,网页游戏未来更有可能结合HTML5优良的通信功能,往跨屏互动等交互特征更明显的形式发展。
  (3)垂直领域解决方案往在线应用方向发展。
  与HTML5行业密切相关的垂直行业主要包括在线教育、电商和流媒体三种类型。
  以世界最大的在线课程平台Coursera为例,授课视频即使用HTML5实现&课间小测&。如下图,在Coursera网站上,当视频播放到特定节点时会出现与课程相关的问题,提供用户选择答案,记录答题情况并反馈答题结果。
  (4)传媒业往内容直接填充方向发展。
  国内HTML5制作工具基本都提供模板服务,这与HTML5网页较强的复用性有关。网页基础架构设计完成后,修改源码中各元素的参数便能替换素材、改变对象属性,因此HTML5网页能用于制作基础填充材料。在HTML5模板的帮助下,新媒体内容能通过应用母版进行编辑,用户只需后期进行图文内容的替换,因此很有可能成为传媒业转型的契机。
  反观国内不同类型的HTML5平台,只有以HTML5提供的新特性为根本,着眼于底层交互才可能适应各行各业对网页开发的需求。因此,基于HTML5元素和属性进行设计的基础工具,未来更有机会占领尽可能多的市场份额。
开班时间16-03-20
开班时间16-01-27
开班时间16-03-19
开班时间16-06-15
开班时间16-03-20
开班时间16-11-30
从这里开始讲吧。 大一快期末的时候加入学院的多媒...
伴随着新年钟声的到来,我不知道我是否是应该高兴还是...
经过Java实训,感触很深,收获也很大,对自己的缺点也...
在参加java培训的过程中,我感觉其实生活中很多时候与j...
五个月在刚来的时候,觉得过得好慢,可转眼到了毕业又...
尚学堂优势posts - 48,&
comments - 549,&
trackbacks - 0
最近前端圈子里面,发现大家都在热炒概念,什么knockout,angularJs,都被捧成神了,鄙人不才,最近心情也不好,特地写这篇文章来找骂
写代码的码农都知道,Java社区虽然不是一个提出分层思想的,确实贯彻的最好的,如今是个Java开发都不会不知道SSH的开发模式,从MVC到MVVM的概念的热炒,其实真没什么技术进步
(如果你觉得本文言辞激烈,过于愤世嫉俗,实在看不下去,欢迎移步另一位园友的分层进化史科普文章)&
先看什么是MVVM
View一般就是我们平常说的HTML文本的Js模板,里面可以嵌入一些js模板的代码,比如Mustache,比如jstl类似的模板伪代码
ViewModule层里面就是我们对于这个视图区域的一切js可视业务逻辑,举个例子,比如图片走马灯特效,比如表单按钮点击提交,这些自定义事件的注册和处理逻辑都写在ViewModule里面了
Module就更简单了,就是对于纯数据的处理,比如增删改查,与后台CGI做交互
那么什么是MVVM框架呢??一般他们都是这么做的
1.& 定义一串所谓的伪模板代码,例如通过className标注,或者自定义tag的方式,将一段html文本区域给标注声明起来,意思就是喊一嗓子,&喂,兄弟们,这块地方我占了,要拉屎去别处拉去&
2.& 通过类似jstl之类lamda表达式,来做js模板,&拜托伙计,天堂有路你不走,非要自己搞一套,你就不能暴露接口让大家用自己的模板语言,比如Mustache或者jtpl吗?&
3.& 很傻比的封装一串自己的所谓数据模块组件,与不同类型的数据源做数据传输和适配,一般都不会分层很清晰,加入后台数据字段改了,写框架的都没脑子的,从来不做数据字段的自定义适配(举个例子,原来后台传递的字段是person.userName,现在改成了小写,person.username,你就傻逼的去吧模板再改一下吧,其实要解决这个问题,非常简单,在MVVM层中引入一层DO,领域对象层,Module到DO之间还有一层转换就可以搞定这个问题)
4.& 非不暴露自己的自定义事件模型,就是那个观察者模式啦,自己乱七八招在页面上绑定一堆form change之类的事件,以实现View与Module的单向绑定
5.& 所谓的双向绑定,也就是OOP语言中早被烂透了的getter,setter模型,ES5+可以用defineProperty,低版本就需要自己在js object赋值的时间做写死代码方式的处理了
我们再来看细节
1. 双向绑定
号称是最难理解的地方,其实是框架的作者根本就没理解Java社区对于软件开发分层理解的精髓
标准的数据驱动开发,应该如上图所示,在一个View的生命周期内,一个ViewModule会管理一个DomainObject(业务模型),一个DO可能包括多个Module数据模型,一个Module可能来自多个数据源,而不是想很多所谓的MVVM框架那样强迫一个M来一个数据源
按照上图标准分层方式来划分的好处,在于,逻辑清晰,Module层粒度够细,可以被多次复用
DO层与VM层View层属于一一对应关系,方便对数据做增删改查的同步
每一层应该是独立的,非一定要使用MVVM框架的紧耦合,可以用自己使用不同的js插件或者模块实现MVVM
我们抛弃框架,单纯的看数据,其实我们要解决的问题很简单
a) 当DO对象属性放生变化时候,通知View更新
b) 当View上表单值放生变化时,通知DO更新,并异步通知队列同步到数据源
先来看问题a,这个最简单,DO是一个基本的Javascript Object,我们在View上的模板显示是这个Object.property,
改变一个Object对象的方式无非几种,一种是
a) 显示Object.property = &我是傻逼&
b) xxxx.methodName(Object, &property&, &我是傻逼&)
c) xxxx.merge(Object, {&property&: &我是傻逼&})
如果是a的情况,ES5+,可以通过设置Object.defefineProperty(&property&,{set: functiono(){},get:function(){}}),来做赋值和取值的监控触发
对于IE8一下,因为js不支持运算符重载,所以暂时没有好的办法,所以如果只考虑移动端的话,直接defineProperty就全部搞定,如果是要考虑PC的话,就不建议开发者使用直接赋值的方式,参考java的开发模式,也是推荐OOP时候,使用set方式赋值,而不是直接=赋值
当然了,如果你非要兼容IE8一下的话,用定时器做轮训,配合for in 反射,通过脏数据与原始备份对比的方法也是一种办法,不过这种办法在当前页面非常耗性能,由于IE8一下不支持多线程,HTML5 worker,如果未来flash 插件支持多线程的话,倒是可以用js和flash插件做线程交互的方式做脏数据检测
如果是b的情况,那就太简单了,在methodName里面触发对于该属性修改的回调即可,如何注册回调呢,首先我们要实现一个类似Dom Event的自定义对象的Event模型,然后通过类似Dom Event的注册事件方式,注册观察者,订阅事件,当执行了methodName时候,发送消息,通知所有订阅者执行回调
如果是c的情况,类似b一样处理
这样一看,双向数据绑定的问题就非常简单的解决了
我们再来看另外一个MVVM的问题,非简单数据模型,复合数据模型(DO的属性值不是一个string,而是一个Object,且这个Object可能还嵌套多层Obejct的时候)的处理办法,这个一般的MVVM框架直接不考虑,或者通过长字段名的方式绕过这个问题
这个问题是这样的,早在10几年前,java structs框架流行的时候就出现了,当一个表单,出现需要对两个Java Bean做update操作时候,一个bean是user,一个bean是成绩
对应的表单字段名,就是 user表.name,user表.id,score表.point,
在struct2里面,处理逻辑是把 &点&作为特殊符号,在做form序列化时候,非包含点的字段的值都是string,包含点的字段是一个Object,比如刚才的form序列化之后结果就是 { user: {id :&& , name: &&}, score: {id: &&, point: &&}}
同理在MVVM实现时,也是一样,认为点是分割对象的关键字,这样我们就可以实现把多个对象嵌套到View模板里面,实现复合Object的双向映射
最后一个问题,也就是高级MVVM编程里面必须要面对的问题,就是自定义事件的广播和冒泡,我看过大多数的MVVM框架,对于广播,这块有部分实现了,但是对于冒泡一个都没实现
其实这个真的不是很复杂的问题,事件广播,这个最简单,三岁小孩都能写,我们在注册回调时候,不是有一个事件队列吗,在回调时候,通过特殊标记位,控制是否继续扩散广播,还是执行完毕终止即可
而自定义事件的冒泡要骚骚复杂一些,他是由于OOP编程里面的继承和包含关系引申而来的,我们先说包含关系,前面说了MVVM框架里面,都会声明一块地方为VM控制区域,一般垃圾的框架都不会考虑,VM嵌套的情况,因为图简单吗
但是实际开发过程中,你会遇到很多这种情况,就是VM复用的问题,一般都是发现使用了MVVM框架之后,发现VM定义的太大,没法复用,如果要复用VM就又发现VM定义的太小,出现需要VM嵌套的情况没法用
其实简单,我们知道DOM事件是有冒泡的,VM同理,只要在自定义事件模型里面定义了VM的父子关系,或者同级关联关系,即可实现VM的自定义事件的广播和冒泡,另外也解决了VM复用的问题,可以让代码颗粒度更小
另外那种,声明式编程这种老掉牙的概念就真的别在吵了,还记得10几年前的structs的tag吗,js圈子里面这种通过自定义tag,自定义className,自定义属性,挂载js来自定识别执行逻辑的例子大把皆是,还是建议广大前端开发,不要浮躁,多像java社区学习,多多从根本上了解分层理念的精髓,不要听了吹牛逼,听风就是雨,还是多了解原理才是真理啊
最近心情很不好,股票大跌,公司的事情你懂的,写这篇文档纯属没事找事,欢迎广大道友开骂,来陪我大战三百回合
阅读(...) 评论()本周热点&每日小情书:不要怪自己太重感情,你只是太没出息,所以才连个不爱你的人...80后&富二代&接班人李兆会,用了11年时间(2003—20...第三集本集讲述的是发生在马来西亚的一起华人女性王丽涓在闹市区被绑架、谋杀的案件。...表情包来得太快就像龙卷风……现在的人一言不合就开始扔狗↓你们这样做考虑过狗的感受...导读  4月14日大哥在微博上向LOL知名主播小智公开约战,小智立马发微博做出了...Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。
Java可运行于多个平台,如Windows, Mac OS,及其他多种UNIX版本的系统。
本教程通过简单的实例将让大家更好的了解JAVA编程语言。
我的第一个JAVA程序
以下我们通过一个简单的实例来展示 Java 编程,创建文件 HelloWorld.java(文件名需与类名一致), 代码如下:
public class HelloWorld {
&&&&public static void main(String []args) {
&&&&&&&&System.out.println("Hello World");
运行以上实例,输出结果如下:
$ javac HelloWorld.java
$ java HelloWorld
Hello World
执行命令解析:
以上我们使用了两个命令 javac 和 java。
命令用于将 java 源文件编译为 class 字节码文件,如: javac HelloWorld.java。
运行javac命令后,如果成功编译没有错误的话,会出现一个 HelloWorld.class 的文件。
java 命令可以运行 class 字节码文件,如: java HelloWorld。
注意:java命令后面不要加.class。
Gif 图演示:
开始学习JAVA编程}

我要回帖

更多关于 html5好学不 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信