用户界面领域: web技术与原生技术之争

除了浏览器中运行之外, html5的技术也在app领域和移动端的安卓, iOS, 以及桌面端的window, linux以及OS X展开了竞争. 同样属于用户界面领域, 他们各有各的优势. 在不同的时期和环境下, 受重视程度会不同.

原生技术的优势

  • 性能 原生应用大多采用编译性语言, 如java, object-c进行编写, 直接编译成二进制码, 速度快.
  • 对硬件功能的调用 如设备上最新推出的功能, 原生应用可以完美调用. 而web技术可能调用起来相对麻烦.
  • 软件大小 web技术本身套壳的方式就带来了很多不需要的代码, 原生应用就可以避免.

web语言的优势

  • 跨平台兼容性 现在终端越来越多: 除了电脑之外, 手机, 平板, 电纸书, 手持设备, 自助设备, 智能电器, 眼镜, 以及超级app--微信都将提供可交互的用户界面. 因为这些设备是不同的系统在运行的, 所以, 使用原生代码编写, 可能需要针对每一种设备单独进行编写一套程序; 而使用web语言编写, 则是需要支持该设备的壳. 只要这个壳设计得够标准, 通过稍微的适配, 就可以一套web程序, 兼容不同的平台.
  • 开发周期短 得力于脚本语言的优势, 配合强大的库, 可以更便捷的进行开发.
  • 升级迭代容易 原生app有个很大的问题, 就是升级需要通过系统的功能. 而webapp, 依赖于壳, 作为壳的内部行为, 不用通过系统就能直接升级成为最新的版本. 或者它就是个网页, 发给用户的就是最新的.
  • 作为网页可搜索 如果把web技术用来制作网页, 它的内容将可以被搜索引擎搜索到. 成为整个互联网信息的一部分, 而不是某个应用软件所处的一亩三分地中的数据.

综上所述

  • 原生技术适合多动画, 大数据量, 交互十分细腻的大中型项目.
  • web技术适合对性能要求不高, 需要快速开发抢占市场的中小型项目.

对未来的预测

我大胆预测, 短期几年内:

  • 游戏, 调用非主流硬件, 知名应用方面, 原生app将一直占据该市场.
  • 在雨后春笋般爆发出来的新的创业型中小项目方面, 在业务本身只是一些常规操作的情况下, 随着硬件性能的提升, web技术将逐渐吞食原生应用的市场.
  • 在用web程序初步获取市场成功后, 将会出现不同的选择: 立刻转型原生应用, 还是继续保持web应用来快速迭代. 无论如何, 都将是逐渐逐渐转化为原生应用.

那么, 从长期来看:

  • 硬件和操作系统的革新, 带动新的用户习惯. 而与之对应的原生技术将获得重视. 甚至后面可能出现的温感, 空间感, 3d投影, 全息投影, 动作捕捉等技术. 都将带动某种原生技术的发展.
  • 在该用户习惯被普及后, 跨平台的轻量级技术(现在主要的可能性就是web技术)将会立刻填补到很多轻量级应用的开发上面.

web前端技术的自身的变化

还有一个问题, 现在的web前端技术是否会被淘汰?
现在热门的框架, 一定会被更优秀的, 更先进的框架所淘汰, 或者说自己破茧重生.
不光如此, 我认为, html, css, javascript这些语言也会被淘汰. 但是淘汰不是被现在原生语言取代, 而是成为一种新的跨平台web语言:

  • 有可能该语言自身会逐渐发展, 就算是向前兼容, 很多使用上和几年前的这个语言相比, 已经面目全非. 可以说是一种新的语言.
  • 解释平台(比如浏览器)只要提供兼容接口, 就可以使用另外一种更强的语言来代替html, css, javascript.

但我觉得前端工程师并不需要担心, 就算是新的技术替代了现在的技术, 这种新技术也基本不可能是一种完全不同的技术. 他可能是现在技术的升级版, 并且由前端工程师中的优秀分子, 而不是其他岗位的人率先尝试并推行使用, 他们可能类似jade, sass, coffeeScript而已. 更重要的是, 变化的只是语言的写法和api, 而不是架构的模式, 业务的逻辑和交互的流程. 优秀的前端工程师, 会短时间甚至第一时间, 就用上新的语言. 这些语言, 会更简洁, 并且更强大!


css工程师和js工程师是否分家

某些领域会. css工程师只需要提供样式变化和动画的接口给js工程师, 就可以分别招聘最合适的人来分工合作. 并且让每个岗位的人更关注于某细分领域的职责.
而有些领域则不会. 比如组件化开发的项目中, html已经变成模板, 而css样式已经和组件的通过js完成的各种配置耦合在了一起.
同时, 在泛前端的工作中, 远远不是只有cssjavascript的工作! 只要有分工, 就需要有一个人能够统一整个前端的工作. 对于任何一个前端, 可能某个项目中不会做css或者js的工作, 但是, 这两者都是需要精通的!

web前端技术与原生技术的竞争, 及未来的发展的更多相关文章

  1. 必知干货:Web前端应用十种常用技术你全都知道吗?

    Web前端应用十种常用技术,随着JS与XHTML的应用普及,越来越多的web界面应用技术出现在网站上,比如我们常见的日历控件,搜索下拉框等,这些web界面应用技术大大的丰富了网站的表现形式,本文将为您 ...

  2. [转] Web前端开发工程师常用技术网站整理

    1.常用工具相关 有道云笔记 http://note.youdao.com/signIn/index.html 36镇-最好用的共享收藏夹 http://www.36zhen.com/ 浏览器同步测试 ...

  3. Web前端开发工程师常用技术网站整理

    1.常用工具相关 有道云笔记 http://note.youdao.com/signIn/index.html 36镇-最好用的共享收藏夹 http://www.36zhen.com/ 浏览器同步测试 ...

  4. 学习Web前端开发时有哪些技术点

    现在学前端的人是越来越多,学习质量也是参差不齐.过来人的身份告诉你,如果你还没有下定决心花时间去学习Web前端,那也可以先找些视频学习下,Web前端开发有哪些常见技术点!接下来,就看看Web前端开发有 ...

  5. 一文读懂前端技术演进:盘点Web前端20年的技术变迁史

    本文原文由作者“司徒正美”发布于公众号“前端你别闹”,即时通讯网收录时有改动,感谢原作者的分享. 1.引言 1990 年,第一个Web浏览器的诞生:1991 年,WWW诞生,这标志着前端技术的开始. ...

  6. 论如何在手机端web前端实现自定义原生控件的样式

    手机开发webapp的同学一定遇到过这样问题,如何为丑极了的手机元素应用自定义的样式.首先,要弄清楚为什么要定义手机原生控件的样式,就需要看看手机的那些原生框样式的丑陋摸样: android: ios ...

  7. Web前端新手想提升自身岗位竞争力,需做好这3件事!

    Web前端开发行业的发展前景毋庸置疑,只要是互联网企业,几乎都需要Web前端开发工程师.虽然Web前端入行门槛低,但竞争逐渐激烈,想要取得高薪,就一定要具备强大的实力.那么,在重庆Web前端培训学习中 ...

  8. 谈谈Web前端工程师的定位

    原文地址:http://www.360doc.com/content/10/0708/17/1277406_37692580.shtml 2010-07-08  锋子chans   阅 1116  转 ...

  9. 100本最棒的web前端图书推荐

    前端技术,要学习的内容太多了,当你不知道从哪里开始的时候,你就先从看书开始,边看书边码代码,这个是学习编程必须的过程,因为你看一百遍,还不如自己写一遍,写一遍,第一可以加印象,第二便于更好的理解. 熟 ...

随机推荐

  1. vue 组件通信传值

    父子组件通信: 子组件 <template> <div> <h3 @click="alerrt"> 我是子组件一</h3> < ...

  2. css的基本操作学习--css样式,选择器,hover,文字属性,文本属性,背景

    什么是css? 通配符选择器 <head> /* *通配符选择器 匹配任何元素 */ *{ margin: 0; padding: 0; } </head> css样式有三种 ...

  3. SCU Travel

    Travel The country frog lives in has n towns which are conveniently numbered by 1,2,…,n . Among n(n− ...

  4. Python 3 条件语句

    条件语句:  用于判定,判定是否符合某条件,符合则执行,不符合则不执行该条件所定义的操作. 一步判定:  用于理解不会这样使用. if  1==1:    if条件判定只能出现一次. print(&q ...

  5. [POJ1456]Supermarket(贪心 + 优先队列 || 并查集)

    传送门 1.贪心 + 优先队列 按照时间排序从前往后 很简单不多说 ——代码 #include <queue> #include <cstdio> #include <i ...

  6. Java端百度云推送消息Demo

    因为在做Java服务器有用到推送消息机制,于是到网上找了一下,就自己试着敲了一个demo.这个demo主要是简单的一个对app消息推送. jar:百度云消息推送Java端的jar. package x ...

  7. Clojure:日期操作方法

    ;; 日期格式转换 (def df (java.text.SimpleDateFormat. "yyyy-MM-dd hh:mm:ss")) ;; 字符串转换到日期 (defn s ...

  8. gitserver提交代码的总结

    将更新的代码提交到gitserver上所须要的步骤: 1.git pull 更新代码到最新 2,git add 文件名称 加入要提交的文件 3,git commit  -m  "关于改动的内 ...

  9. Lucene 4.0 TieredMergePolicy

    默认的merge policy. findMerges: 先将全部段依照扣除删除文档之后的字节数(bytesize * (1.0 - delRatio))降序排,对当中size() > 2.5G ...

  10. Codeforces Round #277 (Div. 2)A. Calculating Function 水

    A. Calculating Function   For a positive integer n let's define a function f: f(n) =  - 1 + 2 - 3 +  ...