基础数据结构与算法

现在有两个不同的JSON,比较复杂,可以参考这里的DEMO中返回的JSON。要比较它们的差异,除了用现成的工具如

beyond compare

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

二分法

去快速定位找到有差异的JSON属性,即使是1024个字段的大数据,也最多10次的定位即可找到。其实算法这东西,并不是给你一道题目然后把死记下来的内容背出来,而是当你遇到相应的情景时,能想到用这个方法去解决。

HTML/CSS

DOCTYPE

曾经项目中遇到这样一个问题,用其他浏览器打开页面是好的,唯独是IE8打开时出奇地慢。我注意到IE8打开时慢但CPU消耗并不高,只是网页空白很久没渲染出来,可以排除JS算法上的问题。经过细心研读代码发现,有人把一部分script、 link等标签放到了

DOCTYPE

的前面。

DOCTYPE

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

DOCTYPE

也是没有意义的了。把

DOCTYPE

放到HTML部分的最前面,一开始提及的问题就解决了。

块状元素/内联元素,盒子模型

HTML/CSS有一个特征,不会报错,只会有浏览器渲染出来的结果不符合设计的逻辑这个问题,所以遇到问题时也很难拿到网上去搜索答案。所以要把HTML/CSS写好,首先要自己理解当中的一些基础原理,要说HTML布局,

块状元素/内联元素

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

盒子模型

。另外,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去实现

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

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

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

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

  1. 好程序员分享24个canvas基础知识小结

    好程序员分享24个canvas基础知识小结,非常全面详尽,推荐给大家. 现把canvas的知识点总结如下,以便随时查阅. 1.填充矩形 fillRect(x,y,width,height); 2.绘制 ...

  2. 好程序员分享24个canvas基础知识小结 1

    好程序员分享24个canvas基础知识小结,非常全面详尽,推荐给大家. 现把canvas的知识点总结如下,以便随时查阅. 1.填充矩形 fillRect(x,y,width,height); 2.绘制 ...

  3. java前台界面设计_前端程序员要懂的 UI 设计知识

    前端程序员要懂的 UI 设计知识 疯狂的技术宅 前端先锋 翻译:疯狂的技术宅 作者:Per Harald Borgen 来源:freecodecamp 正文共:1401 字 预计阅读时间:5分钟 作为 ...

  4. 软考 程序员教程-第一章 计算机系统基础知识

    软考 程序员教程-第一章 计算机系统基础知识 为了督促自己学习,告别懒惰,在此先给自己定个小目标,请大家监督哟! 目标:一个月内过一遍<程序员教程>,下一个月开始上真题. 简单看了下,我在 ...

  5. 软考 程序员教程-第二章 操作系统基础知识

    软考 程序员教程-第二章 操作系统基础知识 第二章 操作系统基础知识 2.1.操作系统概述(第四版教程P44) 操作系统的4个特征:并发性.共享性.虚拟性.不确定性. 操作系统的5个功能:处理机管理. ...

  6. 非科班的java程序员该如何补充计算机基础知识,需要看哪些书?

    java比较特殊,毕竟后端扛霸子,想要认真学好java,必须有好的计算机基础,可是为什么需要基础呢? 把这个问题弄明白,要学哪些基础知识就清楚多了. 第一个问题,10个用户使用的系统和1000000个 ...

  7. 程序员必会的核心基础知识:1张导图+10本书

    ▲点击可查看大图 一年一度的秋招即将拉开序幕,程序员"金九银十"跳槽季也接踵而至.大部分互联网公司都会进行基础知识的考察,基础知识的重要性不言而喻. 计算机基础知识对程序员来说为什 ...

  8. 程序员教程-1章-计算机系统基础知识

    觉得自己看第一章看了很长时间,才看了二.三十页,而且也是稀里糊涂的,先记下吧.(补记:稀里糊涂看完了,这章只考选择题,也就没深入了解,其实是了解一下头就大) 先记录一下目录结构,方便以后回忆内容. 本 ...

  9. Java程序员面试笔试宝典-Java基础知识(一)

    本文内容基于<Java程序员面试笔试宝典>,何昊.薛鹏.叶向阳著. 1. 基本概念 1.1 Java语言有哪些优点? 1.2 Java与C++有什么异同? 1.3 为什么需要public ...

最新文章

  1. Android:字节跳动必备Context原理解析及使用
  2. java 执行cd_Java调用Linux命令(cd的处理)
  3. java类加载器_类加载器
  4. AE中获得datalayer所对应的data的文件路径和文件名
  5. Flowable 数据库表结构 ACT_HI_TASKINST
  6. Kali Linux安装Remmina无法加载RDP插件
  7. 易语言夜神模拟器操控模块调用方法
  8. npn三种波形失真_RF测试笔记:三阶交调失真概述及测试
  9. 毫米波雷达信号处理系统
  10. (一)C 语言之数据类型与变量之间的关系
  11. java jks 转pfx_JKS、BKS、PFX证书格式之间转换
  12. 实战项目——智能农业沙盘
  13. Linux查看CPU和内存使用情况
  14. 小程序拼团商城系统开发
  15. sql中的窗口函数:lead,lag
  16. mysql中授权主机通配的_什么意思_windows和linux虚拟机配置mysql主从
  17. 20160803 - C:\WINDOWS\system32\config\systemprofile\Desktop 不可用的解决
  18. 从电影《流浪地球》中学项目管理
  19. 成都年末最具干货的技术沙龙,小游戏小程序一网打尽!
  20. 经常使用的function Module

热门文章

  1. android 退出多个activity,Android 中 退出多个activity的经典方法
  2. java语言编程基础_java语言编程基础
  3. java 访问内部类的属性_java中的内部类详细总结
  4. 华为mate40RS能升级鸿蒙,mate40Pro和40RS能用上鸿蒙系统吗
  5. 提高速度 - MyEclipse配置
  6. Python 基础 - 4.3 random模块
  7. [POJ2151]Check the difficulty of problems(概率DP)
  8. [bzoj3532][Sdoi2014]Lis
  9. System.Timers.Timer 嵌套 System.Windows.Forms.Timer的问题
  10. C#实现整数冒泡排序、选择排序