`
haohappy2
  • 浏览: 333532 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Frontend Basic Rule

 
阅读更多

通用约定

文件与目录命名

  • 一律小写, 必须是英文单词或产品名称的拼音, 多个单词用连字符(-)连接. 只能出现英文字母、数字和连字符, 严禁出现中文.
  • 该命名规范适用于 html, css, js, swf, php, xml, png, gif, jpg, ico 等前端维护的所有文件类型和相关目录.
  • js 和 css 压缩文件, 统一以 -min 结尾, 比如源码文件为 kissy.js, 压缩后为 kissy-min.js .压缩之前的文件使用 –src 结尾。
  • 调整自己的编辑器tab制表符一率采用4个空格

前端工程文件组织

注:

  • 在resourse/img/中新增一个test文件夹,目的是上传自己的测试图片、占位图片,请勿将网站正式的文件放于此文件夹内,因为此文件夹的内容随时有可能呗任何人删除
  • 前端的亲们在写完css文件准备上传时,注意检查一下css文件需要的的图片是否存在,是否存在多余的图片,尽量删除。

文件编码约定

所有文件一律采用utf-8编码

id 和 class 命名约定

  • id 和 class 的命名总规则为: 内容优先,表现为辅. 首先根据内容来命名, 比如 main-nav. 如果根据内容找不到合适的命名, 可以再结合表现来定, 比如 skin-blue, present-tab, col-main.
  • class 名称一律小写, 多个单词用连字符连接, 比如 recommend-presents.
  • class 名称中只能出现小写的 26 个英文字母、数字和连字符(-), 任何其它字符都严禁出现.
  • id的命名采用驼峰命名法,首字母小写,如:mainNav
  • 仅在 JavaScript 代码中当作 hook 用的 id 或 class, 命名规则为 J_UpperCamelCase``(请注意, ``J_ 后的首字母也大写!), 其中字母 J 代表 JavaScript, 也是钩子(hook)的象形. 注意:如果在 JavaScript 和 CSS 中都需要用到, 则不用遵守本约定
  • id 和 class 尽量用英文单词命名 . 确实找不到合适的单词时, 可以考虑使用产品的中文拼音, 比如 wangwang, dating. 对于中国以及淘宝特色词汇, 也可以使用拼音, 比如 xiaobao, daigou. 除了产品名称和特色词汇, 其它任何情况下都严禁使用拼音.
  • 在不影响语义的情况下, id 和 class 名称中可以适当采用英文单词缩写, 比如 col, nav, hd, bd, ft 等, 但切忌自造缩写.(常用缩写总结在css规范部分)
  • id 和 class 名称中的第一个词必须是单词全拼或语义非常清晰的单词缩写, 比如 present, col.
  • 在自动化测试脚本中当作 hook 用的 class, 命名规则为 T_UpperCamelCase, 其中字母 T 代表 Test.

HTML规范

约定

  • 所有页面元素的z-index属性值控制在1000以下,将1000-2000留给组件级调用,2000以上用于解决特殊情况下的适应问题;
  • 所有的标签及属性名采用小写,DOCTYPE除外;
  • 保证标签语义化;
  • 分离思想,所有的样式除特殊情况,css样式不能内联写在style属性中;
  • table中使用caption,thead,tbody,tfoot标签时若是使用则建议全部使用
  • 如非项目需要,不使用html5特有的标签,如canvas。

DOCTYPE

页面文档类型统一使用HTML5 DOCTYPE. 代码如下:

<!doctype html>

另外一种DOCTYPE

采用过渡型 - 相对较为宽松

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Namespace

<html xmlns="http://www.w3.org/1999/xhtml">

编码

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

编码

声明方法遵循HTML5的规范.

<meta charset="utf-8" >

注释

<!--{nav start}-->
<!--{nav end}-->

元素

推荐使用的元素

  1. 结构元素:blockquote, body, br, div, h1 - h6, head, hr, html, p
  2. 头部元素:base, link, meta, script, style, title
  3. 列表元素:ul, ol, li, dl, dt, dd
  4. 文本格式元素:a, abbr, acronym, address, bdo, cite, code, del, dfn, em, ins, kbd, noscript, pre, q, samp, small, span, strong, sub, sup, var
  5. 表单元素:button, fieldset, legend, form, input, label, optgroup, option, select, textarea
  6. 多媒体元素:area, img, map, object, param
  7. 表格元素:caption, col, colgroup, table, tbody, td, tfoot, th, thead, tr
  8. 窗体元素:iframe

不推荐使用的元素

  1. 结构元素:无
  2. 头部元素:无
  3. 列表元素:dir, menu
  4. 文本格式元素:b, basefont, big, blink, center, comment, font, i, marquee, nobr, plaintext, ruby, s, strike, u, wbr, xmp
  5. 表单元素:isindex
  6. 多媒体元素:applet, bgsound, embed, noembed
  7. 表格元素:无
  8. 窗体元素:frame, frameset, noframes

转世重生的元素

  1. s - 表示 sprite, 可以用 <s></s<> 来做 icon 的占位元素
  2. b - 表示 border, 可以用来作为圆角的占位元素
  3. i - 预留,尚未想到合理的复活理由(可以考虑作为单个图标的展位符,表示icon)

CSS规范

基本规范

  • 模块命名要注意带上模块名,下面尽可能的简写,页面级(app应用级)命名应该尽量简洁
  • 尽可能地使用css-sprite
  • 尽量通过class属性定义样式,将id留给hook
  • 尽量不要在css中使用expression
  • 组件开发中,可以先不考虑性能,尽量使用选择符组以方便html调用,如 .table-ctrl tbody tr td.selected{}
  • font中的字体用英文或unicode代替,如黑体可写成SimHei:font:12px/1.5 SimHei ,tahoma,arial,\5b8b\4f53,sans-serif;
  • 写css属性时,‘:’后面加一个空格增加可读性

引用

统一以link形式引入,不推荐内嵌形式引入css, 不推荐<style></style>标签出现在body中。不推荐内联CSS。如有特别需要(短期推广,特定情况的页面/404错误页面),请尽量放在head标签内

<style type="text/css" media="style/x.css"></style>

常规引入css文件

<link rel="stylesheet" type="text/css" href="style/x.css"></link>

常用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)

注释风格

头注释

/*---------------------------------------------------------------------------------------------
@Filename: main.css
@Description: 全局css定义
@Version: 1.0.0(2009-12-28)YYYY-MM-DD
@author: simon-shen
==STRUCTURE:========================================= 
$__header 
$__menu
==NOTES:=============================================
2011-11-2:
初始生成。
2011-11-3:
更改文档结构和注释
--------------------------------------------------------------------------------------------*/

区块

/*__header
--------------------------------------------------------------------------------------------*/

/*__menu
--------------------------------------------------------------------------------------------*/

编码风格

Css组合嵌套的时候采用换行以提高可读性

h2 { color: red; } 
.w3cbbs { color: red; } 
.w3cbbs_52css { color: red; }

则可以这样写

h2,
.w3cbbs,
.w3cbbs_52css { color: red; }

如果对css文件不适用最小化处理,发布时采用single-line处理,如:

.form-normal .field{position:relative;border-bottom:1px solid #ddd;overflow:hidden;}

常用css命名参考

导航 页头 主导航 页面主体 顶导航 内容 子导航 页脚 菜单 版权 子菜单 登陆 标志 侧栏 广告 搜索 滚动 标签页 小技巧 合作伙伴 加入 标题 注册 指南 新闻 下载 按钮 状态 服务 投票 注释 友情链接

nav header
mainnav main
topnav content
subnav footer
menu copyright
submenu login
logo sidebar
banner search
scroll tab
tips partner
joinus title
regsiter gUIld
news download
button status
service vote
note friendlink

Javascript规范

命名参考

原则: * 尽量避免潜在冲突; * 精简短小, 见名知意

  • 全局变量以$开头,如$user,相当于:window.$user
  • 常量全部大写,单词以下划线分隔,如STATIC_ROOT
  • 变量采用驮峰式写法,如userIcon,UserRelation
  • 类名首字母大写,如Object = function(){}
  • 普通变量、命名空间,首字母小写
  • 局部变量可缩写,命名空间,类名尽量不缩写
  • 条件表达式、正则表式式,如果很复杂,给其命名
  • 枚举量, 同常量;
  • 私有变量, 属性和方法, 名字以下划线开头,如_init(),_param;
  • 保护变量, 属性和方法, 名字同普通变量名;
  • 方法和函数的可选参数, 名字以 opt_ 开头, 使用 @param 标记说明;(试行)
  • 使用 @param 标记说明;
  • 外部代码和内部代码使用不同的命名空间;
  • 重命名那些名字很长的变量, 不要在全局范围内创建别名, 而仅在函数块作用域中使用;
  • 文件名应全部使用小写字符, 且不包含除 - 和 _ 外的标点符号;
  • 临时的重复变量建议以 i, j, k, ..., 命名;

原则

  • 任何插件的开发都要写入version参数,至少要在注释中注明版本信息及修改内容.
  • 声明变量时, 必须加上 var 关键字.
  • 尽量减少全局变量的使用.
  • 语句总是以分号结尾.
  • 不要在块内声明函数.
  • 标准特性优于非标准特性(如果类库有提供, 优先使用类库中的函数).
  • 不要封装基本类型.
  • 只在解析序列化串时使用 eval() .
  • 禁止使用 with .
  • 减少使用 continue 和 break .
  • 仅在函数内使用 this .
  • 使用 Array/Object 直接量, 避免使用 Array/Object 构造器.
  • 禁止修改内置对象的原型.
  • 坚决不在主页面中嵌入逻辑脚本,
  • 坚决不在ajax载入的HTML片段里面嵌入脚本,载入后要执行代码,可以写在回调里面

编码风格

引用

<script type="text/javascript" src=”xx”></script>

页面内的脚本只作初始化及参数配置使用

<script type="text/javascript">
$(function(){
$.nav.init({
id : 1,
name : 'simon'
})
})
</script>

注:具体使不使用init()函数视具体情况及个人编程习惯而定,但是个人建议使用,方便读代码的人找到入口

行与缩进

语句行

  • 尽可能不要让每行超过 120 个字符;
  • 语句必须以分号作为结束符, 不要忽略分号;

空格

  • 数值操作符(如, +/-/*/% 等)两边留空;
  • 赋值操作符/等价判断符两边留一空格;
  • for 循环条件中, 分号后留一空格;
  • 变量声明语句, 数组值, 对象值及函数参数值中的逗号后留一空格;
  • 空行不要有空格;
  • 行尾不要有空格;
  • 逗号和冒号后一定要跟空格;
  • 点号前后不要出现空格;
  • 空对象和数组不需要填入空格;
  • 函数名末尾和左括号之间不要出现空格;

空行

  • 逻辑上独立的代码块使用空行分隔;
  • 文件末尾留 1~2 个空行;
  • 不要吝啬空行. 尽量使用空行将逻辑相关的代码块分割开, 以提高程序的可读性.

变量声明

  • 多个变量声明时, 适当换行表示;
  • 参照 var 关键字, 缩进一层次;

函数参数

  • 函数参数写在同一行上;
  • 传递匿名函数时, 函数体应从调用该函数的左边开始缩进;
  • 数组和对象初始化时:如果初始值不是很长, 尽量保持写在单行上;
  • 初始值占用多行时, 缩进一层次;
  • 对象中, 比较长的变量/数值, 不要以冒号对齐;
  • 二元/三元操作符:操作符始终跟随前行;
  • 实在需要缩进时, 按照上述缩进风格;
  • 表达式中的缩进同变量声明时;

括号

  • 原则: 不要滥用括号, 必要时一定要使用.
  • if/else/while/for 条件表达式必须有小括号;
  • 语句块必须有大括号;
  • 一元操作符(如 delete, typeof, void)或在某些关键词(如 return, throw, case, new) 之后, 不要使用括号;

语句行

  • 变量如有较广的作用域, 使用全局变量; 如果是在类中, 可以设计成为一个类的成员;
  • 函数体中, 多个局部变量集中在一起声明, 避免分散;
  • 适当延迟变量的初始化;

字符串

  • JS 代码中, 单行字符串使用单引号;
  • JS 代码中, 多行字符串使用 + 拼接形式, 不要使用 \ 拼接;
  • HTML 中 Element 属性, 使用双引号;

标准文档实例

通用模板库

准备中……

资源列表

分享到:
评论

相关推荐

    ZendFramework中文文档

    9.4.3. Basic Zend_Date Operations Common to Many Date Parts 9.4.3.1. List of Date Parts 9.4.3.2. List of Date Operations 9.4.4. Comparing Dates 9.4.5. Getting Dates and Date Parts 9.4.6. Working ...

    Qt 采用http通信json解析读取天气

    Qt 采用http通信json解析读取天气

    岗位晋升360度调查表.doc

    岗位晋升360度调查表.doc

    合法辞退员工的N种方式.pptx

    合法辞退员工的N种方式.pptx

    大模型、Agent、具身智能及人形机器人学习全路径规划.pdf

    大模型、Agent、具身智能及人形机器人学习全路径规划.pdf

    华润万家员工手册.doc

    华润万家员工手册.doc

    招聘需求分析.xls

    招聘需求分析.xls

    光伏+蓄电池系统中双有源桥DC-DC变换器的Matlab仿真与MPPT及闭环控制实现

    内容概要:本文详细介绍了基于‘光伏(PV)+蓄电池+负载’架构的双有源桥DC-DC变换器仿真方法及其在Matlab 2021b中的具体实现。首先解析了光伏系统的MPPT控制,通过扰动观察法使光伏板始终处于最大功率点。接着讨论了蓄电池的恒流充放电控制,利用PI控制器确保电池的安全和高效运作。然后阐述了双有源桥DC-DC变换器的闭环控制机制,借助PID控制器维持系统输出电压的稳定性。最后,文章展示了如何在Matlab Simulink环境下构建完整的仿真模型,涵盖各模块间的电气连接与信号交互,为新能源系统的优化提供了理论和技术支持。 适合人群:从事电力电子、新能源系统设计的研究人员和工程师,尤其是那些需要深入了解光伏储能系统工作原理的人群。 使用场景及目标:适用于希望掌握光伏储能系统中关键组件如MPPT、恒流充放电控制及双有源桥DC-DC变换器的设计与仿真的技术人员。目标是在实际工程项目中提高系统的效率和可靠性。 其他说明:文中提供的代码片段和建模思路有助于读者更好地理解和实践相关技术,同时也强调了一些常见的陷阱和调试技巧,帮助避免潜在的问题。

    数学建模_Matlab_SPSS_教程分享_学习用途_1742838826.zip

    线性代数

    电机调速技术解析:直流电机双闭环与多种电机滞环调速方法对比

    内容概要:本文详细介绍了不同类型电机的调速方法,重点探讨了直流电机双闭环调速、永磁同步电机电流滞环闭环调速以及异步电机滞环电流调速。文中不仅提供了每种调速方法的基本原理和技术特点,还附带了相应的代码示例进行辅助解释。此外,文章对永磁同步电机的电流滞环调速与SVPWM调速进行了对比,指出了各自的优劣之处。最后,强调了在实际应用中选择合适调速方案的重要性。 适合人群:从事电机控制系统设计与开发的技术人员,尤其是有一定电机控制基础的研发人员。 使用场景及目标:适用于需要深入了解电机调速机制及其应用场景的专业人士。目标是帮助读者掌握不同电机调速方法的特点,以便在实际工程中做出最优选择。 其他说明:文章通过具体的代码实例展示了调速方法的实际应用,使读者能够更好地理解和实践相关技术。同时提醒读者在实际调试过程中要注意参数设置和硬件条件的影响。

    人员晋升推荐表.xls

    人员晋升推荐表.xls

    员工生日关怀方案.doc

    员工生日关怀方案

    模拟IC设计:解析国际知名大厂的SAR、Sigma-Delta和Pipeline ADC逆向工程

    内容概要:本文详细介绍了对国际知名大厂的三个逆向ADC电路(SAR ADC、Sigma-Delta ADC和Pipeline ADC)进行深入剖析。作者通过Cadence Virtuoso平台研究了这些电路的标准单元库设计,探讨了各个电路的关键技术和实现细节。对于24bit Sigma-Delta ADC,重点讨论了其调制器部分的时钟相位分配和噪声整形技术;对于16bit SAR ADC,则关注其比较器阵列的独特设计以及动态锁存比较器的应用;而对于14bit Pipeline ADC,着重分析了其级间放大器设计和电荷共享技术。此外,文中还提到了在将这些设计适配到自家工艺过程中遇到的问题及其解决方案,如电容寄生效应、时序约束调整、运放结构优化等。 适合人群:从事模拟集成电路设计的专业人士,尤其是对ADC设计感兴趣的工程师和技术研究人员。 使用场景及目标:帮助读者深入了解高精度ADC的工作原理和设计技巧,掌握逆向工程技术在实际项目中的应用,提高对不同工艺节点下ADC设计的理解和适应能力。 其他说明:文中提供了大量具体的代码片段和仿真命令,便于读者理解和实践。同时,作者分享了许多宝贵的经验教训,强调了在逆向工程中需要注意的技术细节和潜在风险。

    大型立体仓库智能物流系统的PLC控制与优化设计

    内容概要:本文详细介绍了大型立体仓库智能物流系统的构建与优化。该项目涉及一万多个库位、一百多台输送机和八台堆垛机,采用了西门子PLC作为控制核心,通过无线网桥与WCS和WMS系统对接。文章重点讲解了梯形图编程和功能块的应用,如输送机启停控制、堆垛机移动控制、路径规划、无线通讯处理以及异常处理机制。此外,还探讨了设备协同、逻辑优化、任务分配算法和速度曲线规划等方面的技术细节。 适合人群:从事工业自动化、智能仓储系统设计与开发的工程师和技术爱好者。 使用场景及目标:适用于智能仓储系统的设计、实施和维护,旨在提高系统的稳定性、效率和可维护性。 其他说明:文中提供了大量实际项目中的代码示例和调试经验,有助于读者理解和应用相关技术。

    新员工月工作总结表.xlsx

    新员工月工作总结表.xlsx

    西门子PLC汽车电子零件装配线SCL语言模块化编程与集成解决方案

    内容概要:本文详细介绍了基于西门子S7-1500 PLC的汽车电子零件装配线集成解决方案。主要内容涵盖伺服轴控制、阿特拉斯拧紧枪控制、康耐视视觉检测系统以及HMI界面的设计与实现。文中展示了如何利用SCL语言将多种工业设备(如HMI、伺服电机、六轴机器人等)的功能封装为标准化功能块,从而提高系统的模块化程度和可复用性。同时,还分享了一些实际项目中的调试经验和优化技巧,如通过调整加减速曲线避免机械振动、设置扭矩保持时间和视觉检测的防抖定时器等。 适合人群:从事自动化控制领域的工程师和技术人员,尤其是熟悉PLC编程和工业自动化设备集成的专业人士。 使用场景及目标:适用于汽车制造行业的生产线控制系统设计与实施。主要目标是帮助工程师快速掌握如何使用SCL语言构建高效稳定的PLC控制系统,提升生产效率和产品质量。 其他说明:文中不仅提供了详细的代码示例,还结合具体的应用场景进行了深入剖析,有助于读者更好地理解和应用相关技术。此外,强调了模块化编程的优势,如减少重复劳动、便于维护升级等。

    嵌入式系统中基于STM32/AT32/GD32的串口IAP Bootloader实现与远程升级方案

    内容概要:本文详细介绍了如何在STM32、AT32和GD32等Cortex-M系列MCU上实现串口IAP(In Application Programming)Bootloader,支持远程升级及RS485升级。主要内容涵盖Bootloader的工作原理、内存分配、通信协议设计、Flash写入操作以及跳转应用程序的关键步骤。文中提供了具体的代码示例,如Bootloader主循环、RS485收发控制、Flash写入、CRC校验等,并分享了多个实战经验和注意事项,确保数据传输的可靠性。 适合人群:从事嵌入式系统开发的技术人员,尤其是对STM32、AT32、GD32等国产MCU有一定了解并希望掌握串口IAP技术的研发人员。 使用场景及目标:适用于需要远程升级固件的嵌入式项目,帮助开发者避免现场升级带来的不便,提高设备维护效率。目标是让读者能够独立实现一个可靠的串口IAP Bootloader,掌握RS485通信和Flash编程的关键技术。 其他说明:文中提到的代码和配置已在GitHub上提供,方便读者下载和实践。同时,作者分享了许多实战经验和常见问题解决方案,有助于减少开发过程中可能出现的问题。

    线性代数_矩阵运算_方程组解释_MIT公开课笔记用途_1742822302.zip

    线性代数

    学生会干部竞选清心简约.pptx

    学生会干部竞选清心简约.pptx

    光伏发电三相并网模型:基于Boost逆变器与MPPT控制技术的应用研究

    内容概要:本文深入探讨了光伏发电三相并网模型的技术细节,涵盖了光伏板、Boost升压电路、三相并网逆变器、MPPT最大功率点跟踪控制(扰动观察法)、PLL锁相环、dq解耦控制以及电流内环电压外环的并网控制策略。通过Python和Matlab代码片段展示了各个组件的工作原理及其相互协作的方式。实验结果显示,在复杂工况下,该系统能够保持直流母线电压稳定,THD仅为2.72%,并网电流波形优良,证明了其高效性和稳定性。 适用人群:从事电力电子、新能源发电领域的研究人员和技术人员,特别是对光伏发电并网技术感兴趣的读者。 使用场景及目标:适用于研究和开发高效的光伏发电并网系统,旨在提高系统的稳定性和效率,特别是在面对光照强度变化和负载突变的情况下。 其他说明:文中提供的代码片段有助于理解和实现相关控制算法,同时强调了实际应用中的注意事项,如参数选择和调试技巧。

Global site tag (gtag.js) - Google Analytics