前端程序员容易忽视的一些基础知识

基础数据结构与算法 如今有两个不一样的JSON,比较复杂,能够参考这里的DEMO中返回的JSON。要比较它们的差别,除了用现成的工具如javascript

beyond compare

之外,若是咱们的机器上没有安装这个工具,能如何较快解决?做为一个程序员,一个个对比是不可行的,对比完也不会有什么收获。我会把之放进Excel中(若是你机器连这个都没有,那忽视我),先排序,再用php

二分法

去快速定位找到有差别的JSON属性,即便是1024个字段的大数据,也最多10次的定位便可找到。其实算法这东西,并非给你一道题目而后把死记下来的内容背出来,而是当你遇到相应的情景时,能想到用这个方法去解决。
HTML/CSS DOCTYPE 曾经项目中遇到这样一个问题,用其余浏览器打开页面是好的,惟独是IE8打开时出奇地慢。我注意到IE8打开时慢但CPU消耗并不高,只是网页空白好久没渲染出来,能够排除JS算法上的问题。通过细心研读代码发现,有人把一部分script、 link等标签放到了css

DOCTYPE

的前面。前端

DOCTYPE

是用来告诉浏览器解释整个文档的一套法则的,必定要放在HTML部分的最前面,先有script标签,那就意味着浏览器已经开始解释了,后面再有java

DOCTYPE

也是没有意义的了。把jquery

DOCTYPE

放到HTML部分的最前面,一开始说起的问题就解决了。
块状元素/内联元素,盒子模型 HTML/CSS有一个特征,不会报错,只会有浏览器渲染出来的结果不符合设计的逻辑这个问题,因此遇到问题时也很难拿到网上去搜索答案。因此要把HTML/CSS写好,首先要本身理解当中的一些基础原理,要说HTML布局,程序员

块状元素/内联元素

之间的关系我认为是最基础的,延伸出去,就是CSSajax

盒子模型

。另外,HTML中元素的嵌套组合关系也是十分重要的,CSS中不少属性,如position,z-index,都是基于父对象而言的,撇开HTML去谈CSS是无心义的。换而言之,要正则表达式

在结构(Structure)之下谈论表现(Presentation)

。充分理解HTML/CSS中的这些基础,而后制定出适用的一套规范方案,绝对让团队的工做效率提升,事半功倍。
HTML/CSS就能作到的事情,无必要把它交给javascript去作 HTML5中一个较大的改进是表单项、多了不少实用属性如required,date控件等,可是表单的一些很基础的用法,仍是不能忘记的。曾经遇到过有人想要实现点击radio旁边的文字时也要选中radio,因而就用jQuery去选择,写事件。其实,这个功能,只须要用一个label标签把input包含在里面就能够实现了)。还有一些例子,如IE的条件注释,CSS hack,这些功能我也见过去用javascript去实现算法

if(isIE() && IE.Verson == 7){//这些是人有封装好的方法
$(".something").css({width:"700px"})
}

这样的代码只会白白耗费浏览器的性能。

HTML/CSS就能作到的事情,无必要把它交给javascript去作


HTTP协议 如今不少项目中都是用ajax去提交JSON到后台了,原始的那种HTTP提交已经比较少见(至少在个人项目中是这样),可是咱们也不能忘记设置form的method、action的原始提交方式,由于这个才是表单提交的原型,有助于咱们理解HTTP协议,例如POST和GET的区别,理解数据是怎么样从前端到达后端的,又是怎么样从后端返回到前端。当你理解了这个,就能够更好地跟后端进行沟通,遇到数据上的问题也能较快地定位解决。
javascript 做用域 学过好几种的编程语言,做用域问题都是老生常谈了。在javascript中更是有函数的做用域这一基础知识。关于这个,推荐《javascript权威指南》。当时我是把中文的读去再去读英文,把英文的读完去找图解,才感受到把这一点理解清楚的。
JQuery 选择器 在一个HTML DOM 树中,我要进行一个比较复杂的元素选择,不包含某些文字的带有某某类名的元素的邻居的父元素的……而后怎么作?写一个很复杂的

jQuery

选择器?打住。jquery选择器原理是用正则表达式去分解你的选择器字符串(这一部分叫作

Sizzle

),而后再用内置的一些遍历函数如prev,next等(其实这些函数也是基于DOM提供的方法),去找到你想要的元素。我会不去盲目地进行Sizzle的语义歧义测试,而是本身根据本身的逻辑去用prev,next等去找到本身的元素;并且退一万步来讲,我也会尽可能避免使用复杂的选择器(以前的方案也有说起),单位个元素用ID,多个元素用类,绝对高效准确。
学习前端的同窗们,欢迎加入前端学习交流群
前端学习交流QQ群:461593224
转载于猿2048:➫《前端程序员容易忽视的一些基础知识》

相关文章
相关标签/搜索