nodejs中文件的组织方式采用模块的方式来组织文件,遵循Common.js规范,
简单介绍下Commin.js规范:
- 根据这个规范,每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。
- CommonJS规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。
- 详细解释请参考:http://javascript.ruanyifeng.com/nodejs/module.html
nodejs中模块分为,核心模块(启动时已经预先加载进来了),文件模块(require进来的),第三方模块(npm引入的模块);
接下来创建一个模块并且运行一下,流程如下
上代码:
在schooll文件夹中存在四个文件,分别是,student.js,teacher.js,kclass.js,index.js index.js是入口文件
/*stusent.js*/
function add(student){
console.log('add student:' + student)
}
exports.add = add
/*techer.js*/
function add(teacher){
console.log('add teacher:' + teacher)
}
exports.add = add
/*kclass.js*/
var student = require('./student.js')
//require返回一个模块对象,就是一个exports对象
var teacher = require('./teacher')
teacher.add('Scott')
function add (teacherName,students){
teacher.add(teacherName);
students.forEach(function(item,index){
student.add(item)
})
}
exports.add = add
//传统模块实例
// module.exports = add
//真实存在的东西,exports是辅助方法
//特殊模块类型
//CommonJS规范规定,每个模块内部,module变量代表当前模块。
//这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。
/*index.js*/
var kclass = require('./kclass')
kclass.add('Scott',['白富美','高富帅'])
运行方式