如何优雅的编写前端代码
代码千万行,注释第一行。命名不规范,同事泪两行。
锵锵锵!今天萌芽跟大家一起来讨论讨论编码规范问题,可不要小看注释哦!在多人项目的时候注释可是非常重要的,你是否有觉得自己页面排版不够好?经常自己都不知道自己的这个class或者id用在哪里?或者因为偷懒写一大把css选择器导致布局一改还要再调?这都是编码规范问题!自己都看不懂自己的代码的话就更别想让别人看得懂了。先做个小总结:
- HTML语义化
- CSS约束与样式规范
- JavaScript命名规范
HTML语义化
遵守HTML语义化约束,在不同的地方使用相应的标签更有效地开发并且有助于浏览器的读取执行。
如 <em>、<strong>、abbr等。
关于导入资源:Css放在头部javascript放在body里面的最下方,避免浏览器初次渲染过高。
HTML本身就是一门超文本语言,了解语义是非常重要。语义化的编写代码首先能够增强可读性,也有助于我们的机器阅读,他的文本表现力丰富适合引擎搜索有效的爬取更多的信息,极大的提升搜索量根据文章自动生成目录等等。
将你构建的页面当作一本书,将标签的语义对应的其功能和含义;
- 书的名称:
<h1>
- 书的每个章节标题:
<h2>
- 章节内的文章标题:
<h3>
- 小标题/副标题:
<h4> <h5> <h6>
- 章节的段落:
<p>
CSS约束与样式规范
Css编写减少多层嵌套,最多可潜逃三层,命名不要使用驼峰和下划线用 - ,将代码组件化。
遵守编写顺序:
- 定位 (相对定位、绝对定位等|存在覆盖盒模型问题所以排在第一个)
- 盒模型 (高度、宽度、边距等)
- 文本样式 (行高、字体样式等)
- 颜色背景 (文字背景颜色、透明度等)
@medai 媒体查询放到组件附近不要因为省事儿只创建一个把所有的样式都放里面这样会造成混淆。
对于属性值或者颜色参数采取省略措施,属性值0.5rem写成.5rem,颜色能写#FFF就不要写成#FFFFFF。
以组件为单位组织代码段;
- 制定一致的注释规范;
组件块和子组件块
以及声明块
之间使用一空行分隔,子组件块
之间三空行分隔;- 如果使用了多个 CSS 文件,将其按照组件而非页面的形式分拆,因为页面会被重组,而组件只会被移动;
/* ==========================================================================组件块============================================================================ *//* 子组件块============================================================================ */
.selector {padding: 15px;margin-bottom: 15px;
}/* 子组件块============================================================================ */
.selector-secondary {display: block; /* 注释*/
}.selector-three {display: span;
}
Class 和 ID
- 使用语义化、通用的命名方式;
- 使用连字符 - 作为 ID、Class 名称界定符,不要驼峰命名法和下划线;
- 避免选择器嵌套层级过多,尽量少于 3 级;
- 避免选择器和 Class、ID 叠加使用;
声明块格式
- 选择器分组时,保持独立的选择器占用一行;
- 声明块的左括号
{
前添加一个空格; - 声明块的右括号
}
应单独成行; - 声明语句中的
:
后应添加一个空格; - 声明语句应以分号
;
结尾; - 一般以逗号分隔的属性值,每个逗号后应添加一个空格;
rgb()
、rgba()
、hsl()
、hsla()
或rect()
括号内的值,逗号分隔,但逗号后不添加一个空格;- 对于属性值或颜色参数,省略小于 1 的小数前面的 0 (例如,
.5
代替0.5
;-.5px
代替-0.5px
); - 十六进制值应该全部小写和尽量简写,例如,
#fff
代替#ffffff
; - 避免为 0 值指定单位,例如,用
margin: 0;
代替margin: 0px;
;
声明顺序
相关属性应为一组,推荐的样式编写顺序
- Positioning 【定位】
- Box model 【盒模型】
- Typographic 【文本样式】
- Visual 【颜色】
- 其他
引号使用双引号。
媒体查询放到相关规则附近。
模块组件化
说白了就是把你写的东西分成一个块儿一个块儿的。
JavaScript命名规范
单行注释用: //
多行注释用: /** **/
变量、函数、函数的参数、方法属性、枚举变量采用驼峰命名法: userName
私有变量命名为: _this
常量、枚举的属性、缩写词命名为全部大写: HAPPLE
类名使用名词。
函数名使用动词。
boolean 类型的变量使用 is 或 has 开头。
Promise 对象用动宾短语的进行时表达。
True 和 False 布尔表达式
类型检测优先使用 typeof。对象类型检测使用 instanceof。null 或 undefined 的检测使用 == null。
下面的布尔表达式都返回 false:
- null
- undefined
- '' 空字符串
- 0 数字0
但小心下面的, 可都返回 true:
- '0' 字符串0
- [] 空数组
- {} 空对象
不要在 Array 上使用 for-in 循环
for-in 循环只用于 object/map/hash
的遍历, 对 Array
用 for-in 循环有时会出错. 因为它并不是从 0 到 length - 1 进行遍历, 而是所有出现在对象及其原型链的键值。
二元和三元操作符
操作符始终写在前一行, 以免分号的隐式插入产生预想不到的问题。
var x = a ? b : c;var y = a ?longButSimpleOperandB : longButSimpleOperandC;
二元布尔操作符是可短路的, 只有在必要时才会计算到最后一项。
最后附上原帖地址:https://www.w3cschool.cn/webdevelopment/
如何优雅的编写前端代码相关推荐
- 如何使用 WEB 技术编写前端代码,实现大屏展示和地图显示功能
使用 WEB 技术编写前端代码实现大屏展示和地图显示功能可以采用以下步骤: 使用 HTML.CSS.JavaScript 等前端技术构建页面布局和样式. 使用 JavaScript 库或框架,如 jQ ...
- 程序猿小明需要为公司员工的个人信息录入编写前端代码,html +css +js正则表达式 实现个人信息登录表
~关注我 带你看更多精品技术和面试必备 程序猿小明需要为公司员工的个人信息录入编写前端代码,效果如下图 需求:要保证信息录入格式正确无遗漏(输入有误要给到对应提示) 我写的代码如下 : 可以借 ...
- 如何优雅的编写 JavaScript 代码
几乎每个大一点公司都有一个"运行时间长,维护的工程师换了一批又一批"的项目,如果参与到这样的项目中来,大部分人只有一个感觉--"climb the shit mounta ...
- 一个在线编写前端代码的好玩的工具
https://codesandbox.io/ 可以编写 Angular,React,Vue 等前端代码. 可以实时编辑和 preview. live 功能,可以多人协作编辑,不过是收费的功能. 可以 ...
- 前端代码规范参考和如何保持前端代码规范
1.前端代码规范参考 编写前端代码规范的主要驱动力是两方面: 1) 代码一致性(一个项目的代码看起来就像一个人写的一样) 2) 最佳实践. 通过保持代码风格和传统的一致性,我们可以减少遗留系统维护 ...
- 如何编写无法维护的代码_编写可维护的前端代码
点击这里获得更好的阅读体验github.com 以下是本人在团队内部分享的整理和补充,水平有限,如有错误,请不吝赐教. 大家好,我叫王力国,目前是 RPA 前端团队负责人,过去一年我们从零构建了 R ...
- react 改变css样式_web前端入门到实战:编写CSS代码的8个策略,资深开发工程师总结...
编写基本的CSS和HTML是我们作为Web开发人员学习的首要事情之一.然而,我遇到的很多应用程序显然没有人花时间真正考虑前端开发的长久性和可维护性.我认为这主要是因为许多开发人员对组织CSS / HT ...
- 用前端代码编写一个动态的罗盘时钟
用前端代码编写一个动态的罗盘时钟 前言 一.代码如下 1.index 2.js 3.css 页面效果 前言 今天给大家分享一个罗盘时钟的前端代码,喜欢的小伙伴帮忙点赞一下噢! 一.代码如下 1.ind ...
- 从宏观的角度讨论网络应用怎么运行及其前端代码系统编写和优化
一个网络页面,网络应用的前端开发,首先明白前端代码在浏览器上运行,访问服务器提供的接口,接收服务器传来的数据,展示在页面上. 本文从较为宏观的角度来讨论前端开发中的一些课题. 首先,是网络基础HTTP ...
最新文章
- 容量法和库仑法的异同点_【图文专辑】第十讲:容量法高锰酸盐指数的测定
- stm32之通用定时器
- pin码计算器网页版_AP微积分Excel简便计算+网页工具指南
- 最易懂的Spring IOC原理讲解
- ethereumjs/ethereumjs-account-2-test
- 20190922 On Java8 第二十一章 数组
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- 最新版QQ拼音打字法为什么打出来的字中间有竖线?
- 能自动更新的万能周报模板,有手就会用!
- html+css+js的生日祝福网页+更改教程
- 装linux系统为什么会黑屏_Ubuntu安装时出现黑屏问题的解决
- iPad被停用,安装iTunes提示安装包出错解决办法
- C#两种方法输出1~100间的质数(素数)
- 威漫哨兵机器人_漫威:哨兵机器人能不能打过复仇者联盟?
- 消除VMware启动虚拟机时的floppy0提示的方法
- 清华NLP组论文清单:全方位覆盖自然语言处理12大领域
- 洞态IAST自动检测S2-001漏洞
- linux安装i219网卡驱动下载,Linux redhat 6.5 安装网卡I219-LM 驱动
- 心灵的程序:佛学与计算机
- ERP与SCM相结合会更好-云创集团