Node.js_模块_作用域与暴露(2)

//day21.js
require("./test.js");
console.log("我是01.js,我认识a么"+a);
//day2	est.js
var a=100;
console.log("我是test.js文件,我认识a,值是"+a);
在Node.js中,每个js文件都是单独的作用域。
//day21.js
var test=require("./test.js");
console.log("我是01.js,我认识a么"+test.a);
//day2	est.js
var a=100;
//暴露语法
exports.a=a;
console.log("我是test.js文件,我认识a,值是"+a);
//day21.js
var test=require("./test.js");
console.log("我是01.js,我认识a么"+test.a);
console.log("我是01.js,我认识a么"+test.b);
console.log("我是01.js,我认识a么"+test.c);
var result=test.zonghe();
console.log("总和是"+result);
//day2	est.js
var a=100;
var b=200;
var c=300;
exports.a=a;
exports.b=b;
exports.c=c;
exports.zonghe=function(){
          
   
    return a+b+c;
}
console.log("我是test.js文件,我认识a,值是"+a);
//day21.js
var test=require("./test.js");
console.log("我是01.js,我认识a么"+test.a);
console.log("我是01.js,我认识a么"+test.b);
console.log("我是01.js,我认识a么"+test.c);
var result=test.zonghe();
console.log("总和是"+result);
//day2	est.js
var a=100;
var b=200;
var c=300;
exports.a=a;
exports.b=b;
exports.c=c;

function zonghe(){
          
   
    return a+b+c;
}
exports.zonghe=zonghe;
js文件天生是隔离作用域的。 使用exports.xx=xx的语法暴露。
//day2day2math-tool.js
//计算传进来实参的总和
//day2day2math-tool.js
//计算传进来实参的总和
function sum(){
          
   
    //计算和
    var total=0;
    for(var i=0;i<arguments.length;i++){
          
   
        total+=arguments[i];
    }
    return total;
}
//求平均数
function average(){
          
   
    var _sum=sum.apply(null,arguments);
    return _sum/arguments.length;
}
function pingfang(a){
          
   
    return a*a;
}
//求最大值
function maxSum(){
          
   
    return Math.max.apply(null,arguments);
}
//暴露
exports.sum=sum;
exports.average=average;
exports.pingfang=pingfang;
exports.maxSum=maxSum;
//day21.js
var mt=require("./math-tool.js");
//计算和
console.log(mt.sum(1,2,3));
//计算平均数
console.log(mt.average(1,2,3));
//计算平方
console.log(mt.pingfang(4));
//求最大值
console.log(mt.maxSum(2,3,3,4));
    使用module.exports暴露
//day2People.js
function People(name,sex,age){
          
   
    this.name=name;
    this.sex=sex;
    this.age=age;

}
People.prototype.sayHello=function(){
          
   
    console.log("my name is "+this.name+" my age is "+this.age);
}
//module.exports 用来暴露构造函数。
module.exports=People;
//day022.js
var People=require("./People.js");
var xiaoming=new People("小明","男",12);
xiaoming.sayHello();
module.exports 通常用来暴露构造函数,module.exports通常只暴露一个参数。
    Node.js模块_关于node_modules文件夹
当require()语句中没有指明特定的文件夹时,默认引用node_modules文件夹中的同名文件。 例如 require("test.js") 没有写 ./test.js 就表示此时引用的事node_modules文件夹中的东西。 node_modules文件夹里面的模块,在引用的时候不需要考虑路径。你只需要确保node_modules文件夹需要引用模块的js文件里路径的任何祖先路径中。 require("test"); 实际上引入的是node_modules文件夹中的test文件夹中的index.js文件。 require("./a.js"); 引入的是当前文件夹中的a.js文件。 require("a.js"); 引入的是node_modules文件夹中的a.js文件 require("./a"); 引入的是当前文件夹中的index.js
经验分享 程序员 微信小程序 职场和发展