热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

前端之变(一):技术的变与不变

前端,之,变,一,技

从本周开始,我将就前端技术之变做的一些思考记录下来。

这是第一篇: 技术的变与不变

变与不变

首先,做为一个技术人员,你要明白一个道理:

> 对技术而言:唯一不变的事情就是变化

所以,想要成为一个优秀的程序员,你不能期望只精通一门语言或几种框架类库,就能成为你永恒的资本,让你在技术的世界无往而不胜。

这是不可能存在的事情。

这也是为什么很多技术人员搞了一些年就准备退出的原因所在,可能随着年龄的增长,他们认为自己已经无法再跟得上这种变化了,受困于自己的思维或能力,他们期望能从这种变化中逃出来,去寻找一种他们期望的稳定的能安心立命的东西。当然,在他们的思维中,这个肯定不是『技术』

但显然这是缪论。

因为这些人没有意识到技术在变的过程中,存在着『不变』的东西。一旦你掌握及理解了不变的东西,所谓的变化对你而言,可能就如同换肤一样轻易与简单。

这也是为什么国外很多优秀的程序员一把年纪了还是在技术第一线。这样的例子不胜枚举,Robert C.Martin,Martin Flow还有Linux的作者。

而我们这,可能30还没到,很多编码的就想着怎么逃出去,觉得自己可能学不动了或干不动了。

为什么别人能做到的事,在我们这片土地上,我们做不到?这是非常我们反思与思考的一个现象。

我在2020年与前端的一些交集,让我意识到了技术的这种变与不变。对我而言,仿佛这是一个全新的世界。

这也是我想分享出来的原因所在。

我与前端

大多数前端人员是流水线式的,可能从编码开始就做的前端,然后一直投入在前端这个方向中,后面变化的只是时间及经验,2年,5年或更多。

显然,我并不能算是一个前端技术人员,事实上我与主流的前端技术人员的经历相差过大,我很难说自己是他们中的一员或与他们的经历类似。

我与前端的交集并不是个流水线。它是断点式的。

主要可能有三个阶段:

阶段一:工作之前

在这个阶段,因为自己的专业与计算机有点关联,记得大学还专门有个课程就是学习HTML知识的,当时应该是HTML4,这门课程结束时老师还要求用HTML做个网站。

这可能是我与前端的第一次相遇。

阶段二:后端开发

我工作的很长一段时间是在后端开发,可能现在的后端人员没有这种经历,但在我做后端的那些年,前端并不是一个独立的技术方向,事实上,当时的前端更多的是后端兼顾的。

所以,现在可能大多数前端人员不太知道的一些技术其实在早期也是可以算是前端的技术,比如JSP,Freemarker模板,还有Struts页面等。

这些是什么东西?可能现在的前端与后端人员都不太熟知这些技术了。因为现在的主流开发模式应该是前后端分离。也就是后端逻辑后台人员来实现,然后提供REST API接口。而前端逻辑由前端人员来处理。但在我工作的早几年,可不是这么回事,那个时候的页面可是由后端人员自己来做,方式就是上面说的类似JSP,Freemarker模板这些技术。

为什么?

因为当时前端技术本身不足以提供动态渲染复杂页面的技术能力

随着WEB页面越来越复杂,早期的HTML这种静态页面已经完全不能适应复杂WEB页面的需要,但当时前端本身又根本提供不了动态渲染复杂页面的能力,JQuery这种动态DOM操作虽然有一定的页面操作能力,但不能应付非常复杂的页面,于是由后端动态渲染页面,成为了当时的主流。

阶段三:前后端分离

在2020年之前的几年时间,我都主要是在负责移动端相关的编码工作,这个阶段与后端打交道不多,虽然还是有一些。与前端就基本没打过交道了。

所以,等我2020年再次与前端相遇时,前端已经是完全不同的世界了。我所熟悉的JQuery也好,HTML也好,在这个前端的世界基本可以说是处在边缘甚至可以说是被抛弃的技术了。

2020年上半年,我开始PCX的开发工作,这个是基于Electron的跨平台桌面开发。

我是用了前端的一整套技术搭配,包括TypeScript,React,WebPack,Mobx等,做了个跨平台的桌面软件。

基于Electron及前端的跨平台桌面软件

也就是我并不是做前端开发,但由于这玩意其实就是基于一整套前端技术而开发的,所以我搞完这个,自然也就再次明白现在的前端开发怎么回事了。

哪些改变了,哪些没有改变?

由于不是流水线式的经验,而是这种断点式的,再结合我有后端,移动端的开发经验。所以,我就会觉得前端技术的发展有点不可思议,相比后端与移动端,简单可以说是天翻地覆式的变革。

所以,我也时常思考,什么原因?

它改变了

是的,很显然,它改变的太多了。

后端与移动端这几年的技术变化远不能与前端相提并论。

虽然我在前几年没怎么接触后端,但等我再回到后端时,没有任何生疏感。主流的无非是从SSH变为Spring Boot,再就是微服务的流行。事实上,就算微服务兴起,它仍然没有办法取代过往的单体或集群服务这种模式。或者新兴的Kotlin或响应式编程这种模式,但这种本来也是少众,不可能成为主流,而且就算以这些来论,其变化的幅度仍然与前端不可相提并论。

而在移动端,无非是原生开发,Hibrid混合开发,再就是类似React Native与Flutter跨平台开发这些,这些远称不上改变,它们也只是不同的解决方案而已,适应不同的场景,并不算得上演进或改变。因为它们之中没有任何一种模式能压倒性的取代其它模式。

而前端则全然不同,它并不只是出现了新的技术或框架这么简单,更多它是一种新的编码理念完全取代了旧有的编码理念,新的编码模式压倒性的取代了旧有的编码模式。

包括但不限于:

  • 前端由后端渲染转变为前端动态渲染

  • 从HTML+JS这种脚本式编码变化为TypeScript+React这种面向对象的编码

  • 出现了React,Vue这种组件式的UI编码,取代了旧有的HTML+JQuery的DOM操作这种模式的UI编码

  • 从命令式UI到声明式UI的转变

  • 从编码就是产物,到编码与产物完全是两种截然不同的东西

这些改变,用天翻地覆来形容并不为过。

它没有变化

当然,由于我在后端与移动端也有编码经验,所以当我把前端的这些变化放大到整个技术背景来看,我就能发现它又有很多东西其实并没有改变。

给人一种以前游离在外的小孩回到了主流的队伍的感觉而已。

包括但不限于:

  • TypeScript是面向对象的语言,它与Java极为类似。
  • 我把DDD领域驱动应用取了PCX的开发
  • 我在PCX抽取的数据库的框架,是我在iOS抽取的数据库框架的复刻版而已。
  • 前端可以应用基本的面像对象的原则及设计模式了

所以,看到没,如果把范围放大,你说它改变了么?

道与术

这就是我在2020年的感悟到的一个最大的事情 ,技术这个东西原来存在变与不变两方面的东西的。

这就是道与术

理解并掌握了这个,你就能成为一名优秀的程序员,不会害怕任何改变或新技术。

关于道与术,我后续另外会专门讲这些话题。

事实上,我在准备做PCX时,上面讲的几个前端技术我一个都没有接触过,而TypeScript还是我从其他前端人员中听来的,直至要搞前我都不知道前端还有这个技术,这些玩意我当时也只是花了2周看了下是什么就开始搞了。最终我花了不到5个月的时间,完成了PCX的第一个版本。

而在今年搞myddd-vertx之前,我对kotlin与vert.x也基本一无所知,但myddd-vertx从我起意到实现再到应用到一个具体的项目,可能2个月时间都没有。

所以,你想成为优秀的程序员,一定要去追寻编码之道。

前端之变与原因

我在前端讲述过了前端的这些变化 ,意味着前端的编码发生了一个质变。

那究竟前端发生了什么样的改变,具体表现是什么?

又是什么导致前端发生了这种质变?

下个文章我再来讲述:前端之变(二):前端的变化与原因追寻


推荐阅读
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 【SSH网上商城项目实战15】线程、定时器同步首页数据(类似于博客定期更新排名)...
    转自:https:blog.csdn.neteson_15articledetails51387378上一节我们做完了首页UI界面,但是有个问题 ... [详细]
  • spring-session解决session一致性问题,Go语言社区,Golang程序员人脉社 ... [详细]
  • Java开发框架!Alibaba高并发业务秒杀系统落地实战文档,砥砺前行!
    接口概述:接口是Java语言中的一种引用类型,是方法的集合,所以接口的内部主要就是定义方法,包含常量,抽象方法(JDK ... [详细]
  • Eclipse中SpringBoot响应jsp的简单demo
    首先在Eclipse里新建一个maven工程,这里的打包类型和父包如果后续再去pom中添加也可以此时的工程路径是这样的接下来去到pom中添加相关的依赖,如果有报错mavenupda ... [详细]
  • 本节书摘来自华章计算机《Web前端开发最佳实践》一书中的第2章,第2.2节,作者:党 建更多章节内容可以访问云栖社区“华章计算机”公众号查看。2.2 前端代码重构代码 ... [详细]
  • 作者|相学长原文|https:github.comwuomzfxblogblobmasterthis.md日常开发中,我们经常用到this。例如用Jquery绑定事件 ... [详细]
  • CSS3圆角技术能非常好的美化你的页面效果,而且避免了使用图片辅助,一则省去了制作图片的时间,二则省去了浏览器加载图片造成的延迟和带宽。如 ... [详细]
  • 本文提供了成为成功软件工程师的7条建议,包括不要低估自己、公司需要你、投资自己等。通过学习新技术、提升编码技能,软件工程师可以获得更好的职业机会和更高的薪水,同时也增强自信。投资自己是取得成功的关键。 ... [详细]
  • React基础篇一 - JSX语法扩展与使用
    本文介绍了React基础篇一中的JSX语法扩展与使用。JSX是一种JavaScript的语法扩展,用于描述React中的用户界面。文章详细介绍了在JSX中使用表达式的方法,并给出了一个示例代码。最后,提到了JSX在编译后会被转化为普通的JavaScript对象。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • wpf+mvvm代码组织结构及实现方式
    本文介绍了wpf+mvvm代码组织结构的由来和实现方式。作者回顾了自己大学时期接触wpf开发和mvvm模式的经历,认为mvvm模式使得开发更加专注于业务且高效。与此同时,作者指出mvvm模式相较于mvc模式的优势。文章还提到了当没有mvvm时处理数据和UI交互的例子,以及前后端分离和组件化的概念。作者希望能够只关注原始数据结构,将数据交给UI自行改变,从而解放劳动力,避免加班。 ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
  • 本文介绍了自学Vue的第01天的内容,包括学习目标、学习资料的收集和学习方法的选择。作者解释了为什么要学习Vue以及选择Vue的原因,包括完善的中文文档、较低的学习曲线、使用人数众多等。作者还列举了自己选择的学习资料,包括全新vue2.5核心技术全方位讲解+实战精讲教程、全新vue2.5项目实战全家桶单页面仿京东电商等。最后,作者提出了学习方法,包括简单的入门课程和实战课程。 ... [详细]
  • Sets和数组一样,都是一些有序值的的集合,但是Sets和数组又有所不同,首先Sets集合中不能存有相同的值,如果你向Set ... [详细]
author-avatar
快活林2007
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有