前端开发一般只是操作一些DOM,请求一些JSON,重绘一些DOM,处理一些缓存,触发一些事件,有什么难的?值那么多钱?二十K,三十三K?前端的核心技术,无非是JS而已,一个脚本程序,有什么难的,连多线程也没有,没有类、对象,没有私有作用域,这么一个东西,却搞出那么多K的工资,凭什么呢?
在化工领域有那么一句话,抛开剂量谈毒性都是耍流氓。那么在前端行业,也是一样,抛开量级谈技术也都是耍流氓。
远的不说,例如QQ空间的每日并发,3亿至少;淘宝的双十一并发请求是多少?!不管什么样前端页面,在巨量的并发面前,都会变成一个极有挑战性的任务。这时,优化就是一个必然的选择,要么优化前端,要么添加硬件。这事件上是一个深度和广度的选择问题,深度就是挖掘前端潜力;广度自然就是横向的思考方式,即添加机器数量。
如何选择呢?这篇文章要说的不是优化或是选择方案。而是面对这种复杂问题的时候,数学起了什么样的作用。
画风转换太快了是吗?也许,不过这些目的明确的问题,在数学领域其实都算是简单的问题了。至少它的解决方向是可理解、可操作的。数学做为抽像的极致,能引领你进行深入本质的思考。至少以我目前的智商,我可以认为操作数据,就是操作前端的本质。而事件只是一个触发器,它可以是任何东西。那么在面对复杂的前端业务的时候,会透过层层需求,直达数据的底层。
在我浅显的智商看来,数据结构就是一种数学的归纳。人们常说在前端领域,用JS来实现数据结构的字典,队列,链表,二叉、多叉等等,显示不出数据结构的优势。言下之意,JS就搞搞JSON,搞搞DOM就OK了,搞那么深度的东西没效果的。
我相信这样想的人不在少数,但他们忽略了一个事实,就是你在学习数据结构,学习数学的时候,重要的不是你学到了什么公式,而是在学这些的时候,你脑子里在想什么,你脑子里的思维是如何与现实世界对接的。在看这些数学方面的东西的时候,你是如何去体会JS也现实业务与现实中的人的操作,他们之间的内在联系,这些联系,就是数学,就是规律。
一个用户点击菜单btn,返回菜单json,生成菜单并展开N级,每级又有Y层子菜单,点击某个菜单项,发起一个请求,再返回一个JSON,,,十万个用户也是类似的操作,会对服务器,对数据库产生什么样的压力,如何缓存、并发,前端如何检验新旧数据,等等,
点击事件是开始,接下来这一系列的事情,前端、后端、服务、数据库、中间件等等多个事物之间的关系,都是由data来穿联起来的。那么对它们之间的关系进行抽像、分析,本事就是一种数学思维,它会让你对业务的本质有更深刻的认识,会让你思考DOM之下的更层次的活动,这就是“有深度的思考”。
你获取DOM,你操作data,你生成节点,也许并没有用到基本的for、if,但要明白任何复杂的前端操作的逻辑必然是建立在这些最简单的规律规则之上,任何复杂的业务、逻辑,它背后的规则必然是简单的。就如果if else true false 这些绝无歧义的数学规律。
想到哪说到哪,写有的点乱。我的数学水平也是感人,如果文中哪些数学方面的东西说错了,请大家自行跳过。
Orz,谢谢阅读