`

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

阅读更多

基础数据结构与算法

现在有两个不同的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页面设计等。通过实际操作,开发者不仅可以提升技能,还能更好地理解...

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

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

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

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

    程序员面试宝典.pdf

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

    写给程序员的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)、运算符(包括比较运算符和逻辑运算符)、...

    大宅小屋拼团.zip微信小程序模板源码纯前端静态小程序源码

    综上所述,“大宅小屋拼团”微信小程序模板源码是一个宝贵的教育资源,涵盖了前端开发、微信小程序框架、业务逻辑实现等多个方面的知识。无论是学生还是专业人士,都能从中受益匪浅,提升自己的技能,为实际项目开发...

    你也能拿高薪

    这些基础知识是解决复杂问题和编写高效代码的基础,也是面试时经常被考察的部分。 其次,了解并能应用最新的技术趋势是提高薪资水平的重要途径。例如,熟悉云计算(如AWS、Azure、Google Cloud)、大数据处理...

    成为编程高手的二十二条军规

    不要忽视基础 基础技能对于任何高级技能的发展都是至关重要的。即使是在日常工作中使用高级框架或库,也必须具备扎实的基础知识,如数据结构、算法等。这些基础知识不仅能帮助你更好地理解技术原理,还能在解决...

    网站建设教程课件(很不错)

    这个教程涵盖了从基础知识到实际网站构建的全过程,确保学习者能够逐步建立起扎实的技能。 首先,我们要了解网站建设的基础知识,这包括互联网的基本原理、HTTP协议的理解、域名与DNS解析的工作方式,以及网页的...

    如何成为编程高手

    只有这些基础知识牢固,才能更好地搭建起复杂的程序结构。 其次,深入理解算法和数据结构。算法是解决问题的步骤,而数据结构则是存储和组织数据的方式。熟练掌握排序、查找、图论、动态规划等常见算法,以及数组、...

    genesis编程相关

    综上所述,“Genesis编程相关”可能涵盖多个方面,包括但不限于新的编程语言、编程基础知识的学习、开发工具的创新以及跨领域的编程实践。尽管我们无法确定具体指代,但这些方面都是编程领域不可或缺的部分,值得每...

Global site tag (gtag.js) - Google Analytics