前端规范之nodeJs 规范

栏目: Node.js · 发布时间: 5年前

内容简介:局部变量一定要声明,避免全局污染使用 string 时,用单引号替代双引号(写 JSON 时除外)不推荐:

局部变量一定要声明,避免全局污染

  • 推荐使用 let 全面代替 var ,因为它创建了块级作用域变量(变量只在代码块内生效),尤其是 for 循环
  • 建议自由在逻辑上是常量的情况才使用 const ,它代表常量,定的同时必须赋值

单引号

使用 string 时,用单引号替代双引号(写 JSON 时除外)

推荐:

var foo = 'bar';

var http = require('http');
复制代码

不推荐:

var foo = 'bar';

var http = require('http');
复制代码

命名规范

  • 变量命名采用小驼峰命名,如:addUser password studentID

  • 常量命名采用单词所有字母大写,并用下划线分隔,如:FORM_NAME

  • 对于对象、函数、和实例采用小驼峰(camelCase)命名法

    // 对象
    let isObject = {};
    // 函数
    function isFun(){
     ...
    };
    // 实例
    let myBbj = new Object();
    复制代码
  • 对于类命名或者构造函数,采用大驼峰命名 User() DateBase()

    // 类
    class Point {
      ...
    };
    
    // 构造函数
    function User(options) {
      this.name = options.name;
    }
    
    let myBbj = new User({
      name: 'yup'
    });
    复制代码

赋值提升

在变量作用范围的最顶端声明变量

全等

比较操作时必须使用全等符号,'==='和'!=='

类型转换

  • 在声明语句的最前端执行强制类型转换

    // -> string:
    var totalScore = '' + this.reviewScore;
    复制代码
  • 使用 parseInt 来进行整数的类型转换,并且始终提供一个基数.

    var inputValue = '4';
    var val = parseInt(inputValue, 10);
    复制代码

使用字面表达式

{} , [] 代替 new Arraynew Object

Requires

  • 建议使用以下顺序来组织 node 代码中的 require 代码

    1.core modules

    2.npm modules

    3.others

    var http = require('http');
    var fs = require('fs');
    var async = require('async');
    var mongoose = require('mongoose');
    var Car = require('./models/Car');
    复制代码
  • 引入模块时,不要加 .js 后缀

    var Batmobil = require('./models/Car');
    复制代码

避免魔鬼数字的出现

魔鬼数字主要指在代码中没有具体含义的数字、字符串。影响了代码可读性,读者看到的数字无法理解其含义,从而难以理解程序的意图。当程序中出现的魔鬼数字过多时,代码的可维护性将会急剧下降,代码变得难以修改,并容易引入错误。

要求将魔鬼数字定义为常量,并增加注释

// 接口成功返回的标识
const SUCCESS_CODE = 1;
// 接口失败返回的标识
const FAIL_CODE = 0;
$.ajax({
  url: baseUrl + 'v1/activity/getAct',
  cache: false,
  type: 'GET',
  dataType: 'json',
  success: function(result) {
    if (result.ret === SUCCESS_CODE) {
      ...
    }else if(result.ret === FAIL_CODE){
      ...
    }
  }
});
复制代码

函数设计

  • 从意义上应该是一个独立的功能模块

  • 函数名要在一定程度上反映函数的功能

  • 函数名要在一定程度上反映函数的功能

  • 当函数参数不应该在函数体内部被修改时,应加上 const 声明

  • 避免函数有过多的参数,参数个数尽量控制在 4 个以内

  • 一个函数只做一件事,就要尽量保证抽象层级的一致性,所有语句尽量在一个粒度上。若在一个函数中处理多件事,不利于代码的重用

回调函数

在回调函数中要始终检测错误,并返回错误

function getAnimals(done) {
  Animal.get(function(err, animals) {
    if (err) {
      // 返回错误
      return done(err);
    }
    // 建议回调函数中使用描述性的参数
    return done(null, {
      dogs: animals.dogs,
      cats: animals.cats
    });
  });
}
复制代码

Try catch

在同步调用中多使用 Try catch 去捕获错误,如:JSON.parse()应该使用 try-catch 语句块

var data;
try {
  data = JSON.parse(jsonAsAString);
} catch (e) {
  //handle error - hopefully not with a console.log ;)
  console.log(e);
}
复制代码

构造函数

  • 在原型链上增加属性,而不是覆写原型链

    推荐:

    function Jedi() {
      console.log('new jedi');
    }
    
    Jedi.prototype.fight = function fight() {
      console.log('fighting');
    };
    
    Jedi.prototype.block = function block() {
      console.log('blocking');
    };
    复制代码

    不推荐:

    function Jedi() {
      console.log('new jedi');
    }
    
    Jedi.prototype = {
      fight: function fight() {
        console.log('fighting');
      },
    
      block: function block() {
        console.log('blocking');
      }
    };
    复制代码
  • 使用 class 关键字,并使用 extends 关键字来继承

    class Queue {
      constructor(contents = []) {
        this._queue = [...contents];
      }
      pop() {
        const value = this._queue[0];
        this._queue.splice(0, 1);
        return value;
      }
    }
    
    class PeekableQueue extends Queue {
      peek() {
        return this._queue[0];
      }
    }
    复制代码
  • 在方法中返回 this 以方便链式调用

    推荐:

    class Jedi {
      jump() {
        this.jumping = true;
        return this;
      }
      setHeight(height) {
        this.height = height;
        return this;
      }
    }
    const luke = new Jedi();
    luke.jump()
      .setHeight(20);
    复制代码

    不推荐:

    Jedi.prototype.jump = function() {
      this.jumping = true;
      return true;
    };
    Jedi.prototype.setHeight = function(height) {
      this.height = height;
    };
    const luke = new Jedi();
    luke.jump(); // => true
    luke.setHeight(20); // => undefined
    复制代码

箭头函数

  • 当你必须使用函数表达式(或传递一个匿名函数时),使用箭头函数符号(能够自动绑定 this 到父对象)

    推荐:

    [1, 2, 3].map((x) => {
      return x * x
    });
    复制代码

    不推荐:

    [1, 2, 3].map(function(x) {
      return x * x;
    });
    复制代码
  • 总是用括号包裹参数,即便只有一个参数

    推荐:

    let foo = (x) => x + 1;
    复制代码

    不推荐:

    let foo = x => x + 1;
    复制代码
  • 对于对象、类中的方法,使用增强的对象字面量

    推荐:

    let foo = {
      bar () {
        // code
      }
    }
    复制代码

    不推荐:

    let foo = {
      bar: () => {
        // code
      }
    };
    
    let foo = {
      bar: function() {
        // code
      }
    };
    复制代码

以上所述就是小编给大家介绍的《前端规范之nodeJs 规范》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

史玉柱自述

史玉柱自述

优米网 / 同心出版社 / 2013-6-1 / 42.00元

史玉柱迄今为止唯一公开著作。 亲口讲述24年创业历程与营销心得。 中国商业思想史里程碑之作! 24年跌宕起伏,功成身退,史玉柱向您娓娓道来,历经时间沉淀的商业智慧和人生感悟。 在书中,史玉柱毫无保留地回顾了创业以来的经历和各阶段的思考。全书没有深奥的理论,铅华洗尽、朴实无华,往往在轻描淡写之间,一语道破营销的本质。 关于产品开发、营销传播、广告投放、团队管理、创业投资......一起来看看 《史玉柱自述》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具