十五分钟了解Node js模块系统
沉沙 2018-05-15 来源 : 阅读 639 评论 0

摘要:模块是Node.js 应用程序的基本组成部分,文件和模块是对应的。换言之,一个 js 文件就是一个模块,这个文件可能是JavaScript 代码、JSON 或者编译过的C/C++ 扩展。希望本文对大家学习Node.js 有所帮助。

模块是Node.js 应用程序的基本组成部分,文件和模块是对应的。换言之,一个  js 文件就是一个模块,这个文件可能是JavaScript 代码、JSON 或者编译过的C/C++ 扩展。

 

一个模块可理解成一个类文件,通过require引入这个类文件并实例化一个对象,类文件中只有通过exports定义的方法变量才可被实例化对象调用,正常定义的方法变量只能在类内部互相调用

并且正常定义方法变量名可与exports定义的重名,这里为避免混淆,用不同命名

 

 

以下实例中,代码 require('./hello') 引入了当前目录下的 hello.js 文件(./ 为当前目录,node.js 默认后缀为 js)

之前通过require包含调用的都是node原生模块,如require("http");

require方法接受以下几种参数的传递:

http、fs、path等,原生模块。

./mod或../mod相对路径的文件模块。

/pathtomodule/mod绝对路径的文件模块。

mod非原生模块的文件模块。

以下代码为main.js文件中内容

var hello = require('./hello');
hello.testFun1('use testFun1');
console.log(hello.testVal1);

以下代码为hello.js文件中内容

exports.testFun1 = function(setVal) {
    exports.testVal1 = setVal;
    console.log('Hello ' + exports.testVal1);
    testFun2();
    exports.testFun3();
}
function testFun2(){
    console.log('Hello ' + testVal2);
}
 
exports.testFun3 = function() {
    console.log('Hello ' + 'this is testFun3');
}
 
exports.testVal1 = 'this is testVla1';
testVal2 = 'this is testVla2';


执行main.js

node main.js

输出内容:

Hello use testFun1

Hello this is testVla2

Hello this is testFun3

use testFun1*/

 


 

有时候想把一个类对象封装到模块中,即一个模块代表一个类

模块js文件中可以写成如下格式

module.exports = function() {
    // ...
}

function testName() { //testName在这里只起到方法命名及给module.exports赋值作用,在调用页main.js中无用

    // ...
};
module.exports = testName;

 

在外部引用该模块时,给变量赋值的就是模块类本身(该类需要被实例化使用),而不是原先的直接的实例化对象。

以下代码为main.js文件中内容

var TestClassName = require('./hello');
hello = new TestClassName();
hello.setName('风吹屁股凉冰冰');
hello.getName();
console.log(hello.name1);

以下代码为hello.js文件中内容

function ClassName() {
    this.name1 = ''; //用 this. 定义的变量和方法,在类内部使用时前面也需加this.。并且可被实例化的对象调用
    var  name2;      //用 var 定义的变量或直接定义的方法,类内部使用时可直接用,前面不用加this. 但不可被类实例化对象调用。并且用 var 定义的变量和直接定义的方法可与 this. 定义的重名,这里为避免混淆,用不同命名。
    this.trueName = '';
    this.setName = function(theName) {
        this.trueName = theName;
    };
    this.getName = function() {
        this.test1();
        test2();
        console.log('Hello ' + this.name1 + ' ' + name2 + ' ' + this.trueName);
    };
    this.test1 = function(){
        this.name1 = 'test1Name';
    }
    function test2(){
        name2 = 'test2Name';
    }
};
module.exports = ClassName;


执行main.js

node main.js

输出内容:

Hello test1Name test2Name 风吹屁股凉冰冰
test1Name*/


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注WEB前端Node.js频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程