当前位置: 首页 > Web前端 > HTML5

GoodProgrammerweb前端分享前端开发规范

时间:2023-04-04 22:42:24 HTML5

本文主要从以下几个方面总结了前端开发规范:1.目录构建规范2.前端命名规范3.前端工作规范4.编写开发文档规范前端目录构建规范我们从命名原则、根目录、业务逻辑等方面构建目录1.1命名原则:简洁明了(如下:)src源代码img图片资源jsJavaScriptscriptdep第三方依赖包不要使用复数(如下:)不要使用imgsdocs1.2根目录(root)结构按功能划分(如下:)src源码(逻辑)docdocumentdepthird-party依赖包测试test1.3按业务逻辑划分文件夹(如下:)src目录名词解释:公共公共资源public/static静态资源组件componentview/tpl模板文件src公共公共资源imglogo.pngsprites.pngcssreset.cssjsconf.js项目配置文件public/static静态资源jscsstplindex.htmlshopcar.htmlimgcomponent组件homeshopcarloginregisteruserlistdetailview/tplprojecttemplatetpl是template1.4的缩写总结:有以上目录开发规范的两种使用方式使用webpack、gulp等前端工程工具手动构建使用框架提供的脚手架工具修改前端命名约定。我将从以下两个方面来解释这部分?CSS命名规范oBEM规范oOOCSS规范?javaScript编写规范ojslintoeslint2.1css命名规范2.1.1BEM规范概念:BlockElementModifier,这是一种前端命名方法,旨在帮助开发人员实现模块化、可重用、高度可维护和结构化的CSS代码。BEM是一种定义css类的命名约定,每个名称及其组成部分都有一定的含义。css的单个名称,由拉丁字母、数字、-组成。BlockElementModifier是一个独立且有意义的实体,例如header,container,menu,checkbox等Block的一部分,没有独立的意义,例如headertitle,menuitem,Aflagoflistitem,etc.BlocksorElements,可以用来改变它的外观,行为,状态。例如disabled,checked,fixed等。命名由拉丁字母、数字、-组成css的单一名称。Block使用Conciseprefixname来命名一个独立的、有意义的抽象块或组件。.block.header.site-searchElement使用__连接器连接Block和Element。.block__element.header__title.site-search__fieldModifier使用--connector连接Block或Element和Modifier。.block--modifier.block__element--modifier.header--hide.header__title--color-red.site-search__field--disabled实例.form{}.form--theme-xmas{}.form--simple{}.form__input{}.form__submit{}.form__submit--disabled{}Buttons实例普通按钮成功按钮危险按钮.button{display:inline-block;边界半径:3px;填充:7px12px;边框:1px实心#D5D5D5;背景图像:线性渐变(#EEE,#DDD);字体:70013px/18pxHelvetica,arial;}.button--state-success{颜色:#FFF;背景:#569E3D线性渐变(#79D858,#569E3D)重复x;边框颜色:#4A993E;}.button--state-danger{颜色:#900;}2.1.2OOCSS规范概念ObjectOrientedCSS,面向对象的CSS,旨在编写高可重用、低耦合、高扩展的CSS代码OOCSS是以面向对象的思想定义样式,将抽象与实现分离,提取公共代码。总结:把可重用的东西当成一个对象,然后把不同的属性放到另一个类名```css.list{background:#fff;}.list--宽度{宽度:300px;}```2.2js编码规范?jslint?eslint前端工作规范我们从三个方面来理解:日报、周报和email格式有什么问题?有解决办法吗?明天的计划?(你明天打算做什么)最后,跟上内容末尾的日期3.2周报内容如下:?2016.07.25-2016.07.29周报:i.本周主要工作内容:?完成鸿视云h5播放器升级和大数据报表;?修复xk-h5播放器bug:三星手机内置浏览器无法进行滑动搜索;?admin-console后台管理系统初步完成了终端接入页面和数据统计概览页面的制作;二.工作中存在的主要问题问题:iii.-web服务器大数据展示页面移植到admin-console后台管理系统时存在bootstrap与jquery.easyui冲突等兼容性问题;iv.-解决这个问题的思路可能不是最有效的方法,可能使用iframe会更快;使用iframe,存在easyui页面如何控制iframe页面,浏览器窗口变化时如何改变iframe等问题;v.下周工作计划:?完成上周未完成的后台大数据展示页面制作;?完成工作后,如果有时间,尝试使用iframe解决;?问问你的兄弟有没有什么工作可以帮忙;3.3常用的邮件格式如下:1.指定邮件发给谁?o参会者:一定要想清楚,如果不清楚,记得问问你的直接主管(同事)2.邮件主题:o主题必须只有一个o如有必要,可以加上:【请review]等3.邮件正文o标题要清晰:o清晰示例:o领导您好:o以下内容为xxx请熟悉/请审核4.签名:o什么部分,什么职位,什么姓名和时间5.附件o需要说明附件是做什么用的?6.转发;o需要解释原始邮件,然后写清楚你的意图。开发文档的编写规范将从以下几个部分进行说明:html规范?css规范?js规范4.1html规范1.标签上的属性顺序建议如下:class(class用于高可复用组件设计,所以应该放在第一位)idname(id比较具体,尽量少用,所以放在第二位)data-srcfortypehrefvalueplaceholdertitlealtaria-rolerequiredreadonlydisabled2.id/class命名规则:BEMOOCSSSMACSS(扩展)3.注释规范(最好是英文)

>8.11.
14.
17.
4.2cssspecification21.属性顺序o位置属性(位置右上角z-index显示浮动等)o大小(宽度高度填充边距等)o文本系列(字体行高字母间距颜色文本对齐等)o背景(背景边框等)o其他(动画过渡等)o以及如何写注释oo.go--top{oposition:fixed;oright:20px;obottom:50px;oz-index:1000;odisplay:block;oowidth:50px;oheight:200px;oofont-size:16px;oobackground:#ccc;ooopactiy:0.5;otransition:all0.5s;ooo}22.尽量不要使用选择器(css??3选择器)。content.first-child
23.属性使用缩写:body{margin:10px0;background:url('./img.png')center;}29.去掉0body{margin:10px.8px;background:url('./img.png')center;}4.3Js规范34.语言规范o声明变量必须加let关键字.不要使用varo,优先使用箭头函数o使用模板字符串,而不是连接字符串35.使用分号o如果只依赖语句隐式分隔,有时很麻烦,使用分号可以更清楚的说明语句的开始和结束在哪里语句,在某些情况下,会出现缺少分号BUG36.块内的函数声明o不要在块内声明函数,例如if(x){ofunctionzxm(){}o}o如有必要,使用函数表达式初始化变量oif(x){oletfoo=function(){}o}37.循环注意力ofEachomapofilteroeveryosomeofor..inofor...ofofor循环whileodo...while38。命名约定:ocamel表示驼峰命名法pascal表示首字母大写o变量名:必须使用驼峰命名法o参数名称:必须使用驼峰命名法o函数名:必须使用驼峰命名法o方法/属性:必须使用驼峰命名法oprivate(受保护的)成员:必须以下划线开头o常量名称:必须使用全部大写的下划线名称方法,例如XTEP_HOST_APIo类名:必须使用pascal命名法o枚举名称:必须使用pascal命名法o枚举属性:必须使用全部大写下划线命名法,例如XTEP_HOST_APIo命名空间:必须使用驼峰命名法o语义:命名也需要注意语义39.声明:函数进入函数时应放置ovarletconst。o注释变量的作用和意义,并按字母顺序排列。每个变量单独占一行添加注释oovartotalPrice=1;//totalPrice表示商品购物车总价√ovarnum=10,totalNum=100;不推荐40.回调函数规范:回调函数统一使用Promise函数,回调成功参数为res,错误参数为errletcallback=newPromise((resolve,reject)=>{if(/*异步操作成功*/){resolve(value);}else{reject(err);}});callback.then((res)=>{console.log('进入打回来!',资源);}).catch((err)=>{console.log('回调失败!',err);});41.使用反引号()或单引号(''),不要使用双引号("")42.函数的默认值写在其他参数之后functionzxm(a,b,name='zxm'){控制台日志(名称)}