node.js中module模块的功能理解与用法实例分析_node.js

来源:脚本之家  责任编辑:小易  

node.js module初步理解 在node.js中模块与文件是一一对应的,也就是说一个node.js文件就是一个模块,文件内容可能是我们封装好的一些JavaScript方法、JSON数据、编译过的C/C++拓展等,在关于node.js的误会提到过node.js的架构www.zgxue.com防采集请勿采集本网。

本文实例讲述了node.js中module模块的功能理解与用法。分享给大家供大家参考,具体如下:

1.module.exports 是正常的路径,node给提供了 module 对象,exports 是其中的一个属性,同时exports也是一个对象。module.exports 就是去调用对象的属性 2.单独用exports你就别把它跟 module

node.js中使用CommonJS规范实现模块功能,一个单独的文件就是一个单独的模块。通过require方法实现模块间的依赖管理。

jquery是一个运行在客户端的javascript库,主要提供操作DOM等等的简化操作;node.js是运行在服务器端的一个服务器程序,运行javascript语言,是一个服务器软件,解释执行js语言。可以用js语言

通过require加载模块,是同步操作。

Module.exports才是真正的接口,exports只不过是它的一个辅助工具。最终返回给调用的是Module.exports而不是exports。所有的exports收集到的属性和方法,都赋值给了Module.exports。当然,这有个

加载流程如下:

然后在CMD里执行这个文件node mo.js,就能看到module其实是一个Module实例,你可以这么理解,NodeJS中定义了一个Module类,这个类中有很多属性和方法,exports是其中的一个属性: 1 2 3 4 5 function

1、找到需要加载的模块文件。

没有网络虽然可以安装,但是考虑到模块存在依赖,本地安装还是很麻烦的 npm install folder-of-module/可以本地安装,但是依赖还是要从网上下载的 应该想办法攻克网络设置才好

2、判断是否缓存过,如果没有,则读取模块文件的内容。

3、把读取到的内容,封装在一个函数里运行。

(function (exports, require, module, __filename, __dirname) { //模块的代码实际上在这里});

4、返回 module.exports 需要导出的内容。

exports 表示模块的导出对象

require 表示require方法

module 表示当前模块对象

__filename 表示当前文件的绝对路径

__dirname 表示当前文件夹的绝对路径

在模块的内部,this 指向的是 当前模块的导出对象

console.log(this === module.exports);console.log(this === exports);

module对象有不少属性,可以打印出来看看。

console.log(module);

module.id 表示模块的标识符。

module.exports 表示模块的导出对象。

module.parent 表示当前模块的父模块,当前模块是谁加载的。

module.filename 表示模块的绝对路径。

module.loaded 表示是否加载完成。

module.children 表示当前模块加载了哪些模块。

module.paths 表示模块的搜索路径,路径的多少取决于目录的深度。

node.js通过require方法加载文件是同步的,为了提高效率,会缓存已经加载过的文件。

console.log(require.cache);

缓存的key是模块的绝对路径,value是module对象。

require.resolve获取模块的绝对路径,但并不会加载模块。

console.log(require.resolve('./01.js'));

require.main获取入口模块

console.log(require.main);

require.extensions获取模块支持的扩展名

node.js中模块文件分三种:

1、.js模块

2、.json文件模块

3、.node C++扩展二进制模块

console.log(require.extensions);

node.js通过require加载文件时,比如 require('./user') 会先找 user 文件,然后没找到,再找 user.js,再找 user.json,再找 user.node。

node.js的模块分类:

1、核心模块,编译二进制,加载速度最快,像 fs,http,events等。

2、文件模块,保存在硬盘上,加载速度比较慢,通过名称或路径来加载。

3、第三方模块,只指定名称则从node_modules目录下加载,查询的路径包括module.paths和全局目录。

全局目录:

windows中:环境变量NODE_PATH指定的路径。

linux中:$HOME/.node_modules和$HOME/.node_libraries目录

文件模块查找的规则,比如 require('./user') :

1、判断加载的文件是否以绝对路径加载的。

2、如果是绝对路径,则直接加载绝对路径的文件。

3、如果不是,判断文件有没有以 './' ,'../' 开头,如果有则找到该相对路径,如果没有则通过modules.paths和全局目录获取路径。

4、尝试在第3步中的路径下查找 user 文件。

5、如果没有找到,则尝试加扩展名( user.js,user.json,user.node)进行查找。

6、如果还没有,尝试根据包进行查找,user 目录下,包文件描述 package.json 中 main 配置的文件进行加载。

7、如果没有 package.json,则查找 user 目录下, index.js 和 index.node。

8、如果还没有,则找下一个modules.paths。

9、最后还是没有找到,则文件加载失败。

希望本文所述对大家node.js程序设计有所帮助。

node.js中module.export与export的区别。可能是有史以来最简单通俗易懂的有关Module.exports和exports区别的文章了。exports=module.exports={}所以module.exports和exports的区别就是var a={};var b=a;a和b的区别看起来木有什么太大区别,但实际用起来的时候却又有区别,这是为啥呢,请听我细细道来关于Module.exports和exports有什么区别,网上一搜一大把,但是说的都太复杂了…听说exports是Module.exports对象的一个引用(reference)^1,什么是引用?(:з」)_当然啦,如果要彻底理解这两个导出的区别,最好肯定是去看源码,看看都是怎么封装的,功力深厚的童鞋应该一看就懂了。不过,源码我也是看不懂的…(?_?)但是最近感觉杂七杂八看了好多文章做了好多实验之后,像是打开了任督二脉,机智的我好像有点上道了…首先要明确的一点,module是一个对象 {Object}。当你新建一个文件,比如mo.js,文件内容如下:1 console.log(module)然后在CMD里执行这个文件node mo.js,就能看到module其实是一个Module实例,你可以这么理解,NodeJS中定义了一个Module类,这个类中有很多属性和方法,exports是其中的一个属性:12345 function Module { id:'blabla',exports:{},blabla.}当每个js文件在执行或被require的时候,NodeJS其实创建了一个新的实例var module=new Module(),这个实例名叫module。这也就是为什么你并没有定义module这个变量,却能console.log出来而不会报错的原因。假设我有一个JS文件内容如下:有了上面的基础,很容易理解module.export其实是给Module实例中的exports对象中添加方法/属性。通常使用exports的时候,是这么用的:假设我有一个JS文件内容如下:由此也能看出,传说中的exports其实是module.exports的引用,你可以这么理解,NodeJS在你的代码之前悄悄的加了以下代码:这也就是为什么你并没有定义exports这个变量,却能console.log出来而不会报错的原因。当你从外部调用某个模块,require其实是在require什么?2require的时候NodeJS会到处去找有没有这个模块,如果有,return的就是module.exports里的东东内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • node.js学习教程之module模块
  • vue中node_modules中第三方模块的修改使用详解
  • 深入理解node module模块
  • nodejs中exports与module.exports的区别详细介绍
  • node.js中module.exports与exports用法上的区别
  • nodejs学习笔记之module的简介
  • 深入理解node exports和module.exports区别
  • node中modules.exports与exports导出的区别
  • 详解node.js中exports和module.exports的区别
  • node.js 中exports 和 module.exports 的区别
  • 浅谈node中的exports与module.exports的关系
  • 深入理解nodejs搭建静态服务器(实现命令行)
  • expressjs入门实例
  • node.js eventemmitter事件监听器用法实例分析
  • node中使用log4js4.x版本记录日志的方法
  • nodejs实现文件上传的示例代码
  • nodejs 中模拟实现 emmiter 自定义事件
  • nodejs acl的用户权限管理详解
  • node.js npm命令运行node.js脚本的方法
  • 轻松创建nodejs服务器(7):阻塞操作的实现
  • 基于socket.io和node.js搭建即时通信系统
  • node.js的module.export 和 export方法的区别
  • 如何离线安装node.js的module
  • 详解Node.js中exports和module.exports的区别
  • node.js 怎么引入module
  • 深入理解node.js的module.export 和 export方法的区别
  • 深入理解node.js的module.export 和 export方法的区别
  • 深入理解node.js的module.export 和 export方法的区别
  • node.js的module.export 和 export方法的区别
  • 如何离线安装node.js的module
  • node.js的module.export 和 export方法的区别
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全基础知识javascript类库表单特效广告代码网页特效黑客性质javascript技巧domnode.jsjs其它首页javascriptnode.jsnode.js学习教程之module模块vue中node_modules中第三方模块的修改使用详解深入理解node module模块nodejs中exports与module.exports的区别详细介绍node.js中module.exports与exports用法上的区别nodejs学习笔记之module的简介深入理解node exports和module.exports区别node中modules.exports与exports导出的区别详解node.js中exports和module.exports的区别node.js 中exports 和 module.exports 的区别浅谈node中的exports与module.exports的关系深入理解nodejs搭建静态服务器(实现命令行)expressjs入门实例node.js eventemmitter事件监听器用法实例分析node中使用log4js4.x版本记录日志的方法nodejs实现文件上传的示例代码nodejs 中模拟实现 emmiter 自定义事件nodejs acl的用户权限管理详解node.js npm命令运行node.js脚本的方法轻松创建nodejs服务器(7):阻塞操作的实现一行命令搞定node.js 版本升级卸载安装node.js与npm过程详解node.js(安装,启动,测试)yarn的安装与使用详细介绍node.js+ajax实现获取http服务器nodejs中调用系统命令、shell脚本nodejs npm install全局安装和本nodejs基本语法和类型nodejs学习笔记之fs文件模块nodejs文件操作模块fs(file sys利用node.js制作命令行工具方法教程(一)使用nodejs中的fs模块对文件及目录进行读使用node打造自己的命令行工具方法教程详解nodejs的timers模块nodejs基于lru算法实现的缓存处理操作示例node.js中的require使用详解node配合websocket做多文件下载以及进度回express使用html模板的详细代码利用node.js+mongodb如何搭建一个简单登录详解nodejs框架express的路径映射(路由)
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved