现代前端为何如此臃肿

139 阅读5分钟

现代前端为何如此臃肿

记录一位AFK程序员回归编程后,再学前端的困惑

我记忆中的前端

我是在2015年开始的编程之旅,始于前端开发,也就是最简单的网页开发,所接触的编程语言,就是HTML、CSS和JavaScript。

那时的前端开发不像现在这么有表现力,比如各式各样的动效,以及细致的表现力,阴影、圆角、渐变等。

但是那时的前端也不像现在如此复杂和臃肿,代码清晰可读,开发过程简单明了,跟后端开发是完全不同的体验。

再学前端,已经看不懂

最近重回编程,再学前端,发现前端已经完全变样。

前端的入门门槛仍然是极低的,我在mozilla官网花了几个小时的时间,回顾了HTML、CSS和JavaScript,就又能开始开发网页应用了。

虽然不会太美观,很多细微的样式不会,但是也能够把简单的网页搭建起来,实现简单的JS交互实现。

于是我继续学习,发现现在最流行的JavaScript框架是Vue框架,CSS框架是TailwindCSS,UI框架是Element-PlusAnt-Design等。

在学习这些框架时,发现学习曲线开始变得陡峭,概念越来越多,项目也变得越来越臃肿(这里指dev)。

比如:

  1. 都需要使用npm安装一堆node_modules,那么你需要去学习这些包管理工具,比如npmyarn

  2. 项目目录中会充斥着各种配置文件,不论是工具还是框架都有自己的配置文件,你还需要学习怎么去配置各种配置文件。

  3. 由于无法直接在浏览器中调试代码,需要使用vitewebpack打包工具,再使用http-server启动一个服务器,才能看到网页效果,那么你还需要去学习这些打包工具。

  4. 轮子越来越多,学了Vue发现要学Vue-RouterVuex,学了TailwindCSS发现要学SASSPostCSS,就像有一条很长的依赖链。

  5. 代码写法越来越复杂,项目结构越来越复杂,前端完全发展为后端化,比如面向对象编程,模块化编程,异步编程,各种设计模式等。

总之,整个前端的学习过程,虽然不难(跟计算机算法和底层知识比),但让我感觉到前端越来越复杂,越来越臃肿,有一种永远学不完的感觉。

为什么成熟就会变得臃肿

这次重学前端让我反思这样一个问题,为什么前端在变得越来越成熟的的同时,也变得越来越臃肿?

首先,一个最主要的问题就是现在的应用已经越来越复杂,无论在样式和动效,又或对于功能的要求,已经是越来越复杂。

为了要实现复杂的功能,必然会增加代码的复杂度,从而导致代码变得臃肿。这是一个计算机行业,以及编程本身发展过程中必然存在的现象。

其次,前端在追求模块化和组件化,以达到复用和抽象的目的,这样做的目的是为了代码的复用,提高开发效率。但是由于前端是在Html、CSS和JavaScript的基础上发展起来的,所以为了达到理想的工业化程度,必然会造大量的轮子。

大量的轮子,必然会带来更多的复杂度,让项目变得臃肿,让学习变的陡峭,让学习变的停不下来。

这让我想起原来听过的演讲,讲到人类的发展就是发明出一个东西,然后这个东西造成了很多问题,然后再发明一个更复杂的东西去解决这个东西造成的问题,然后这个东西又会造成新的问题,让我们离原始的问题越来越远。

展望

这里,让我想到了一件事,就是基础技术的更新。

在目前,前端技术已经非常成熟了,但是我们搭建这些技术的基础技术却相对原始。

如果网页不是以html、CSS、JavaScript这样三者语言结合的形式来开发的呢?

如果网页开发被设计为只使用一个语言就可以完成所有的开发了,是不是就会简单的多?

为什么要分前端语言和后端语言,为什么没有一种语言可以同时完成前端和后端开发呢?(原来没有,现在JavaScript凭借NodeJS可以做到一门语言前后端通吃,但还需要发展)

再进一步思考,网页只是一种展示形式,我们的移动端,还要分安卓和IOS,如果你希望你的应用跑在安卓和IOS上,那么你还要学习Java和Swift。有没有一种前端语言可以实现跨平台呢?

提出问题简单,解决问题难。

现在众多的技术问题,其根本还是需要基础技术的发展,如果基础技术能更加成熟,那么也不会发生我今天学习前端遇到的这些问题,也不至于学的那么杂。

所以,我们现在所处在的计算机时代和现在所拥有的计算机技术,以未来的视角来看,仍然处于一个非常初级的阶段。

当然现在我们现在计算机技术出现了一个非常关键的加速器,就是AI技术。

愿未来的程序员不再是程序员,能够使用AI技术快速实现产品的开发。