博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端程序员容易忽视的一些基础知识[转]
阅读量:6516 次
发布时间:2019-06-24

本文共 2020 字,大约阅读时间需要 6 分钟。

切身体会,从项目中小结出 前端程序员容易忽视的一些基础知识

基础数据结构与算法

现在有两个不同的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是无意义的。充分理解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协议,例如,理解数据是怎么样从前端到达后端的,又是怎么样从后端返回到前端。当你理解了这个,就可以更好地跟后端进行沟通,遇到数据上的问题也能较快地定位解决。

javascript

作用域

学过好几种的编程语言,作用域问题都是老生常谈了。在javascript中更是有函数的作用域这一基础知识。关于这个,推荐《javascript权威指南》。当时我是把中文的读去再去读英文,把英文的读完去找,才感觉到把这一点理解清楚的。

JQuery

选择器

在一个HTML DOM 树中,我要进行一个比较复杂的元素选择,不包含某些文字的带有某某类名的元素的邻居的父元素的……然后怎么做?写一个很复杂的jQuery选择器?打住。jquery选择器原理是用去分解你的选择器字符串(这一部分叫做Sizzle),然后再用内置的一些遍历函数如prev,next等(其实这些函数也是基于DOM提供的方法),去找到你想要的元素。我会不去盲目地进行Sizzle的语义歧义测试,而是自己根据自己的逻辑去用prev,next等去找到自己的元素;而且退一万步来说,我也会尽量避免使用复杂的选择器(之前的也有提及),单位个元素用ID,多个元素用类,绝对高效准确。

以上是本人在实际项目中小结的部分容易忽视的基础,还有更多的,还要在以后一步步积累,归纳基础知识,避免这些问题。希望能帮助到大家,也能抛砖引玉。

 

 

文章转至:

转载于:https://www.cnblogs.com/showme/p/3559892.html

你可能感兴趣的文章
如何重现难以重现的bug
查看>>
别随便安装 Pokemon GO被曝藏恶意后门
查看>>
BBC即将推出Britflix流媒体服务:欲成为英国版Netflix
查看>>
行成于思:从Oracle到MySQL
查看>>
让数据会思考会说话,为出海企业提供多样化数据智能解决方案
查看>>
我眼中的自动化测试框架设计要点
查看>>
FLIF:自由的无损图像格式
查看>>
《计算机系统:核心概念及软硬件实现(原书第4版)》——3.7 总结
查看>>
Google开源Inception-ResNet-v2,提升图像分类水准
查看>>
《我的视频我做主:Premiere Pro CS5实战精粹》——1.4 Adobe Premiere Pro CS5介绍
查看>>
Opera 出售细节曝光:昆仑出资1.68亿美元
查看>>
《Adobe Flash CS5 ActionScript 3.0中文版经典教程》——1 导航Flash时间轴 1.1 课程概述...
查看>>
Node.js Undocumented(2)
查看>>
解决@ResponseBody注解返回中文乱码
查看>>
Netty代码分析
查看>>
《趣学Python编程》—— 1.4 保存Python程序
查看>>
java.util.concurrent.CopyOnWriteArrayList 线程安全的List
查看>>
PgSQL · 特性分析 · checkpoint机制浅析
查看>>
《Docker——容器与容器云(第2版)》--书评
查看>>
Android native应用开发简明教程 (1) - 本地开发武器库概览
查看>>