前端开发与数学

前端开发一般只是操作一些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,谢谢阅读

本文分享自微信公众号 - web前端教室(webfeel)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-09-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏禁心尽力

对于JSONObject,我只是临时抱佛脚

  说起JSON,大家就谈不上陌生了,因为对于数据传输语言,各位只认json,即使有XML语言,但是各位很少用吧。我也是,但是之前用过的json转换工具各种各样...

24990
来自专栏张善友的专栏

SignalR 在IE中无法工作 - Internet Explorer

运行基于SignalR的超线程上载器的代码,发现SignalR 在IE 9上居然没法工作了,提示如下: ? 提示很明显,需要json2.js的支持。 使用Nug...

250100
来自专栏张善友的专栏

Json.NET 3.0

Json.NET,提供相当完整的文档之外,还提供了 LINQ to JSON 的 LINQ Provider 可以更方便的读取JSON 对象,今后将可比以往用更...

22560
来自专栏phodal

通过使用结构化数据 JSON-LD,我为网站带来了更多的流量

最近,我尝试在『玩点什么』网站上,引入了 AMP、APP Indexing,以及结构化数据 JSON-LD。其中 JSON-LD 的效果,最令人惊艳。 结构化数...

47250
来自专栏GreenLeaves

JavaScript之JSON

一、简介:Json是JavaScript中读取结构化数据更好的方式。因为Json数据可以直接传给eval(),而且不必创建DOM对象。Json是一种数据格式,不...

29070
来自专栏Spark学习技巧

Spark高级操作之json复杂和嵌套数据结构的操作二

一,准备阶段 Json格式里面有map结构和嵌套json也是很合理的。本文将举例说明如何用spark解析包含复杂的嵌套数据结构,map。现实中的例子是,一个设备...

2.7K110
来自专栏向治洪

Android StringEntity() 和 UrlEncodedFormEntity() 的区别

今天在做安卓客户端向服务器提交数据的过程中,在组织POST数据时,用了UrlEncodedFormEntity()这个方法,但是后台报错,说是无法解析json...

290100
来自专栏张善友的专栏

Jayrock: JSON and JSON-RPC for .NET

mojoPortal 项目中使用Joyrock和MagicAjaxNET,他没有使用Asp.net ajax ,是因为mojoPortal是一个运行在Windo...

28980
来自专栏phodal

打造基于GitHub的O2O应用:超炫的地图交互

先上Demo啦~~~~~ ? 或许你已经使用过了相应多的省市区与地图联动,但是这些联动往往是单向的、不可逆。并且这些数据往往都是在线使用的,不能离线使用。下图是...

32560
来自专栏phodal

编辑-发布-开发分离: 静态API设计

周末在计划着Growth的最外一层,即解决方案的时候,想着自己要做一个静态的API——即基于JSON与GitHub的API。 ? 在之前的那篇《编辑-发布-开发...

23480

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励