《Web前端开发修炼之道》学习笔记

本文探讨了高质量前端代码的重要性,从糟糕的实现到标准实现,强调维护成本和前端代码的特性。讨论了HTML的语义化,推荐使用CSS+div布局,并给出常见模块的标签选择建议,如标题、内容、表单和表格。同时,提醒注意CSS的编写规范,以提升代码的可读性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是高质量的代码

糟糕的实现

  • div布局和table布局混用
  • 标签名有大写,也有小写
  • 标签属性有的加引号,有的没有加引号
  • 被淘汰的属性泛滥
  • 样式组织混乱,有内嵌的,也有外链的,还有直接写在标签内的
  • js有内嵌的,外链的,还有写在标签里的
  • js和css位置混乱
  • js编码风格很不一致
  • 没有注释

标准实现

  1. 保持结构、样式和行为分离
  2. 符合结构标准(XML,XHTML,HTML标准)
  3. 符合样式标准(CSS标准)
  4. 行为标准(DOM标准和ECMAScript标准)

维护成本

  • 浏览器向前兼容,使得过时的技术和不推荐的方法滥用,以及不同的浏览器对网页的解析存在或大或小的差异
  • 不同的公司,团队和工程师,对好的实现方案有自己的理解,或深或浅,理解不深,容易写出可维护性差的代码
  • 团队合作不好的容易不停的打补丁,使得结构混乱

高品质前端代码的特性

精简 重用 有序

  1. 注释--增加代码可读性
  2. 公共组件和私有组件帮助提高重用性
  3. 公共组件组织的粒度越大,文件越集中,加载和管理越方便,冗余就多;组织的粒度越小,就越精剪分散,加载管理就越麻烦,需要尽量找到最佳平衡点
  4. 前期的构思很重要
  5. 制定规范
  6. 团队合作最大的难度是人而不是技术。说话方式,工作习惯,性格各异。
  7. 能独立决策的问题都是小问题,要与人合作商讨的问题才是大问题,要学会与人相处

对前端工程师的要求

  1. css,能兼容主流浏览器或者是更高要求
  2. 不仅会使用原生的javascript 还会使用js库
  3. 了解并熟悉Ajax
  4. 熟悉一种或者多种后台语言(后端工程师是如何输出的,模拟ajax方便调适,大局观认识,利于了解数据传递的流程)

高质量HTML

  • 使用语义化标签,(在没有css效果下,仍然具有一定的可读性)

    标签名语义
    div分隔
    span范围
    ol排序列表
    ul不排序列表
    li列表项目
    h1~h6标题1到标题6
    见20页
  • 尽量不使用table布局(table布局语义不明确,对搜索引擎不友好;代码量大)

  • 推荐使用css+div布局(代码量少,下载快,结构精简,语义清晰,对搜索引擎更友好)
  • 搜索引擎对h1~h6很敏感,一个语义良好的页面,h标签应该是完整有序没有断层的

    W3C的官方网站的语义非常优秀,可使用firefox的developor插件查看是否语义化良好

常见模块的标签选择

标题和内容
<div class="h2">标签的语义 <a href="#">更多</a></div>
<div class="p">段落一的内容<span class="strong">根据浏览器的默认样式</span></div>
<div class="p">段落二的内容</div>

只有“分隔”,”范围”等无语义标签,看不出结构的逻辑

<h2>标签的语义</h2>
<a href="#">更多</a>
<p>段落一的内容<strong>根据浏览器的默认样式</strong></p>
<p>段落二的内容</p>

有语义的标签,但是视觉效果很难通过css实现

<div class="title">
    <h2>标签的语义</h2>
    <a href="#">更多</a>
</div>
<div class="content">
    <p>段落一的内容<strong>根据浏览器的默认样式</strong></p>
    <p>段落二的内容</p>
</div>

在保持语义化的同时,可以适当添加div span等无语义标签辅助实现效果

表单

表格
<table border="1">
    <caption>几种页面实现的比较</caption>
    <thead>
        <tr>
            <th>实现方式</th>
            <th>代码量</th>
            <th>搜索引擎友好</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <th>table布局</th>
            <th>多</th>
            <th>差</th>
        </tr>
    </tbody>
</table>

语义化标签注意事项

  • 尽可能少使用无语义标签 div span
  • 在语义不明显,即可以使用p也可以使用div,尽量使用p,p默认情况下有上下间隔,去样式后可读性更好
  • 不要使用纯样式标签 b font和u等,改用css设置

高质量CSS

kindle高清文字,可在电脑上用clearview电子书阅读软件阅读。 第1章 从网站重构说起 1.1 糟糕的页面实现,头疼的维护工作 1.2 Web标准——结构、样式和行为的分离 1.3 前端的现状 1.4 打造高品质的前端代码,提高代码的可维护性——精简、重用、有序 第2章 团队合作 2.1 揭秘前端开发工程师 2.2 欲精一行,必先通十行 2.3 增加代码可读性——注释 2.4 提高重用性——公共组件和私有组件的维护 2.5 冗余和精简的矛盾——选择集中还是选择分散 2.6 磨刀不误砍柴工——前期的构思很重要 2.7 制订规范 2.8 团队合作的最大难度不是技术,是人 第3章 高质量的HTML 3.1 标签的语义 3.2 为什么要使用语义化标签 3.3 如何确定你的标签是否语义良好 3.4 常见模块你真的很了解吗 3.4.1 标题和内容 3.4.2 表单 3.4.3 表格 3.4.4 语义化标签应注意的一些其他问题 第4章 高质量的CSS 4.1 怪异模式和DTD 4.2 如何组织CSS 4.3 推荐的base.css 4.4 模块化CSS——在CSS中引入面向对象编程思想 4.4.1 如何划分模块——单一职责 4.4.2 CSS的命名——命名空间的概念 4.4.3 挂多个class还是新建class——多用组合,少用继承 4.4.4 如何处理上下margin 4.5 低权重原则——避免滥用子选择器 4.6 CSS sprite 4.7 CSS的常见问题 4.7.1 CSS的编码风格 4.7.2 id和class 4.7.3 CSS hack 4.7.4 解决超链接访问后hover样式不出现的问题 4.7.5 hasLayout 4.7.6 块级元素和行内元素的区别 4.7.7 display:inline-block和hasLayout 4.7.8 relative、absolute和float 4.7.9 居中 4.7.10 网格布局 4.7.11 z-index的相关问题以及Flash和IE 6下的select元素 4.7.12 插入png图片 4.7.13 多本IE并存方案——CSS的调试利器IETester 第5章 高质量的JavaScript 5.1 养成良好的编程习惯 5.1.1 团队合作——如何避免JS冲突 5.1.2 给程序一个统一的入口——window.onload和DOMReady 5.1.3 CSS放在页头,JavaScript放在页尾 5.1.4 引入编译的概念——文件压缩 5.2 JavaScript的分层概念和JavaScript库 5.2.1 JavaScript如何分层 5.2.2 base层 5.2.3 common层 5.2.4 page层 5.2.5 JavaScript库 5.3 编程实用技巧 5.3.1 弹性 5.3.2 getElementById、getElementsByTagName和getElements-ByClassName 5.3.3 可复用性 5.3.4 避免产生副作用 5.3.5 通过传参实现定制 5.3.6 控制this关键字的指向 5.3.7 预留回调接口 5.3.8 编程中的DRY规则 5.3.9 用hash对象传参 5.4 面向对象编程 5.4.1 面向过程编程和面向对象编程 5.4.2 JavaScript的面向对象编程 5.4.3 用面向对象方式重写代码 5.5 其他问题 5.5.1 prototype和内置类 5.5.2 标签的自定义属性 5.5.3 标签的内联事件和event对象 5.5.4 利用事件冒泡机制 5.5.5 改变DOM样式的三种方式 附录A 写在规则前面的话 附录B 命名规则 附录C 分工安排 附录D 注释规则 附录E HTML规范 附录F CSS规范 附录G JavaScript规范
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值