最早接触到网页前端,应该是大学的时候,为学校内部做的一个新生报到系统。使用的当时最流行的网页三件套,dreamweare,接触到最基础的js,css,html。其实入门css语法很简单,但是要想实用,必须要有实际项目经验才可以,就看哪个项目让你搭上。
这几年,前端火了,因为突然之间,每家公司都要拥抱互联网,而互联网的开始就是要有自己的服务器,自己的网站,so it happened.
那前端的发展,会有一些标志性的技术的框架,来代替某个阶段。
我不想很系统的去说,因为那就变成教课书的文章了。所以我只说我认为的,虽然这样有点任性。
首先谈下jquery,对的,被老司机嗤之以鼻的东西,确实带动前端前进步伐的好东西。所有人都知道用原生去操纵dom,还有兼容浏览器是多么痛苦的事情,有人把代码前端代码的混乱归咎为jquery的法语糖,这是很没有道理的,不能把自己的松散的编程习惯,归咎为某一工具,jquery还会一直存在,并且还是绝大多数网站的首选,除非ES版本的迭代,创造出更多方便的东西,显然很多人可能不知道,ES5/6有些标准和新特性引用了jquery的东西。当然我们还不能忘记zepto,类jquery的mobile库,简化了很多功能,提供了mobile的touch事件,可以并非可以取代jquery,还有jquerymobile库,一个很有前瞻性的产品,但可惜生不逢时。
然后我们谈下angular.js,knockout.js,vue.js等(中间略过很多前端view如backbone,handlebar之流,因为仅仅是套框架,没有形成现象),angular.js是让我们真正体会到前端MVC框架的产品,但是被google玩坏了,据说搞版本没有向下兼容,曾经在项目中使用过一次,后起没再回复,所以不再追溯。这些框架并不是MVC,MVVM等框架的理念,而是让数据去驱动视图的概念。jquery可能最大的问题是,数据、展现、事件是混合的,代码上没有明确的界限。但是vue等可以,把数据抽离出来,做成双向绑定。
提到前端的进阶,肯定会提到React,我觉得不然,React最大的两个特性是,虚拟DOM和模块开发。技术很好,但我觉得这并非是前端程序员必经的一条路。
隔了很多天了,一直没有静下心来重新动笔,后半篇来讲下前端的工程化吧。
grunt/gulp,刚接触工程化的同学,可以从这两个入手,再深入其他大的框架。工程化都是要nodejs的基础,所以需要后台语言的技能,node就会涉及到包管理,npm是必须要会用的,东西也不多,如果不做模块开发,可以不用很深入了解包的开发流程。这里有个误区,nodejs并非新的一门语言,所以学习成本相对比较低,如果有python,php等语言基础,其实很容易过度到nodejs的开发,server端的机制是要明白的,怎么搭建一个web server,用你aphach,nginx来做网络映射。还有mvc的架构知识,都对前端工程化的应用过程有帮助。react,vue等,都并非纯前端的框架系统,配合nodejs后台做路由和状态管理,都是很好得到解决方案,但是好的解决方案也要看产品和应用,特别是重架构的框架系统,并非所有产品都适合,这是很多程序员应该注意的。
这篇文章,我不会再继续更新了,后续还是写些教程类的东西,比较系统的介绍一些框架和语言技术。
这里我有个观点,其实判断一个程序员的好与差,并非会多少框架,而是看他的知识体系,框架是永远学不完的,你需要了解的是框架的核心思想和解决的是什么问题,并且是主流的,这样,新的框架出来,其实也就那样,多了些语法糖,多了些新的技术接口而已。