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

缓存模块

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

node-load module的更多相关文章

  1. 关于报malformed or corrupted AST file: 'Unable to load module 的错~

    今天早上 一运行程序 居然报错,我都惊呆了,昨天明明好好的-但是百度是强大的- 报错内容: malformed or corrupted AST file: 'Unable to load modul ...

  2. iOS 使用XCode6打开项目以后再用XCode5出现的问题fatal error: malformed or corrupted AST file: 'Unable to load module

    使用不同版本的XCode出现的问题: fatal error: malformed or corrupted AST file: 'Unable to load module "/Users ...

  3. fatal error: malformed or corrupted AST file: 'Unable to load module "/Users/apple/Library/Developer

    在同一时候安装使用Xcode5, Xcode6之后, 常常遇到这个问题. fatal error: malformed or corrupted AST file: 'Unable to load m ...

  4. arch Failed to load module "intel"

    arch启动x的时候出现问题困扰我一天了,终于解决掉了. 错误如下: [ 61.086] (II) LoadModule: "intel" [ 61.087] (WW) Warni ...

  5. Gentoo:Xorg:Failed to load module "……" 问题

    错误描述: 安装完xorg-server后,startx启动桌面环境,出现缺少模块错误. Xorg:Failed to load module "--" 查看log: cat /v ...

  6. 如何發佈一個完整Node.js Module

    本文會透過以下幾個段落,讓各位一步一步學習如何寫一個自已的Node.js Module並且發佈到npm package上 Node.js Module 結構 我們先建立一個 NodeModuleDem ...

  7. Swift 之cannot load module 'main' as 'Swift'

    如果建立一个Project, 选Command Line程序,语言选Swift, 完成之后会有一个main.swift文件.这个文件用来练算法最好了,因为playground会有各种限制而且bug多多 ...

  8. (转)Node.js module.exports与exports

    本文转自Node.js module.exports与exports 作者: chemdemo 折腾Node.js有些日子了,下面将陆陆续续记录下使用Node.js的一些细节. 熟悉Node.js的童 ...

  9. (转)使用XCode6打开项目以后再用XCode5出现的问题fatal error: malformed or corrupted AST file: 'Unable to load module

    使用不同版本的XCode出现的问题: fatal error: malformed or corrupted AST file: 'Unable to load module "/Users ...

  10. 创建并发布node.js module

      创建node.js module. 创建一个文件夹,用来存放module. Cd到新创建的文件夹,运行npm init,会提示输入package的信息. 可以按照这个视频的来输入.Test com ...

随机推荐

  1. 飞思卡尔开发板-迅为IMX6开兼容单核 双核 四核Plus开发板

    飞思卡尔开发硬件接口介绍: 核心板参数 尺寸:51mm*61mm CPU:Freescale Cortex-A9 四核 i.MX6Q,主频 1.2 GHz 内存:2GB DDR3 存储:16GB EM ...

  2. 阿里云服务器基本搭建_错误1_Permission denied (publickey)

    首先 修改这两个密码 然后重启服务器就可以了

  3. STL中unique的使用

    作用 unique函数可以删除有序数组中的重复元素,即去重(并不是真正的删除,后面会讲) 定义在头文件<algorithm>中 函数原型 1.只有两个参数,且参数类型都是迭代器: iter ...

  4. ALTER DATABASE 修改一个数据库

    SYNOPSIS ALTER DATABASE name SET parameter { TO | = } { value | DEFAULT } ALTER DATABASE name RESET ...

  5. C# 實現文件壓縮-- 背景:服務器Log.txt 過多,佔用過多硬盤空間,壓縮備份后節省空間資源

    1.壓縮實現代碼如下: 調用ICSharpCode.SharpZipLib.dll(free software,可以搜到源碼). 轉移指定目錄文件夾轉移到目標文件夾 壓縮目標文件夾 刪除目標文件夾 u ...

  6. IDEA打war包部署本地TOMCAT测试

    在Eclipse中打war包很方便,导出即可直接选择war包,如下图所示: 但是在IDEA中有点麻烦,网上很多教程,做的也都很好,我自己也做一份,加深一下印象. 首先打开File->Projec ...

  7. [Python3网络爬虫开发实战] 1.2.2-Selenium的安装

    Selenium是一个自动化测试工具,利用它我们可以驱动浏览器执行特定的动作,如点击.下拉等操作.对于一些JavaScript渲染的页面来说,这种抓取方式非常有效.下面我们来看看Selenium的安装 ...

  8. mysql查询排名

    student_work表 student_info表 sql语句:按grade从高到低排名 结果:

  9. 转载,Django组件

    知识预览 一 Django的form组件 二 Django的model form组件 三 Django的缓存机制 四 Django的信号 五 Django的序列化 回到顶部 一 Django的form ...

  10. 洛谷 1850 NOIP2016提高组 换教室

    [题解] 先用floyed处理出两点间的最短路. 设f[i][j][k]表示走到第i个教室,总共换了j次,当前换或者不换,期望的最小移动距离. 分情况讨论来转移即可. #include<cstd ...