node-load module
javscript :脚本建共享全局名称空间(全局污染)。
node:实现CommonJS(公共)模块标准。
Node加载模块,有两种方式:
1.通过名称
除非是核心模块,否则被引用的模块最后都会映射为一个文件路径。
2.通过路径
Node导入模块:
无论是第三方或者npm官方,都可以使用以下require来导入模块
var module = require ('module_name');
导入模块后,该对象表示模块对外暴露的JavaScript API。
根据模块不同,该对象是任意的JavaScript值。
可以是一个函数,也可以是一个具有若干数学的对象。
属性可能是函数、数组或其他任何类型的JavaScript对象。
Node导出模块:
CommonJs模块系统是文件之间共享对象或函数的唯一方式。
对于比较复杂的应用程序,你应该分类、对象、函数他们的重用性并且划分好----只暴露你指定的内容。
文件和模块是一个个对应的
function Circle(x, y, z) { function r_squared() { return Math.pow(r, 2); } function area() { return Math.PI * r_squared() } return { area: area }; }
下面举例它们之间的关系
//Module2.js
//来自第三方或者npm官方
function printA() { conosole.log('A'); } function printB() { conosole.log('B'); } function printC() { conosole.log('C'); } module.exports.printA = printA; module.exports.printB = printB; module.exports.printC = printC; module.exports.pi = Math.PI;
如何使用加载模块呢? 下面给出方法
var myModule = require('./myModoule2'); //省略js或不省略皆可,导入(加载)的时候。
var myModule = require('./myModule2.js'); myModule2.printA();
导入模块时的myModule2.printA -> A ,是不是又想起了Vue和Angular呢?
模块分为:核心模块(node自带)、npm官方模块、本地(自制)模块。
核心模块加载优先所有模块! 核心模块只能通过模块名引用,而不能通过文件路径。
下面介绍一下http核心模块
var http = require('http');
上述code会返回http模块对象,由它实现的Node API文档描述中的HTTP API。
加载文件夹模块
var myMoudle = require('./myModuleDir');
首先会查找myModuleDir.js,然后会查找整个(myModuleDir)文件夹,并尝试查找包(package.j
son)
其默认值为index.js(除此之外还会查找index.node)。
如果文件夹存在package.json,那么Node将会尝试解析文件并查找到main属性,将main属性当做入口点的相对路径。
//package.json
{ "name": "myModule", "main": "./lib/myModule.js" }
Node就会根据路径 ./myModuleDir/lib/myModule.js加载文件。
从node_module文件夹加载
一个模块既不是相对路径也不是核心模块,那么就会Node就会尝试在当前目录下的node_modules文件夹查找该模块。
如果没有找到该模块就会一直找下去,直到根目录(上至附文件夹,下至子目录)。
本地目录node_modules是NPM默认模块安装的位置。
NPM命令会帮你管理好你的node_modules目录。
缓存模块
模块首次加载会缓存,你要记号,缓存好处和坏处。
相关文章
- Module build failed (from ./node_modules/_babel-loader@8.0.5@babel-loader/lib/index.js)
- 解决Error: Cannot find module 'node-sass'问题
- Module Error (from ./node_modules/eslint-loader/index.js):解决办法
- node.js module初步理解
- node-gpy 使用lib和dll
- [Node.js] Using npm link to use node modules that are "in progress"
- [Node.js]33. Level 7: Persisting Questions
- node-canvas遇到NODE_MODULE_VERSION不一致的问题
- [Node.js] Add node.js command line to global
- [Node.js] Handle Relative Paths in a Node.js ESM Project with import.meta.url
- [Node.js] Resolve path problem in all envs (require.resolve)
- [Node.js] node-persist: localStorage on the server
- [Node.js]23. Level 4: Semantic versioning
- yum安装k8s集群(单master两个node、阿里云镜像源)
- TypeScript 里的 module 解析过程 - Module Resolution
- Atitit 前端测试最简化内嵌web服务器 php 与node.js 目录 1.1. php内置Web Server1 1.2. Node的2 Node的比较麻烦些。。Php更加简单
- 使用node https module创建服务器遇到的mac verify failure错误消息
- 穆客带你快速定位Node.js内存泄露
- Node.js: node-redis.js客户端
- Node.js的安装
- Node.js学习笔记(三)——Node.js开发Web后台服务
- Node.js(二)node 核心模块 fs、HTTP模块、express框架
- Node.js http模块