`

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

阅读更多

基础数据结构与算法

现在有两个不同的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,多个元素用类,绝对高效准确。

分享到:
评论

相关推荐

    黑马程序员测试题部分答案

    例如,可能有C++、Java、Python等编程语言的题目解析,数据库查询的问题解答,还有可能涉及数据结构、算法、操作系统、网络等计算机科学的基础知识。 通过这份资料,学习者可以针对性地查找自己在学习过程中遇到的...

    程序员复习系统全面.zip

    总的来说,"程序员复习系统全面.zip"是一个全面的资源库,旨在帮助程序员巩固基础,提升技术广度和深度,同时也提醒我们在忙碌的工作中不应忽视基础知识的学习和更新。通过系统地复习这些内容,不仅可以为面试做好...

    如何成为优秀的程序员

    【如何成为优秀的程序员】 在IT行业中,成为一名优秀的程序员是许多技术爱好者追求的目标。这不仅意味着具备扎实的技术基础,还需要不断学习、创新以及良好的团队协作能力。40分钟的嵌入式培训机构亚嵌老师的讲解,...

    黑马程序员struts2人员管理系统

    总结起来,"黑马程序员Struts2人员管理系统"项目涵盖了Struts2框架的基础知识,包括MVC模式的理解、Action的编写、拦截器的使用、数据库操作、JSP页面设计等。通过实际操作,开发者不仅可以提升技能,还能更好地理解...

    程序员如何从小白到大神——免费程序课程培训宣传ppt模板.rar

    除了语言学习外,计算机科学的基础知识如数据结构、算法和操作系统原理是不可忽视的。这些知识能够帮助程序员更深入地理解软件工作原理,提升软件开发的效率和质量。数据结构和算法训练了程序员的逻辑思维能力,而...

    程序员从初级到高级的秘诀(经验之谈)

    每一个程序员都应该从最基础的“Hello World”程序开始学习。这不仅是为了熟悉语言的基本语法,更是为了培养良好的编码习惯。随着实践经验的积累,逐步扩展到更复杂的项目。例如,从简单的网页应用开始,逐渐过渡到...

    盘点程序员新年要做的10个决定.pdf

    首先,持续学习新的技术是程序员不可忽视的首要任务。技术世界的快速迭代意味着旧技术的淡出和新技术的崛起。以NodeJS为例,它改变了前端和后端的界限,将JavaScript的应用带入了服务器端。因此,程序员必须保持好奇...

    程序员面试宝典与技巧

    这通常包括数据结构、算法、操作系统原理和计算机网络等基础知识。面试官往往通过编程题目来考核求职者的逻辑思维能力和问题解决能力。例如,面试中可能会出现即兴编程任务,要求求职者现场编写一段代码以解决具体...

    程序员简历模板91.docx

    模板中提到求职者毕业于南京大学计算机网络应用专业,这不仅为求职者提供了扎实的计算机科学基础知识,还特别强调了其在编程语言(如Visual Basic)和专业英语方面的专业能力。由于程序员这一职位对英语沟通能力要求...

    基础最重要 程序员应聘面试经验谈

    尽管基础知识至关重要,但紧跟技术前沿同样不可忽视。关注最新的技术动态有助于提升自己的竞争力,具体可以通过以下方式实现: - **跟踪主流媒体**:定期阅读权威的技术博客、论坛和技术新闻网站,了解最新的技术...

    程序员面试宝典.pdf

    本书可能还涵盖了一些具体的技术面试主题,比如C/C++、Java、Python、Go等编程语言的面试题,数据结构与算法的考察,操作系统原理,后端架构,计算机系统知识,数据库管理,计算机网络,设计模式,前端开发,汇编...

    2022程序员面试的自我介绍模板8篇.pdf,这是一份不错的文件

    除了技术能力,实践能力也是程序员面试中不可忽视的一环。求职者需要在自我介绍中,描述自己参与过的实践项目,包括个人在项目中扮演的角色、完成的工作以及取得的成果。社会实践经验、团队项目、甚至是个人的开源...

    写给程序员的web设计书pdf

    首先,Web设计的基础知识是必不可少的,包括HTML、CSS和JavaScript,这三种语言构成了Web页面的基础。HTML(超文本标记语言)用于定义页面结构,CSS(层叠样式表)则负责页面的布局和视觉样式,而JavaScript则是实现...

    程序员自我学习自我培训指南(收藏)

    开始时,通过观看视频教程快速了解基础知识,VeryCD和YouTube等平台提供大量资源。对于英文视频,YouTube和微软的WebCast是很好的来源,如C#的面向对象设计模式、C#2.0和现代C#系列课程,这些都能帮你建立坚实的基础...

    IBM AS400 程序员培训手册(中级)_IBM_RPG_book_AS400_

    这本《IBM AS400程序员培训手册(中级)》是针对已经掌握RPG基础的开发者设计的,旨在深化他们对RPG语言的理解和应用能力。 ### RPG语言概述 RPG是一种过程驱动的语言,它的设计目标是为了简化商业应用程序的开发...

    Linux系统基础知识梳理

    前端开发相比后端开发,接触 Linux 机会相对较少,因此往往容易忽视它。但是学好它却是程序员必备修养之一。 Linux 对比 Windows稳定且有效率;免费(或少许费用);漏洞少且快速修补;多任务多用户;更加安全的用户...

    程序员个人优秀简历范文2(1)

    在制作程序员的简历时,以下几个关键知识点不容忽视: 1. **个人信息**:包括姓名、联系方式(电话、邮箱)、个人简介,这部分应简洁明了,便于招聘方快速联系到你。 2. **求职意向**:明确指出你所申请的职位类型...

    大数据程序员要学什么.pdf

    接下来,JavaWeb和数据库知识不可忽视。了解数据库基础,深入学习JavaWeb开发的核心技术和内部机制,例如Servlet和JSP,以及数据库操作,如SQL语言。 在大数据处理方面,Linux操作系统和Hadoop生态体系是关键。学习...

    校招社招前端面试题合集JS源码JS代码(260题)JS算法题数据结构算法等JS手写代码

    首先,我们要理解JavaScript的基础知识,这是所有JS面试题目的基石。这包括但不限于变量、数据类型(如基本类型和引用类型)、作用域(全局和局部)、变量提升(Hoisting)、运算符(包括比较运算符和逻辑运算符)、...

    黑马Android基础笔记

    《黑马Android基础笔记》是一份全面且深入的Android开发学习资料,主要针对初学者和希望巩固基础知识的开发者。这份笔记涵盖了Android开发的核心概念和技术,旨在帮助读者构建坚实的Android开发基础。 1. **Android...

Global site tag (gtag.js) - Google Analytics