Node.js系列--模块

网上有很多关于Node.js模块机制的文章,说了在Node.js中是如何加载模块的,这是一个模块载入的策略问题。今天主要讲解一下Node.js中模块的使用,讲解为何可以将一个模块引入到项目中,或者是任意的文件中。

说道模块,其实前端也有,就是使用<script>标签将外部的javascript文件引入,然后可以使用所引入的javascript文件中所定义的变量,对象,函数等等,同样的,在Node.js中模块,其实就是这一个个相互独立,又可以组织在一起的javascript文件,但是每个文件都有自己的组织。

举个例子,自己任意写一个文件test.js

#testModule.js


这样我恩就写完了一个自定义的模块,下面我们对这个模块进行测试:

#test1.js


运行一下代码:

看了上面的这个小demo,你大概猜到我要讲什么了,我要讲的是:

所谓的模块其实不是很神秘,很特别的东西,它就是javascript文件,就跟你使用<script>引入外部的javascript一样,只是为了更好的管理代码,更好的扩展,更好的复用代码。

这样讲是不是就感觉模块这个东西不是很难理解了??

查看Node.js的API,或者查看Node.js的源代码,你会发现有一个类 叫 module,module类下面还有一个成员叫 exports,也是一个对象。


在我们自己写的模块里我们使用的是:

exports.say= say;

这是简写,完整的写法如下所示:

module.exports.say = say;

这句话是什么意思呢??就是将say函数赋值给变量say,并将这个变量保存在对象exports中。作为其成员。


在要引入模块的文件中,我们使用的是require()函数。

这样就打通了加载testModule模块的通道。我们可以访问testModule的方法和属性了。

在这里要重点将的问题:那就是把谁暴露在外面。我们自己写的模块中,我们把say函数暴露在外面,引入了文件testModule后就可以调用它里面定义了函数了

其实接口暴露的方式很多的,或者直接执行代码。只要我们理解了这个原理就可以在查看模块源代码后知道其用法。


还是要强调一下,那就是模块其实就是javascript的文件,引入模块,可以理解成把模块中的代码全部拷到当前的javascript文件里。这样使用API或者理解其结构也比较简单了。

举个例子:

很多人在群里问express框架的启动方式,有的是node app.js/有时候变成了 node ./bin/www,其实这没有什么差别的,只是把app当成一个模块,然后在bin目录下的www文件中引入这个模块,我上面讲的话来理解的话就是把app.js里面的代码全部拷贝到www文件里面,然后使用node ./bin/www来运行代码跟node app.js不是一样的嘛,并没有规定必须要使用app.js,那我们上面不是也用node test1.js 了嘛。

理解了这个东西后,想软件设计里面的MVC架构或者什么的,统统都可以按照自己要的来,甚至你也可以自己搭建类似express的项目结构,把需要独立的出来的代码独立出来放在想要放的文件夹里面,文件之间使用require来链接就可以了,剩下的都是javascript面向对象等知识,可以创建控制类,不同的控制类有不同的成员方法什么的。随便你想怎么搞都行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值