前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版

前端开发的一些实践规范

首页2016-11-23 16:55:24Front-End
规则实践

# 一、HTML实践


  • 使用标准的HTML5简化的定义的方式
    • 定义文档类型 <!DOCTYPE html>
    • 定义页面的编码 <meata charset="UTF-8">
    • 样式和页脚的引用,不需要写type类型,如link script
  • 停止使用不标准的标签和属性,如mqrquee
  • 不推荐在HTML标签中添加样式属性,如img标签中添加宽高
  • 不要使用@import,此方式最大的缺点是引用css文件不能同时并行下载
  • 增加JavaScript禁用的提示信息,最常用的方式是使用<noscript>
  • 添加必要的meta标签
  • 使用频率较高的语义化标签
    • p ul dl p em strong table site blockquote
    • nav header footer article section aside hground
  • 样式和结构的分离:把HTML中用于表达外观的部分从HTML中删除,并用css实现。如<span>|</span>中的| 用css的伪类实现即可
  • 如果图片作为页面内容的一部分,应该使用img标签,如果图片仅仅是装饰作用,应该使用背景图片方式
  • 提高表单易用性的手段
    • 使用label标签,并设置label标签的for属性
    • 给输入控件设置合理的placehoder
    • 如有必要,给输入控件设置tab顺序,tabindex用来设置输入控件的切换顺序 <input type="text" tabindex="2">
    • 使用HTML5中引入的表单控件url email date search
  • 精简HTML代码
  • 删除多余的容器
  • 装饰性的元素使用css实现
  • 避免使用table布局

# 二、CSS实践


  • 推荐的css类的命名规则和元素的id命名规则相似,只是组成类名的关键字的连接符为中划线- .reder-content-title
    • 为了避免class命名的重复,命名时取父元素的class作为前缀
  • 使用css reset统一浏览器的显示效果
  • 给css样式定义排序,最佳是按类型分组排序
  • 显示与浮动、定位、尺寸、边框相关属性、字体样式、背景、其他样式
  • 合理利用css的权重,提高代码的重用性
    • css样式中尽量不要使用ID选择器,最佳实践尽可能使用较低权重的选择器作为基础样式
    • 减少自选择器的层级
    • 使用组合的css选择器
  • em px %
    • w3c把尺寸单位分为相对长度单位和绝对长度单位两种。
    • 相对长度单位又分为字体相对单位和视窗相对单位
      • 字体相对单位包括:em ex ch rem
      • 视窗相对单位包括:vw vh vmin vmax
      • 使用最广泛的是em px 百分比
    • em计算是相对自身元素的字体尺寸的,rem相对于根元素的字体大小计算, 百分比是相对于父元素的尺寸的
    • 如何设置元素的尺寸和字体大小最佳实践
      • 尽量设置相对尺寸(局部的尺寸要尽量使用相对尺寸,即局部自适应)
      • 只有在可预知元素尺寸的情况下才使用绝对尺寸
      • 使用em设置字体大小
  • css选择器定义最佳实践
    • 避免使用通配符
    • 避免使用标签选择器及单个属性选择器作为关键选择器
    • 不要在id选择器前使用标签名
    • 尽量不要使在选择符中定义过多的层级,最好不要超过三层
  • css相关图片处理
    • 不要设置图片尺寸
    • 使用css雪碧图技术
  • 减少css代码量
    • 定义简洁的css规则
    • 合并相关的css规则
    • 定义简洁的属性值合并相同的定义

# 三、JavaScript实践


  • 避免定义全局变量或函数
    • 使用var
    • 使用JavaScript的严格模式use strict;
  • 使用简化的编码方式
    • 对象创建pserson={age:22,name:"poetries"}
    • 数组创建list=[12,23,55]
  • 使用===和!==而不是==和!=
  • 避免使用with语句和eval()
  • 使用更严格的编码格式
    • 使用严格模式遵循:
      • 不要在全局中启用严格模式
      • 在已有代码中谨慎使用严格模式
    • 严格模式主要对不合理的地方做了改进
      • 禁用width关键字
      • 防止意外的全局变量
      • 函数中的this不在默认指向全局
      • 防止函数参数重命名
      • 更安全的使用eval()
  • 事件处理和业务逻辑相分离
  • 配置数据和代码逻辑相分离
  • 逻辑与结构相似相分离
    • 从JavaScript逻辑中分离css样式
    • 从JavaScript中分离HTML结构
  • JavaScript模块化的开发,提高代码的可维护性
    • JavaScript的两种模块化规范 ComonJS AMD
    • 两者的主要区别在加载模块的方式上
    • ComonJS 以同步的方式加载,使用require()方法来加载模块
    • AMD以异步的方式加载模块
  • 合理使用Ajax技术,适合的使用场景有
    • 前端会根据用户的需求动态取得后端数据,然后更新网页界面
    • 期望通过不刷新页面取得任何资源或页面
    • 动态进行用户输入的认证

# 四、附录


# 附录一 DIV命名规范


  • 企业DIV使用频率高的命名方法

  • 网页内容类

    • 标题: title

      • 摘要: summary
      • 箭头: arrow
      • 商标: label
      • 网站标志: logo
      • 转角/圆角: corner
      • 横幅广告: banner
      • 子菜单: subMenu
      • 搜索: search
      • 搜索框: searchBox
      • 登录: login
      • 登录条:loginbar
      • 工具条: toolbar
      • 下拉: drop
      • 标签页: tab
      • 当前的: current
      • 列表: list
      • 滚动: scroll
      • 服务: service
      • 提示信息: msg
      • 热点:hot
      • 新闻: news
      • 小技巧: tips
      • 下载: download
      • 栏目标题: title
      • 热点: hot
      • 加入: joinus
      • 注册: regsiter
      • 指南: guide
      • 友情链接: friendlink
      • 状态: status
      • 版权: copyright
      • 按钮: btn
      • 合作伙伴: partner
      • 投票: vote
      • 左右中:left right center

    • 注释的写法: /* Footer */ 内容区/* End Footer */

  • id的命名:

    • 页面结构

      • 容器: container
      • 页头:header
      • 内容:content/container
      • 页面主体:main
      • 页尾:footer
      • 导航:nav
      • 侧栏:sidebar
      • 栏目:column
      • 页面外围控制整体布局宽度:wrapper
      • 左右中:left right center

    • 导航

      • 导航:nav
      • 主导航:mainbav
      • 子导航:subnav
      • 顶导航:topnav
      • 边导航:sidebar
      • 左导航:leftsidebar
      • 右导航:rightsidebar
      • 菜单:menu
      • 子菜单:submenu
      • 标题: title
      • 摘要: summary

    • 功能

      • 标志:logo
      • 广告:banner
      • 登陆:login
      • 登录条:loginbar
      • 注册:regsiter
      • 搜索:search
      • 功能区:shop
      • 标题:title
      • 加入:joinus
      • 状态:status
      • 按钮:btn
      • 滚动:scroll
      • 标签页:tab
      • 文章列表:list
      • 提示信息:msg
      • 当前的: current
      • 小技巧:tips
      • 图标: icon
      • 注释:note
      • 指南:guild
      • 服务:service
      • 热点:hot
      • 新闻:news
      • 下载:download
      • 投票:vote
      • 合作伙伴:partner
      • 友情链接:link
      • 版权:copyright

    • class的命名:

    • 颜色:使用颜色的名称或者16进制代码,如

      • .red { color: red; }
      • .f60 { color: #f60; }
      • .ff8600 { color: #ff8600; }
    • 字体大小,直接使用"font+字体大小"作为名称,如

      • .font12px { font-size: 12px; }
      • .font9px {font-size: 9pt; }
    • 对齐样式,使用对齐目标的英文名称,如

      • .left { float:left; }
      • .bottom { float:bottom; }
    • 标题栏样式,使用"类别+功能"的方式命名,如

      • .barnews { }
      • .barproduct { }

    • 注意事项::

      • 一律小写;
      • 尽量用英文;
      • 不加中杠和下划线;
      • 尽量不缩写,除非一看就明白的单词.

  • 推荐的 CSS 书写顺序:

    • 显示属性

      • display
      • list-style
      • position
      • float
      • clear
    • 自身属性

      • width
      • height
      • margin
      • padding
      • border
      • background
    • 文本属性

      • color
      • font
      • text-decoration
      • text-align
      • vertical-align
      • white-space
      • other text
      • content

# 附录二 CSS精灵


  • CSS精灵原理以及应用
    • CSS雪碧的基本原理是把你的网站上用到的一些图片整合到一张单独的图片中,从而减少你的网站的HTTP请求数量。
      • 该图片使用CSS background和background-position属性渲染,这也就意味着你的标签变得更加复杂了,图片是在CSS中定义,而非<img>标签。
  • 一个简单的例子:
    • 一张图片作出一个按钮的三个状态
    • 一个链接用CSS做成按钮的样式,我们可以使用同一张图片,完成按钮的三个状态,a:link,a:hover,a:active <a class="button" href="#">链接</a>
    • 加入右侧的图片为:200px 65px的三个按钮图拼合而成的图片button.png,从上到下一次为按钮的普通、鼠标滑过、鼠标点击的状态。则可以使用CSS进行定义。
    a {
        display:block;
        width:200px;
        height:65px;
        line-height:65px; /*定义状态*/
        text-indent:-2015px; /*隐藏文字*/
        background-image:url(button.png); /*定义背景图片*/
        background-position:0 0;
        /*定义链接的普通状态,此时图像显示的是顶上的部分*/
    }

    a:hover {
        background-position:0 -66px;
        /*定义链接的滑过状态,此时显示的为中间部分,向下取负值*/
    }
    a:active {
        background-position:0 -132px;
        /*定 义链接的普通状态,此时显示的是底部的部分,向下取负值*/
    }
@前端进阶之旅: 代码已经复制到剪贴板
  • 更多的CSS雪碧,图片更复杂,背景定位更精确。可能会用到大量的数值
    • 如:background:url(nav.png) -180px 24pxno-repeat; 来达到更精确的定位
  • 优点:
    • 减少加载网页图片时对服务器的请求次数
    • 可以合并多数背景图片和小图标,方便在任何位置使用,这样不同位置的请求只需要调用一个图片,从而减少对服务器的请求次数,降低服务器压力,同时提高了页面的加载速度,节约服务器的流量。
    • 提高页面的加载速度
    • sprite 技术的其中一个好处是图片的加载时间(在有许多 sprite 时,单张图片的加载时间)。由所需图片拼成的一张 GIF图片的尺寸会明显小于所有图片拼合前的大小。单张的 GIF只有相关的一个色表,而单独分割的每一张 GIF 都有自己的一个色表,这就增加了总体的大小。因此,单独的一张 JPEG 或者 PNG sprite 在大小上非常可能比把一张图分成多张得来的图片总尺寸小。
    • 减少鼠标滑过的一些bug
    • IE6不会主动预加载鼠标滑过即a:hover中的背景图片,所以,如果使用多张图片,鼠标滑过会出现闪白的现象。使用CSS雪碧,由于一张图片即可,所以不会出现这种现象。
  • 不足:
    • CSS雪碧的最大问题是内存使用
    • 影响浏览器的缩放功能
    • 拼图维护比较麻烦
    • 使CSS的编写变得困难
    • CSS 雪碧调用的图片不能被打印
    • 错误得使用 Sprites 影响可访问性

# 附录三 一些tips解决方案


# 页面优化实践

fe
  • 一、HTML实践
  • 二、CSS实践
  • 三、JavaScript实践
  • 四、附录
    • 附录一 DIV命名规范
    • 附录二 CSS精灵
    • 附录三 一些tips解决方案
      • 页面优化实践
      • 写DIV+CSS 的一些常识
      • 常用代码片段
      • 一些总结

← HTML5之API总结bootstrap笔记总结 →