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目录。

缓存模块

模块首次加载会缓存,你要记号,缓存好处和坏处。

最新文章

  1. DOM0级事件处理和DOM2级事件处理
  2. XE3随笔11:Merge、Clone、ForcePath
  3. Node.js建站笔记-使用react和react-router取代Backbone
  4. java 基本数据类型
  5. Intent.ACTION广播大全
  6. ANDROID_MARS学习笔记_S01_006ImageView
  7. 我的Hibernate入门
  8. JavaScript_变量的自动转换和语句
  9. 解决办法:CMake编译时出现“error in configuration process project files may be invalid”
  10. 【百度地图API】如何用圆形搜索获取中心点周围100米内全部关键点?如天安门附近所有的餐厅、加油站、宾馆、大厦等
  11. HDU 4612 Warm up(双连通分量缩点+求树的直径)
  12. 解决Ubuntu系统中文乱码显示问题,终端打开文件及查看目录
  13. WebApi用户登录验证及服务器端用户状态存取
  14. SQL SUM() 函数
  15. Python_练习题_49
  16. 6.18_web服务器内容
  17. Visual Studio 2012 Update 1 离线升级包(相当于VS2012 SP1离线补丁包)
  18. C++ namespace的用法
  19. 转 web前端性能分析--实践篇
  20. shell 中各种符号的含义

热门文章

  1. Java多线程编程核心技术---Lock的基本概念和使用
  2. PHP常量和数据类型考察点
  3. 泛型术语:占位类型placeholder
  4. java_String类的功能
  5. pycharm acejumpchar插件
  6. BZOJ4873 LuoguP3749 寿司餐厅
  7. tcpdump用于抓取tcp数据包
  8. python爬虫入门01:教你在 Chrome 浏览器轻松抓包
  9. Python 字典(2)
  10. 集训第六周 数学概念与方法 数论 线性方程 I题