我对js开发程序语言的理解
作者:秋了秋 发表时间:2016年04月10日
据说js最先出现的时候是用来进行表单验证的,在它出现之前一直都用后台语言如php来验证。经过一段时间对js的学习,说说我对js的理解。
js也是一种开发语言,js跟php是类似的,只是有些写法不一样,逻辑与结构大致相同,js能干的事情有些php也能干,php能干的有些事情js也能干,那为什么要用js,原因在于js是客户端语言,在客户端上运行,而php是服务器语言,在服务器上运行,但凡在服务器上运行的程序响应速度都是比在本机上运行得慢。所以能用js做的事情绝不用php来做,这就是js的优点。相对缺点是不能存储数据到服务器永久保存,各有各的优劣。
js最大的用处就是操作Dom(从网页制作角度来讲)。曾今看到过某个某个公司的招聘上这样写到:只会用js(jq)操作dom的不要。当时看到我就笑了,说白了,js在网页上大部分的角色就是操作dom,这也是它与php对比的特色,也是它的专属权,没有dom,它连运行的舞台都没有,包括canvas绘图,也是在dom结构上绘制。当然也有脱离dom的,但是比较少见的,比如说纯用在计算上,如核反应堆等应用,这些特例就不说了,反正js就是因dom而存在,它的主要且重要功能就是交互设计。
曾在某个论坛上看到有人说“我发现其实写前端比设计要来得简单点,写前端,运用的脑袋活量其实没有设计那么头疼的”,我一看这评论就知道这是一个前端菜鸟,当时是这样评论的:
“认为前端没设计困难,可能楼主没遇到真正的需求,或者高要求的一些公司,你说的只是切图。 发表下我的看法,就算是切图也是一门技术活,你认为很简单,是因为你没做到位,不是说实现了效果就行,还有很多方面都要考虑到,布局方法和技巧,兼容性,seo,命名,语义化,简化,维护成本等等,设计是图层操作,前端是代码操作,从切图上来说,前端要比设计累人。 前端也是设计,只是基于代码的设计,在js上尤为如此,同一个效果实现方法可能千重万种,你要如何实现,你代码写的质量如何,细腻度如何,该怎样构思你的代码? 关于js的算法和逻辑,交互和体验,你懂的,大部分人都卡在这js里面,技术是个无底洞,永远都有你学不完的东西。”
我还经常看到过这样一句话:“如今前端是一个热门行业,大量企业都求贤若渴,然而为什么市场上这么多前端人员,而企业却招不到人,并不是说市场上缺少前端人员,而是缺少高级前端开发工程师。每个企业都想招技术一流的,什么都会的全栈工程师”。
而js却是区分前端工程师重量级程度的标准之一,我所认识的前端,很少说有精通js的,基本都是会点html和css就可以写页面的,大部分人都卡在js上面。因为html和css是跟美学有关,而js是跟数学、物理和设计有关,相对来说复杂许多,入手的门槛就高了许多。
js除了基本概念和理论知识弄懂之外,最重要的还是想象力,有足够丰富的想象力和足够的实践经验才能让一副作品发挥到极致,令人看了瞋舌的地步,这也是想象力的设计功底。
以前总是看到有人总喜欢去研究插件和框架的用法,就连一个小功能都要网上找插件。其实这是极其不好的,况且是使用而非借鉴,你使用的是别人的想像力,别人的设计,你不费吹灰之力,自然就没得提高和突破。代码一定要研究透彻,越底层越好,保持刨根问底的求学欲望,最好就是自己动手,凭借自己的意念构造代码。
关于技术的提高,你可以不实际码代码,但切不可连想都不想,有时候我写代码的时候遇到问题解决不了,走在路上也会在想办法,想着想着就解决了,这就是进步。即使没有解决,但凡想了一定有所收获。最差最差的收获就是你对相关代码会更加了解,下次碰到这种代码的时候会更加小心。
学js切不可心浮气躁,曾听某人抱怨:“我一遇到问题就像热锅上的蚂蚁——团团转,好想摔东西,好想摔碗,好想哭”。其一是真的遇到难得技术点,而你却把它当成普通的技术点来看待,一时半会写不出来就急,其实人家这效果就是需要很强的逻辑性以及要写很多代码,你应该静下心来分析实现思路,把思路整理一下,然后再一步一步地去写,给自己定个长一点的时间来完成,一天行吧,不行两天。切不可把需要两天完成的事情看成几个小时就能完成,不然就会出现这种症状——热锅上的蚂蚁。所以估算能力很重要。有时候我们看别人写的js代码好像不多,也就一两百行,感觉十几分钟就写完了。其实不是这样的,很有可能别人是写了几天的成果,一点一点堆砌而成,改了又改,一直完善到没有任何bug,写个几天一点都不奇怪。而你一眼就看完了别人花几天写的代码,认为,哦,也就那回事,真让你写个新的方法未必写得出来。
只要涉及到想象力的东西,都没有精通一说,活到老学到老,因为想象力是无穷的。