为什么深入学习js,这个问题可以替换成任何一门语言。
你既然学习了前端,你就会发现前端的确不过是一堆特效的堆砌和数据的渲染而已。
可是按照这样的套路来说,后端也只是从数据库增删改查数据,然后处理一下前端的请求而已。
既然给一件事物定了特性,轻视它,那么任何东西都不过如此。
在7,8年前,前端就是简单的这些特效,然后后端拿到你的模板,套后端模板引擎。这样的模式在很长一段时间内,都毫无问题。因为以前的B端都停留在简单的用户交互和数据显示。
可是时间稍微向前一点,我们可以看到市场对于B端越来越看好,将很多复杂的C端功能搬到B端上,产生大量用完即走的应用。这样简单的数据显示和copy from stackoverflow and pasting internet的方式开始不奏效了。人们开始发掘前端的力量了,js也开始慢慢的发光发热。
一旦我们开始复杂的应用编写,就会涉及到大量数据的交互,频繁的数据变动导致view视图的变化,操作复杂。数据的流动又带来了大量状态变化,如何控制状态成为了问题。
复杂的应用一般对应着缓慢和低效,怎么解决低效和打开网页速度慢的情况,减少初始页的加载时间成了一个关键问题。因为这个涉及到用户量的流失。
复杂的应用,js代码量肯定很大,淘宝的购物车代码估计就有几千行,怎么有效的管理代码又是一个问题。因为程序是大家一群人的共同协作,你写的代码不仅健壮性要强,还需要简洁,能够让大家比较清晰的了解你的意图。
复杂的应用你在开发的时候和上线的版本肯定不一样,开发的要求是易于调试,上线是要求跑的好,跑的快。这样你就需要一个工具来帮你解决最后上线的问题。
我想简单的说到这里你大概已经明白了一点,需要深入学习js,是因为你将会面对复杂应用开发的挑战。上面的问题你将会一一遇到。
深入学习js有什么用处?
比如一个简单的例子,js中,你看完入门的原型链,作用域,一些对象方法,闭包,this之后,开始写代码,你发现有时候你写的代码居然会具有二义性,也会是不确定的,检查着,然后发现是你在异步获取时,没有处理好程序的顺序,导致竞态的发生,于是你开始使用回调方法来处理这种问题,可是写着写着,你就爆炸了,你写出了大量的回调函数嵌套,里面是你的一大堆程序逻辑,乱糟糟的,你开始还觉得没什么,直到有一天,出了事情,你老板跟你说,你的程序多扣了用户的money,你要死了,怎么会这样,于是你检查代码,发现完全看不懂。直到很多天后,终于搞好了,你下决心开始用promise简化代码,于是你的代码中出现了漂亮的链式调用,没有复杂的回调嵌套了。很开心对不对,可是到某一天产品改需求了,你需要在某个promise过程中,做一件事情,可是promise没法中断,这可怎么办,于是你引入了generator生成器,使用协程来处理这种问题。这样就很完美了,可是这一天,又发生了,用户钱被多扣的问题,我艹,怎么回事,你发现是你用的第三方promise库里的测试代码多运行了一次函数。这样就牵扯到了第三方库的信任问题,你不能把控制权反转给不信任的库,你需要自己信任的程序把握程序控制权。于是你又开始改代码。
慢慢的折磨之下,你终于成为了前端leader,然后你的小兵在引用你的库的时候,出了一堆错,心里默默的骂了一句,智障垃圾老大。到后来你发现你写的代码库过度信任开发者的输入,导致在某个函数输入中,参数的类型是错误的,你又开始改代码。。。直到有一天,后端出了事,你要去对接,要学习python。。。。发现,咦,这个语法真他妈像js,这个也像,嗯,简单。。。。然后很快解决了问题。。
看完上面的故事,有没有觉得,你他妈想升职,不深入学习js大概根本是不可能的吧。深入学习了一门语言,然后入门其他的语言更是简单。
最后,大概你进入前端这个门,就会知道,你的确应该被称为工程师,至少自己是这样称呼自己的。因为你正在做的是一个工程,而不是简单的写代码。
登录 | 立即注册