Angular2 前端代码规范
- 不要重置对象的引用!(重置只应该在组件或服务的初始化时) why:会使页面产生闪烁
- 不要给图片绑定一个空的值或空的图片引用(如果值从服务器异步过来,那应该在初始化时给它一个默认值)why:会触发一个404的请求 (如:img src=http://xxxx/null)
- 页面全部使用最新的angular2写法,on-click=>(click) bind-src=>[src] bind-html=>[innerHtml]
规范:
- 拆分模型和控制器(保持“瘦”控制器,“胖”模型的原则【界面交互在控制器里,业务逻辑都封装在模型里】)
代码写法技巧:
- if else 嵌套最多两级,减少代码逻辑层级【优化阅读】。
例子:queryCard.success = function (data) {
console.log(data);
that.pageInfo.bindCardList = JSON.parse(data);
if (that.pageInfo.bindCardList == null || that.pageInfo.bindCardList.length <= 0) {
that.viewInfo.isbindedCard = false;
}
else {
that.viewInfo.isbindedCard = true;
for (let entry of that.pageInfo.bindCardList) {
var cardStr = entry.card_no.split(' ').join('');
if (cardStr.length != 20 && cardStr.length != 13) {
continue;
} if (cardStr.length == 20) {
entry.card_no = cardStr.substr(0, 5) + " " + cardStr.substr(5, 5) + " " + cardStr.substr(10, 5) + " " + cardStr.substr(15, 5);
} else {
entry.card_no = cardStr.substr(0, 5) + " " + cardStr.substr(5, 5) + " " + cardStr.substr(10, 3);
}
//构造弹窗信息
if (entry.is_default == 0) {
entry["isSelect"] = 0;
that.pageInfo.inputCardNo = entry.card_no;
that.getCardLLInfo();
} else {
entry["isSelect"] = 1;
}
}
}
};=>
queryCard.success = function (data) {
console.log(data);
that.pageInfo.bindCardList = JSON.parse(data);
if (that.pageInfo.bindCardList == null || that.pageInfo.bindCardList.length <= 0) {
that.viewInfo.isbindedCard = false;
return;
}
that.viewInfo.isbindedCard = true;
for (let entry of that.pageInfo.bindCardList) {
var cardStr = entry.card_no.replace(" ",""); // <= split(' ').join(''); 其实应该把没有空格的值单独保存,很多地方都在使用它
if (cardStr.length != 20 && cardStr.length != 13) {
continue;
}
...... - 尽量杜绝常量的使用【优化阅读】
例子:<button *ngIf="item.activity_status == " class="btn btn-locate baidu" opt="N-去领取"
=><button *ngIf="item.activity_status == PKGActivityStatus.normal" class="btn btn-locate baidu" opt="N-去领取" - 变量和函数命名清晰,不含糊或生僻(不用太在意名字长度,如果含义清楚,可以接收)
- 尽量消除重复代码(又在埋坑)
如: entry.card_no.split(' ').join(''); 或者 cookieService.get("abc"); - 没用的代码、变量尽早删除

- 冗余的代码必须精简:
直接改写成:
isShowCardListAlert() {
return !this.viewInfo.isShowCardList
}简化之后,发现,连这个函数都是冗余的:

再分析,发现连变量【viewInfo.isShowCardList】都是多余的:
<div class="win-box align-center" [hidden]="true" #winBox>
<div class="bottom-box">
<div class="tc-title"><span>切换其他卡</span><span class="close-plan" (click)="winBox.hidden=false">关闭</span></div>
<div *ngFor="let item of pageInfo.bindCardList">
......最终控制器代码省掉了一个变量的操作,一整块儿函数!
- 定义对象的属性 entry["isSelect"] = 0 改成 entry.isSelect = 0
还有
为什么要用“双引号”,这样连智能感知都被屏蔽了!而且审核代码的人,无法看出你到底是哪个字母写错了,还是多了个空格(巨坑!这个不仅仅是js代码的问题)
写代码时,请多为接手你代码的人想想!这种代码(已经无法表达此时的感受):
=》 
这段代码.......(不想说话) 还有下面这个:

请尽量消除重复!!消除重复!消除重复!
- 为了删除一个
activity.warningCount 我必须小心翼翼,不知道哪里在使用,不知道,它用来干什么?!
Angular2 前端代码规范的更多相关文章
- Web 前端代码规范
Web 前端代码规范 最后更新时间:2017-06-25 原始文章链接:https://github.com/bxm0927/web-code-standards 此项目用于记录规范的.高可维护性的前 ...
- eslint+prettier+husky+lint-staged 统一前端代码规范
eslint+prettier+husky+lint-staged 统一前端代码规范 遵循编码规范和使用语法检测,可以很好的提高代码的可读性,可维护性,并有效的减少一些编码错误. 1.终极目标 团队中 ...
- idataway_前端代码规范
1.前后端json对接的规范. 前后端的json代码规范 result ={ success:”true”,//true表示成功,false表示失败. data:{}, //数据 errorCode: ...
- Web前端代码规范
新增:http://materliu.github.io/code-guide/#project-naming HTML 原则1.规范 .保证您的代码规范,保证结构表现行为相互分离.2.简洁.保证代码 ...
- Web前端代码规范与页面布局
一. 规范目的: 为提高工作效率,便于后台人员添加功能及前端后期优化维护,输出高质量的文档,在网站建设中,使结构更加清晰,代码简明有序,有一个更好的前端架构,有利于SEO优化. 二. ...
- web前端代码规范——css代码规范
Bootstrap CSS编码规范 语法 用两个空格来代替制表符(tab) -- 这是唯一能保证在所有环境下获得一致展现的方法. 为选择器分组时,将单独的选择器单独放在一行. 为了代码的易读性,在每个 ...
- web前端代码规范 - HTML代码规范
Bootstrap HTML编码规范 本文转载自w3cschool. 由于bootstrap得到了世界的认可,因此,此规范用于规范html代码有一定的说服力. 交流qq群:164858883.欢迎各位 ...
- 腾讯alloyteam团队前端代码规范
来源于:http://alloyteam.github.io/CodeGuide/ 命名规则 项目命名 全部采用小写方式, 以下划线分隔. 例:my_project_name 目录命名 参照项目命名规 ...
- 前端代码规范-Javascript
命名规范 ECMAScript 规范中标识符采用驼峰大小写格式,驼峰命名法由小(大)写字母开始,后续每个单词首字母都大写.根据首字母是否大写,分为两种方式: Pascal Case 大驼峰式命名法:首 ...
随机推荐
- mysql忘记root密码处理
由于测试环境root账户不经常使用,等到需要用到时,很难记起它的密码.特在此记录下忘记密码后的操作 1. 先停止mysql服务 2. 运行 mysqld -nt skip-grant-tables 不 ...
- mac 下安装 mit-scheme
这两天心血来潮想看一下 SICP 和 Lisp,准备先看 SICP ,之后再学 Haskell, 深入学习一下函数式编程. 所以得装个 mit-scheme 做练习. 尝试了 3 种方式, 前 2 种 ...
- iOS 系统架构及常用框架(iOS的系统架构分为四个层次)
1.iOS基于UNIX系统,因此从系统的稳定性上来说它要比其他操作系统的产品好很多 2.iOS的系统架构分为四层,由上到下一次为:可触摸层(Cocoa Touch layer).媒体层(Media l ...
- 【Qt开发】更改应用程序图标和任务栏图标
说明 实际开发过程中,生成的应用文件不会用默认的图标,同时程序启动后任务栏的图标也需要修改,还有窗口的图标,这样显得程序不那么low.更改程序的图标有多种方式,基于Qt Creator或vs开发的方式 ...
- linux mint 18.1 安装nvidia显卡驱动
原文地址 http://www.gamersonlinux.com/forum/threads/updating-nvidia-drivers-mint.1746/ 主要步骤很简答 就是将ppa仓库地 ...
- 【linux】虚拟机内装Linux系统的ssh访问
一般在虚拟机内安装一个Linux系统,虚拟机网络设置为桥接后,Linux系统会在安装的过程中自动设置其为dhcp配置,会给其随机分配一个ip,这个ip可以用命令 "ifconfig" ...
- PHP的parse_ini_file()函数,解释结构类型php.ini格式的文件
1.直接读取,返回一维数组 如: "test.ini" 的内容: [names] me = Robert you = Peter [urls] first = "http ...
- The “SignFile” task was not given a value for the required parameter “CertificateThumbprint”的一个简单的解决方法
这个只是其中一种解决方法,而且不是万能的 1. 由提示内容可以看出,这个一个 sign(认证)的问题, 在出现这个问题的项目上,鼠标右键,选择properties,然后选择signing. 2. 选择 ...
- NPM 与前端包管理
我们很清楚,前端资源及其依赖管理一直是 npm 的重度使用场景,同时这也一直是 Node.js 普及的重要推动力.但这类应用场景到底有多重度?这是一个很难回答的问题.这份 “npm 最常下载的包的清单 ...
- nodejs图片裁剪、水印(使用images)
/** * Created by chaozhou on 2015/9/21. */ var images = require("images"); /** * 缩放图像 * @p ...