web前端技术与原生技术的竞争, 及未来的发展

感情迁移 提交于 2020-02-25 23:55:17

用户界面领域: 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的工作, 但是, 这两者都是需要精通的!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!