一:目录结构
.
--config:项目配置文件目录,如redis中的key、第三方接口需要的常量等
--controller:控制器,请求处理模块文件目录,若业务复杂可以在此目录下按子业务建文件夹,否则以单文件形式存放即可
--doc:项目文档目录
--lib:没有模块化的文件目录
----openApi:第三方接口目录
--test:项目测试文件目录,若业务复杂可以在此目录下按子业务建文件夹,否则以单文件形式存放即可
--util:项目公共组件目录,如对redis的操作可以封装为redis_util.js放置在此目录下
--model:数据组件目录,对应数据库操作,若系统包含多个数据库或业务复杂可以在此目录下按数据库、子业务建文件夹,否则以单文件形式存放即可
--app.js:项目启动文件
--package.json:项目包文件
--route.js:路由文件
--task.js:定时任务文件,如果需要的话
对于自定义的文件夹名称尽量采用单个词语标识,必须多个词语标识的使用小驼峰形式,如openApi
二:命名规范
1、文件名采用下划线分割单词形式,不允许使用大写字母,如child_process.js、diary.js,特殊的对于model目录下的文件,尽量保证一个文件对应一张数据表,文件名与表名相同或做一定调整
2、变量名采用小驼峰形式,如var studentScore = {};
3、方法名采用小驼峰形式,尽量采用动词或判断性词汇,如:
var getUser = function (id) {
};
var isAdmin = function (userId) {
};
4、类命名采用大驼峰形式,即所有单词的首字母都需要大写,如:
function User () {
}
function SystemAudit () {
}
5、常量单词所有字母大写,使用下划线分割,如
var QUESTION_RECOMMEND = 'question_recommend';
三:代码规范
1、使用tab缩进
2、永远使用var声明变量,并且每行声明都应该使用一个var声明,如使用:
var redis = require('redis');
var Q = require('q');
而不是
var redis = require('redis')
,Q = require('q');
3、操作符、小括号(方法调用的除外)前后需要添加空格,如:
var str = 'Hello' + ' World';
if (true) {
console.log('Hello world');
}
4、大括号不另起一行,如使用:
if (true) {
console.log('Hello world');
}
而不是
if (true)
{
console.log('Hello world');
}
5、给每个表达式结果加上分号
6、逗号不能出现在行首
7、数组及对象采用一行显示或多行显示,如:
var arr = ['a', 'b'];
var arr = [
'a',
'b'
];
var obj = {name: 'zombie', age: 24};
var obj = {
name: 'zombie',
age: 24
};
以下形式不利于阅读:
var arr = ['a',
'b'
];
var obj = {name: 'zombie',
age: 24
};
8、使用字符串时尽量使用单引号,如:
var name = 'zombie';
9、尽量使用{}、[]代替new Object()、new Array()
四:注解规范
1、单行注解
//this is a comment
2、多行注解
/**
*
* */
五、数据库相关
1、sql关键字使用大写形式,如SELECT id, name FROM user WHERE id = ?而不是select id, name from user where id = ?;
2、查询字段需要指明,不允许使用*代替
六、日志相关
1、提交到svn的代码需要去除不必要的console.log()日志
