Skip to content

Latest commit

 

History

History
63 lines (57 loc) · 5.79 KB

codingStyle.md

File metadata and controls

63 lines (57 loc) · 5.79 KB

一、前言

     在我熬夜写这个编码规范的时候已经是过了凌晨0点了,正好发了个动态助兴一下,然后低头继续码。。时间是公平的,我并没有比别人多多少时间,依然每天 处理着公司的业务,空的时候看一看技术文档,写一写技术博客,做一做开源项目之类的东西。我对技术报有狂热的追求,以至于上班快两年了养成了当天觉当 天睡的好习惯。我也想玩,但是一想到我前面这么多年浪费了太多时间以至于不敢继续玩下去。熬夜己经习惯,新闻上动不动就报道哪个公司的高管长期熬夜 挂B了,我在想我会不会有一天也会这样。但我没想过我要改变现在这种习惯,至少现在还没有,不管以后怎么样,至少我一直在努力让我的生活更加充实。
     现在准备做的一个项目到用angular2,至于angular2我也不熟,而且api在不断的变化,不过值得高兴的是ng2在不仅的几个月后会迎来release版本。 很荣幸 @梦竹 让我担任项目的项目架构,由于自己一直做的后台项目,第一次做前端架构未免比较虛,不过我也在尽力做好。这不,大半夜的还在写文档呢。至于 good idea这种东西还是让 @梦竹 来想,我的作用是将good idea变成good product。。另外,交一下底,我也说过我是第一次正式开发前端项目,所以我并 不能起到绝对的技术领导作用,我们一起做项目只能互相请教一起进步。官网是最好的老师,angular.cn保持英文同步,能对我们学习angular2起到很大的 作用,我们一定要好好李颖。

二、说明

1. 在开始编码以前先看一看typescript语法,因为我们的项目是基于typescript写的。

2. 然后去angular.cn照着教程敲一敲练习代码。

3. 项目环境不用太在意,基于webpack构建,但是环境一旦搭建好,就不需要太操心。

4. 我们在做项目的时候写的最多的就是组件和service,所以这两块一定要好好看看。

5. 我们css采用的scss预处理器,不懂scss没关系,边写边写,极易上手。

6. 每个组件都有.ts(组件)、.scss(样式)、.html(模板)、.png(效果图)、.spec.ts(组件测试)五种文件。

三、编码规范

这里的编码规范都是从官网上总结下来的,毕竟官方!!!! 另外有tslint来规范我们的代码,不要有警告。

1. 单一职责。坚持 每个文件只定义一样东西。服务就是服务,组件就是组件,不要在组件里面写模型,也不要服务时写组件。

2. 命名规范。一个项目保持一样的命名风格,以后有几种风格,选其一

1. 使用 .分割单词 user.model.ts(本项目使用)

2. 使用-分割单词 user-model.ts

3. 使用驼峰命名法 UserModel.ts

4. 以功能作为后缀 例如 .service .component .pipe .model

3. 为组件和指定添加自定义前缀,防止名字冲突 selector:'xx-xxxx'

4. 单元测试文件以 .spec.ts结尾 端到端测试文件以 e2e-spec.ts

5. 常量命名一定要全大写,用_ 分割单词, 一眼便知

6. 属性和方法首字母小写,不要以_开头 _xxx这种习惯不要有

7. 在import的时候大括号两端留一个空格,方便阅读 import { Injectable } from '@angular/core';

8. 所有字符串全用单引号'',每一行结尾要有;, if(expression) else 即使只有一行也要加 {}

9. 坚持 从零开始,但要时刻考虑应用程序接下来要走的路。没弄明白之前就粘别人的代码是致命的。

10. 创建和导入封装,也就是把所有组件都在一个index.ts中导出合并为一个文件。

11. 模板和样式提取到单独的文件,然后在组件中引入。

12. 坚持 使用 @Input@Output, 而非 @Directive@Component 装饰器里面的 inputsoutputs 属性。

13. 成员顺序,坚持 把属性成员放到顶部,方法成员紧随其后。坚持 先放公共成员,再放私有成员,并按照字母顺序排列。

14. 坚持把逻辑放在service中,不要在component中写大量的逻辑。坚持 把组件类中的逻辑限制到只有视图需要的逻辑。所有其它逻辑都应该被放到服务。

15. 坚持 在第三方导入和自己代码的导入之间留一个空行。空行可以让阅读和定位本地导入变得更加容易。

16. 坚持 把展示逻辑放到组件类里,而非模板里。将组件的展示逻辑放到组件类而非模板里,可以增强测试性、维护性和重复使用性。

17. 坚持 在同一个注入器内,把服务当做单例使用。使用它们来共享数据和功能。服务是共享状态性内存数据的理想方法。

    export class HeroService {
       constructor(private http: Http) { }
       
       getHeroes() {
         return this.http.get('api/heroes')
           .map((response: Response) => <Hero[]>response.json().data);
       }
     }

18. 使用 @Injectable() 类装饰器 当服务只接受类型令牌相关的依赖时,比起在每个构造函数参数上使用 @Inject()@Injectable() 的语法简洁多了。

19. 分离数据调用。坚持 把数据操作和数据互动重构到服务里。坚持 让数据服务来负责 XHR 调用、本地储存、内存储存或者其他数据操作。

20. 坚持 实现生命周期钩子接口。 import OnInit from '@angular/core' export class xxx implements OnInit

四、结尾

看到这里了?我们一起来愉快的擼angular2吧。对了,在这之前你需要建立一个自己的分支。happy ending!!!
2016.7.1 01:10 小莫