前端开发规范文档

1、文件管理规范

1) 资源文件目录

背景图片目录 图标目录 图片目录 临时图片目录 样式文件目录 脚本文件目录 flash文件目录 上传文件目录 静态文件目录
images/bg images/ico images/pic images/temp style js flash upload static

2) 文件夹及文件命名

用简短有意义的英文或者拼音(不能出现中文命名)来命名。
①文件夹命名规则: 全部小写。例如(emotions, download, mail)。
②html,js,css文件命名规则: 第一个单词首字母小写,之后每个单词首字母大写,html文件后缀名统一为.htm。例如(index.htm, customizeCity.htm, register.js, dateSelect.js, base.css, mapApply.css)。 
③图片命名规则: 第一个单词首字母小写,之后每个单词首字母大写,或者全部小写,单词间用下划线连接。例如(btn_sign.gif, bgTipBox.png)。

2、XHTML书写规范

  • 1) 文档类型声明统一为XHTML 1.0 Transitional;
  • 2) 编码统一为utf-8;
  • 3) 确保有Title,Description,Keywords等完整的meta标签。
  • 4) 引入JS库文件,文件名须包含库名称及版本号及是否为压缩版,比如jquery-1.7.1.min.js;引入插件,文件名格式为库名称 + 插件名称,比如jQuery.cookie.js;
  • 5) 非特殊情况下样式和脚本代码必须独立于xhtml代码于外部文件中,样式文件必须外链至<head>...</head>之间,渲染执行脚本必须外链至页面底部;
  • 6) 引入外部样式文件及脚本文件采用时间戳后缀,防止由于缓存问题导致页面不能及时更新;
  • 7) 书写时采用制表符缩进(大小为4);
  • 8) 编码必须遵循w3c标准,标签、属性及属性命名必须由小写字母及下划线数字组成,且所有标签必须闭合;属性值必须用双引号包括;
  • 9) 充分利用无兼容性问题的html自身标签,比如span,em,strong,label,等等;需要为html元素添加自定义属性的时候,首先要考虑下有没有默认的已有的合适标签去设置,如果没有,可以使用须以”data-”为前缀来添加自定义属性,避免使用”data:”等其他命名方式;
  • 10) 语义化html,如标题根据重要性用h1~h6(同一页面只能有一个h1),段落标记用p,列表用ul,内联元素中不可嵌套块级元素;
  • 11) 尽可能减少div嵌套;
  • 12) 必须为含有描述性表单元素(input,textarea)添加label;
  • 13) 能以背景形式呈现的图片,尽量写入css样式中;
  • 14) 图片必须加上alt属性;给重要的元素和截断的元素加上title;
  • 15) 不是标签一部分的特殊符号都用编码表示:比如<(<)&>(>)&空格()&»(»)等等;
  • 16) 给区块代码及重要功能(比如循环)加上合理的注释,方便后台添加功能:注释格式,‘–-’只能在注释的始末位置,不能出现2个或2个以上的"--";

3、CSS书写规范

  • 1) 编码统一为utf-8;
  • 2) 全局定义以及全站公共部分共用文件common.css,开发过程中,每个页面请务必都要引入,此文件包含reset,常用规则(链接、字体、隐藏、清浮动等)、布局、各种模块基本样式及头部底部样式,此文件不可随意修改;
  • 3) 选择符命名及其使用:
    ① 命名请尽量使用英文避免使用汉语拼音,使用驼峰式命名和划线命名法。如(searchBox, p_i_4_l, width200);驼峰式命名法用来区别不同的单词,划线命名法表示从属关系。命名要语义化,简明化,尽量使用简短的英文单词组合;
    ② id是唯一的并是父级的,class是可以重复的并是子级的,所以id一般使用在大的模块上,class可用在重复使用率高及子级中;
    ③ 严禁出现#id ul li(长度超过2以上的派生类)等类似选择器;允许.active .classname;减少使用基于元素的类选择器:div.classname;减少属性选择器:#id[title=weyoo]; ④ 严禁使用 “*” 选择符;
  • 4) CSS属性书写顺序尽量遵循:显示属性->盒模型->文字属性->排版->其他。例如:#searchBtn{display:block;position:abtolute;left:2px;top:0;width:50px;height:19px;border:1px solid #ccc;padding:5px 2px;font:Arial 12px/19px;text-align:center;vertical-align:middle;color:#666;background:#999;cursor:pointer;}
  • 5) 尽量使用高级语法简写代码:body{font:italic bold 12px/20px arial,sans-serif;} input{padding:2px 3px; border:1px solid #999};
  • 6) 书写代码前,考虑并提高样式重复使用率,归类class分组,以便通用性;
  • 7) 背景图片请尽可能使用sprite技术,减少http请求;
  • 8) 减少使用影响性能的属性,比如position:absolute||float;性能比较:“默认” 优于 “定位” 优于 “浮动”;
  • 9) 尽量不要使用expression等不兼容的属性;
  • 10) 尽量不使用hack写出兼容当前主流浏览器(ie6~ie9,firefox,chrome,safari,opera)的代码。例如:float元素的父元素不能指定clear属性,务必指定width属性(尽量使用em而不是px做单位),尽量不指定margin和padding等属性(可以在float元素内部嵌套一个标签来设置margin和padding)。
  • 11) 文件头部注释须标明作者及修改日期。必须为大区块样式添加合理注释;
  • 12) 测试完成后压缩合并css文件,力求降低http请求;

4、JavaScript书写规范

  • 1) 编码统一为utf-8;
  • 2) 常用功能函数统一写在公用js文件commonToolFn.js里;
  • 3) 书写时采用制表符缩进(大小为4);
  • 4) 常量所有字符大写,变量所有字符小写;类命名:首字母大写驼峰式命名.如CommonTool;函数命名:首字母小写驼峰式命名.如arrEach();
  • 5) 命名语义化,尽可能利用英文单词或其缩写;代码结构明了,提高函数重用率;
  • 6) 文件头部注释须标明作者及修改日期。函数注释须标明函数功能,参数及返回值;
  • 7) 书写过程过,每行代码结束必须有分号;
  • 8) 声明变量必须用var ,包括循环 遍历:如:for(var i=0;i<10;i+=1){},for(var value in obj){};注意减少全局变量的声明 避免变量混乱;
  • 9) 条件判断后执行代码块必须加花括号:if(){...};for(){...}
  • 10) 规范json书写:必须以花括号开始和结束;
  • 11) 测试完成后压缩合并JavaScript文件,力求降低http请求;

5、性能优化规范

  • 1) 由于大多都是操作DOM,所以在查找节点时务必书写高效的选择器(jQuery);
  • 2) 缓存频繁使用的对象、数组及相关的属性;
  • 3) 使脚本尽可能少地运行或者不运行(按需加载,比如选项卡数据在页面加载时只加载第一个选项卡的内容数据,其他选项卡异步提交加载);
  • 4) 合理的使用图片格式,并进行压缩优化,保持图片最佳视觉以及大小;
  • 5) 对于大数据,多屏页面进行数据延迟加载处理,以及图片预加载;

6、版本控制规范

  • 1) 代码提交前清理无关文件(比如缩略图缓存数据文件thumb.db等等);
  • 2) 对于CSS以及JS约定好的代码注释必须加上之后再提交到SVN,方便SVN自动更新文件编辑信息以及版本号;
  • 3) 变更文件(特别是模版文件以及重要的页面)比较大时最好做好备份工作,方便发布到正式线出现问题时快速撤回;
  • 4) 代码修改或提交前获取下最新版本,有规律的提交代码;签入代码前经过良好的测试;

7、开发调试工具

  • 1) 前端常用编辑器/IDE(开发);
  • 2) IDE自带/浏览器插件(调试);
  • 3) CSS,JS压缩工具;
  • 4) 其他辅助工具;
http://www.cnblogs.com/huangjianhuakarl/archive/2012/11/09/1771624.html

转载于:https://www.cnblogs.com/y0umer/archive/2013/05/02/3839077.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474461.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1135. 最低成本联通所有城市(最小生成树+排序+并查集)

文章目录1. 题目2. 解题1. Kruskal2. prim1. 题目 想象一下你是个城市基建规划者&#xff0c;地图上有 N 座城市&#xff0c;它们按以 1 到 N 的次序编号。 给你一些可连接的选项 conections&#xff0c;其中每个选项 conections[i] [city1, city2, cost] 表示将城市 city1 …

python中的下标索引

所谓“下标”&#xff0c;就是编号&#xff0c;就好比超市中的存储柜的编号&#xff0c;通过这个编号就能找到相应的存储空间。字符串实际上就是字符的数组,也支持下标索引.如果有字符串:name abcdef&#xff0c;在内存中的实际存储如下:如果想取出部分字符&#xff0c;那么可…

android 视频转字节,如何将视频文件(.mp4)格式转换为android中的二进制格式?...

我想在网络服务器上传视频。我得到了我想要以二进制格式传递文件的服务&#xff0c;我该怎么做&#xff1f;如何将视频文件(.mp4)格式转换为android中的二进制格式&#xff1f;我试图通过base64将视频文件转换为二进制格式..&#xff1f;public class binaryformat extends Act…

python中的切片以及注意事项

切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。字符串&#xff1a;[起始:结束:步长] 注意&#xff1a;选取的区间属于左闭右开型&#xff0c;即从"起始"位开始&#xff0c;到"结束"位的前一位结束&#xff08;不包含结束位…

LeetCode 1057. 校园自行车分配(map有序+贪心)

文章目录1. 题目2. 解题1. 题目 在由 2D 网格表示的校园里有 n 位工人&#xff08;worker&#xff09;和 m 辆自行车&#xff08;bike&#xff09;&#xff0c;n < m。所有工人和自行车的位置都用网格上的 2D 坐标表示。 我们需要为每位工人分配一辆自行车。在所有可用的自…

python中的字符串操作及注意事项

1.mystr.find(str, start0, endlen(mystr)) 检测str是否包含在mystr中,如果是返回开始的索引值,否则返回-1.mystr.rfind(str, start0,endlen(mystr) ) 类似于find()函数&#xff0c;不过是从右边开始查找.2.mystr.index(str, start0, endlen(mystr)) 跟f…

linux配ipv6 ipv4 双栈,RouterOS配置原生IPv6(电信IPv4/IPv6双栈)

无意中发现江苏(苏州)电信的原生IPv6改为有状态的IPv6&#xff0c;那么我使用的RouterOS软路由(以下简称ROS)就可以获取到IPv6的地址了&#xff0c;所以又可以折腾了一波。一、IPv6介绍IPv6的地址共有128位&#xff0c;也就是IPv6地址总量一共有2的128次方个地址。/32、/48是IP…

java mail 设置参数

Session需要使用java.util.Properties来构造&#xff0c;常用的用来构造Session的属性&#xff1a; 属性名 含义 mail.smtp.user SMTP的缺省用户名。 mail.smtp.host 要连接的SMTP服务器。 mail.smtp.port 要连接的SMTP服务器的端口号&#xff0c;如果connect没有指明端口号就使…

LeetCode 555. 分割连接字符串

文章目录1. 题目2. 解题1. 题目 给定一个字符串列表&#xff0c;你可以将这些字符串连接成一个循环字符串&#xff0c;对于每个字符串&#xff0c;你可以选择是否翻转它。 在所有可能的循环字符串中&#xff0c;你需要分割循环字符串&#xff08;这将使循环字符串变成一个常规…

libusb android pc,libusb

# libusb[![Build Status](https://travis-ci.org/libusb/libusb.svg?branchmaster)](https://travis-ci.org/libusb/libusb)[![Build status](https://ci.appveyor.com/api/projects/status/xvrfam94jii4a6lw?svgtrue)](https://ci.appveyor.com/project/LudovicRousseau/li…

LeetCode 314. 二叉树的垂直遍历(BFS/DFS)

文章目录1. 题目2. 解题2.1 DFS2.2 BFS1. 题目 给定一个二叉树&#xff0c;返回其结点 垂直方向&#xff08;从上到下&#xff0c;逐列&#xff09;遍历的值。 如果两个结点在同一行和列&#xff0c;那么顺序则为 从左到右。 示例 1&#xff1a; 输入: [3,9,20,null,null,15…

python中的元组及注意事项

与列表类似&#xff0c;元组也是由任意类型元素组成的序列。与列表不同的是&#xff0c;元组是不可改变&#xff0c;这意味着一旦元组被定义&#xff0c;将无法再进行增加、删除或修改元素等操作。因此&#xff0c;元组就像一个不可改变的列表。在许多地方元组都可以替换列表&a…

Android 利润,惊人利润:Android系统免费背后影藏的巨大利润

Android用户群体的庞大数量有目共睹&#xff0c;并且Android一直以免费为噱头&#xff0c;如果是一直免费&#xff0c;那么Android背后庞大的团队是靠什么经济来源支撑着Android一代又一代的更新&#xff1f;近日有网友披露谷歌的Android系统已经创造了310亿美元的营收&#xf…

LeetCode 336. 回文对(哈希map/Trie树)

文章目录1. 题目2. 解题2.1 哈希map2.2 Trie树1. 题目 给定一组唯一的单词&#xff0c; 找出所有不同 的索引对(i, j)&#xff0c;使得列表中的两个单词&#xff0c; words[i] words[j] &#xff0c;可拼接成回文串。 示例 1: 输入: ["abcd","dcba",&qu…

链接

Qt下载&#xff1a;http://qt-project.org/downloads/ Qt Creator中无法使用OpenCV2中新函数的解决办法: http://blog.csdn.net/masikkk/article/details/8748865 自建CDN技术选型: squid varnish nginx: http://www.linuxde.net/2013/05/13492.html转载于:https://www.cnblogs…

python中的常见的列表操作及注意事项

1.1 使用append()添加元素到尾部传统的向列表中添加元素的方法是利用append()函数将元素一个个添加到尾部。1.2 使用extend()或合并列表使用extend()可以将一个列表合并到另一个列表中&#xff0c;我们也可以使用.1.3 使用insert()在指定位置插入元素append()函数只能将新元素插…

Android8.0一键root,小米Mix 2(安卓8.0)一键ROOT详解教程,看教程ROOT

伴随着安卓刷机越来越流行&#xff0c;很多安卓用户都喜欢上了这种可以自定个性系统的行为&#xff0c;那么小米Mix 2(安卓8.0)怎么获取ROOT权限?小米Mix 2(安卓8.0)一键ROOT过程如何操作呢?奇兔小编在此大家说一说1.首先打开奇兔刷机软件&#xff0c;插好数据线&#xff0c;…

python中的列表及注意事项

目录 1、列表概念 2、列表创建 3、使用[]获取元素 4、列表嵌套&#xff1a; 1、列表概念 列表非常适合利用顺序和位置定义某一个元素&#xff0c;尤其是当元素的顺序或内容经常发生改变的时候。与字符串不同&#xff0c;列表中元素的值是可以修改的。我们可以直接对列表中进行添…

一周小记(六)

想要写的东西很多&#xff0c;目前只有这个坚持下来了 才第6周&#xff0c;前方的路还很长&#xff0c;能坚持3个月么&#xff0c;能坚持半年么&#xff0c;能坚持一年么&#xff0c;拭目以待 本周是五一假期周&#xff0c;只上了一天班 最近的工作中体现了一个问题&#xff0c…