从大环境也好,行业发展也好,过去10年的前端技术晋级路径已经彻底失效。我在去年看了一眼考公的职位,没有任何一个岗位可以由前端胜任,而如果在后端领域比较资深的话,进可以做技术咨询,退可以考架构公务编。在过去这些年里,我不能说投资前端是一场失败,但在当下这个时间节点上,不能说是成功。因此,我们应该想一想,我们如何将这10来年积累的技术和经验,赋予一个新的意义。
另一方面,当下的前端开发本身也存在问题。从整个行业来看,随着互联网2.0时代落幕,工业互联网的黯然神伤,真正对技术深度需求比较大的非常少,例如figma、剪映、飞书、腾讯文档、qq秀等等这类需要具备非常小众的深度的资深技术的岗位很少,而绝大多的前端开发者拉平来看,除了经验不同,技术差别并不大。于此同时,低代码正在取代前端开发者,很多系统不在需要前端开发者,后端的人拖拉拽就可以生成一个界面给到用户去用,虽说没有什么设计感,但是能实现目的。再者,AIGC正在颠覆前端开发的方式,在figma上面,可以搜索出一大堆设计稿直接输出为vue、react、微信小程序的插件,以前我们需要花很多力气才能开发好上线的,现在只需要有一个前端跟着设计师把导出的代码再整理整理就可以发布。虽然前端领域还在有新技术出现,web标准和新接口还在出,但从国内前端的发展来看,似乎已经到了百足之虫,死而不僵的局面,除非有大的风口,否则很难再出现整个互联网行业狂欢的局面。
今天我在刷公众号时,发现国内掀起了一波转鸿蒙系统的高潮,各类一线厂商都开始准备为鸿蒙生态构建自己的应用。这是一个非常有意思的信号。虽然这里面有很多值得质疑的地方,但是不得不说,在这种信号面前,不同的人,听出不同的声音。
前段时间,小米发布了自己在做澎湃系统,当时很多人和鸿蒙做对比,认为鸿蒙与安卓割席绝交,不再支持安卓应用,是割裂生态,让开发者再次回到了必须为不同系统定制应用的时代。虽然我也有90%认同这一观点,对华为很多行为有些鄙视,对其对待员工的方式也颇有异议。但是从宏观层面,作为独立生态的鸿蒙正在不断成长,而且速度很快,健全度很好,可以预见未来一定可以在消费类科技软硬件生态中占有非常重要的地位。除了电脑、手机、手表等终端,华为还拥有智能家居、电视、甚至汽车等消费品终端,而且鸿蒙系统具有嵌入式的能力,在其他工业、机器人、电信通信等领域,也可以开放给开发者来做大它的生态。可以说,在生态的完整度上,华为比小米还要厉害,而且华为的产品远销发达国家,单品价格还高,可见其商业能力也远超小米,如果这种商业收益能够在将来反哺给开发者,相信开发者也能从中受益。如果这样来看,华为的消费品领域,真的在对标苹果,作为中国的民族企业,没有上市的情况下,能够做出如此成绩,确实非常令人敬佩。
我在了解了鸿蒙应用开发之后,发现,如果我们前端开发者拥有这10年来的经验,要切换到鸿蒙生态中真的是非常容易。理由有如下几点:
完善的开发体系和文档
和一些装装样子的国内系统不同,鸿蒙的开发体系真的很完善,从IDE到调试工具,文档也很全,还有视频教程。对于前端开发者而言,只要自己从头开始在自己的电脑上搭建过开发环境,都能按照鸿蒙文档搭建起自己的鸿蒙开发环境。而且作为后起之秀,鸿蒙团队也考虑到了开发者水平,没有整非常多高大上的名词和概念,开发文档中的很多概念都是现有行业中见过的,只要你曾经在安卓、前端、后端等社区里面听说过,都能快速理解它的概念。
承TS/JS的开发语言
鸿蒙提供了ArkTS开发语言,虽然它早期甚至直接抄前端开发的html+css+js的开发模式,但是可能考虑到性能等方面的原因,现在已经把重点放在了ArkTS。ArkTS就是在Typescript的基础上,再扩充了一些语法,不多,也不难,但凡用过vue或react写过应用的,都可以上手,因为它们的底层都是js。这可以说是为前端转行鸿蒙应用开发扫清了障碍,似乎华为很早就知道2024年前端行业惨状,提前布局拯救无数失足青年一样。
ArkUI视图框架
在原理和写法上非常类似谷歌的flutter,在地位和效果上非常类似苹果的swiftUI。使用ArkUI来开发鸿蒙应用,不仅不需要自己再引入一套类似antdesign一样的UI库,而且声明式的写法很简单,甚至它是跨平台的,在电脑和手机、手表之间可以无缝切换。作为框架,它还通过编程范式,让UI和逻辑分离,有点类似小程序的架构,从而保证了性能。一旦上手,可以说比用vue、react生态来开发应用还要简单,而且还可以在一种具有规范化的代码组织体系下写代码,心情也更愉悦。
ArkUI X跨平台同构框架
既然和flutter很像,那么基于和flutter一样的道理,我们甚至可以用ArkUI来写web应用,甚至转化为小程序,实现一码多端。
响应式编程
熟悉vue的同学,都对这个词不陌生。没错,立足于TS的ArkUI,竟然和早期的Vue Class 组件的设计思路几乎一样,遵循响应式编程,通过直接修改struct上的属性的值来触发UI的更新。这让我们在写鸿蒙应用的时候,又倍感亲切了一些。
原生应用
不过别忘了,我们在用ArkUI写程序时,是真的在写原生应用。在过去几年里,前端一直希望能过侵入到原生应用开发,不过最终都走了一些弯路,例如react native,仅仅是写UI层,要调系统底层还是得用原生系统支持的语言来开发模块后链接到项目中,例如electron虽然可以开发桌面应用程序,但是性能又令人堪忧。flutter完全抛弃了js生态,启用dart作为开发语言。而基于ArkUI写的应用,就像用swiftUI写的Mac应用一样,不仅丝滑,而且可以调用系统组件,例如系统气泡、小挂件、通知窗口等等。
而在微观代码层面,你时不时就会冒出“这不就是flutter”“这不就是vue”“这不就是react native”“这不就是微信小程序”“这不就是安卓”等等这一类的想法,可以说,作为新生代的生态缔造者,鸿蒙团队在拿捏开发者心态时,也是做到了游刃有余。
字节码
ArkTS经过编译器之后,形成方舟字节码,实际分发的程序都是以字节码的形态运行,比前端领域的代码分发安全得多。当然,它之所以要用字节码,很有可能是因为它需要在不同设备(不同CPU架构)上跑,因此,底层还是基于类似JVM的虚拟机来跑更好。
天时地利
当前这个时间点,鸿蒙正处于蓄势待发的阶段,你说鸿蒙这个项目会黄,在两年前可能有人会信,但是现在,有谁会信?随着各大厂商的入驻,慢慢的整个软件生态就会起来,最核心的一点是,华为的商业能力,能让生态中的合作伙伴赚到钱,那么,这个生态就会持续下去。而对于我们开发者个人而言,在生态早期入局,不一定大富大贵,但在2024年前端行业普遍扑街的时间节点上,或许能给我们带来一些不一样的结果。
最后,我还是想要重复我的观点:虽然前端的技术本身还在发展,但是国内的前端就业已经“攻守之势异也”,而在这个时间节点上,鸿蒙早就用ArkTS这一诚意满满的语言向前端开发者敞开了大门,我们不妨放下偏见看一看,说不定又是另外一番景象。
转行鸿蒙需要学习些啥?该怎么学?
**首先得是开发语言 ArkTS,这个尤为重要,然后就是ArkUI声明式UI开发、Stage模型、网络/数据库管理、分布式应用开发、进程间通信与线程间通信技术、OpenHarmony多媒体技术……等。**像中间还有许多的知识点,这边都以梳理成思维导图的形式了,并分成了八大专类
路线图适合人群
- IT开发人员:想要拓展职业边界,享受新技术溢价红利;
- 零基础小白:鸿蒙爱好者,希望从0到1学习,增加一项技能。
为了能让大家更好的学习鸿蒙 (OpenHarmony) 开发技术,这边特意整理了《鸿蒙 (OpenHarmony)开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05
《鸿蒙 (OpenHarmony)开发学习手册》:https://qr21.cn/FV7h05
入门必看:https://qr21.cn/FV7h05
1. 应用开发导读(ArkTS)
2. ……
HarmonyOS 概念:https://qr21.cn/FV7h05
- 系统定义
- 技术架构
- 技术特性
- 系统安全
如何快速入门:https://qr21.cn/FV7h05
1. 基本概念
2. 构建第一个ArkTS应用
3. 构建第一个JS应用
4. ……
开发基础知识:https://qr21.cn/FV7h05
1. 应用基础知识
2. 配置文件
3. 应用数据管理
4. 应用安全管理
5. 应用隐私保护
6. 三方应用调用管控机制
7. 资源分类与访问
8. 学习ArkTS语言
9. ……
基于ArkTS 开发:https://qr21.cn/FV7h05
1. Ability开发
2. UI开发
3. 公共事件与通知
4. 窗口管理
5. 媒体
6. 安全
7. 网络与链接
8. 电话服务
9. 数据管理
10. 后台任务(Background Task)管理
11. 设备管理
12. 设备使用信息统计
13. DFX
14. 国际化开发
15. 折叠屏系列
16. ……