CommonJs 和 Nodejs 中自定义模块 (3)

一、 什么是 CommonJs?

  CommonJS 规范的提出,主要是为了弥补当前 JavaScript 没有标准的缺陷。 它的终
极目标就是: 提供一个类似 Python, Ruby 和 Java 语言的标准库 .
  CommonJS 就是模块化的标准, nodejs 就是 CommonJS(模块化) 的实现。

二 Nodejs中的模块化

1 核心模块[http模块, url模块 , Fs模块]

2 文件模块[用户形式]

三 自定义模块

第一步:

我们可以把公共的功能抽离成一个单独的js文件作为一个模块,默认情况下面这个模块里面的方法或者属性,外面是没法访问的。如果要让外部可以访问模块里面的方法或者属性,就必须在模块里面通过exports或者module.exports暴露属性或者方法。

第二步

在需要使用这些模块的文件中,通过require的方式引入这个模块,这个时候就可以使用模块里面暴露的属性和方法

3.1 自定义包的演变

`config.js`文件代码

/*
这个config文件就是config配置文件模块
 */
var str = ‘ this is config‘;

exports.str =str;/* 暴露模块方法一 */
// module.exports=str;

`common01.js`文件代码

/*
与config文件一起使用
 */
let http = require(‘http‘);
let config =require(‘./config.js‘); //输入模块的路径

let app =http.createServer(function (req, res) {
    res.writeHead(200,{"Content-Type":"text/html;charset=utf8"});
    res.write(‘您好!nodejs‘);
    console.log(config);
    /*
    未暴露数据,显示结果:{}
    暴露结果,显示结果:{ str: ‘ this is config‘ }
    */
    res.end();
});
app.listen(8002,"127.0.0.1");

结果显示

暴露对象

`tools.js`文件代码

//tools对象
var tools ={
    add:function (x, y) {
        return x+y;
    },
    sayHello:function () {
        return ‘你好,nodejs!‘
    }
};

// 暴露模块
// exports.tools =tools;
module.exports=tools;

`commonjs02.js`文件代码

/*
与tools文件一起使用
 */
/* 总结exports暴露于module暴露的区别*/
var tools = require(‘./tools‘); /* 省略.js也可以*/
console.log(tools); //{ tools: { add: [Function: add], sayHello: [Function: sayHello] } }
console.log(tools.add(1,2));

总结exports暴露于module暴露的区别

1 使用exports, console.log(tools)结果为:{ tools: { add: [Function: add], sayHello: [Function: sayHello] } }

2 使用module, console.log(tools)结果为: { add: [Function: add], sayHello: [Function: sayHello] }

node_modules包的作用

执行结果

解说:

如果当前目录中找不到指定js文件,会自动去node_modules文件中找

同理可以实现 `/bar/bar.js` 的模块查找

四 模块导入,进阶方式,package.json的使用

在需要导入模块中的位置启动cmd,执行如下命令,生成package.json文件

npm init --yes

使用方式如下

模块导入基本流程:

1 项目根目录没有找到nav.js文件;

2 查找node_modules文件夹中查找nav.js文件,未找到

3 查找到nav文件夹,并读取package.json文件,获取文件入口nav.js;

4 找到nav.js,成功导入模块.

原文地址:https://www.cnblogs.com/angle6-liu/p/11707081.html

时间: 2024-10-08 04:53:12

CommonJs 和 Nodejs 中自定义模块 (3)的相关文章

Nodejs中cluster模块的多进程共享数据问题

Nodejs中cluster模块的多进程共享数据问题 前述 nodejs在v0.6.x之后增加了一个模块cluster用于实现多进程,利用child_process模块来创建和管理进程,增加程序在多核CPU机器上的性能表现.本文将介绍利用cluster模块创建的多线程如何共享数据的问题. 进程间数据共享 首先举个简单的例子,代码如下: var cluster = require('cluster'); var data = 0;//这里定义数据不会被所有进程共享,各个进程有各自的内存区域 if

Nodejs中关于模块的总结

关于Nodejs中的模块 概念 Nodejs在ECMAScript的基础上扩展并封装了许多高级特性,如文件访问.网络访问等,使得Nodejs成为一个很好的Web开发平台.基于Nodejs这个平台将Web开发常用的一些功能进行封装,称为模块. 1.系统模块 1. 模块被加载后才能使用,Nodejs提供了全局的函数require加载模块. 1.os模块 获取当前操作系统信息 2.fs模块 文件读写操作 3.path模块 路径处理 2. require加载模块路径 相对路径: 如 ./ 或 ../ 绝

NodeJS中Buffer模块详解

一,开篇分析 所谓缓冲区Buffer,就是 "临时存贮区" 的意思,是暂时存放输入输出数据的一段内存. JS语言自身只有字符串数据类型,没有二进制数据类型,因此NodeJS提供了一个与String对等的全局构造函数Buffer来提供对二进制数据的操作.除了可以读取文件得到Buffer的实例外,还能够直接构造,例如: 复制代码 代码如下: var buffer = new Buffer([ 0x68, 0x65, 0x6c, 0x6c, 0x6f ]) ; Buffer与字符串类似,除了

NodeJS中 Path 模块

var path = require('path'); // 当发现有多个连续的斜杠时,会替换成一个: 当路径末尾包含斜杠时,会保留: // 在 Windows 系统会使用反斜杠. var p = path.normalize('foo/bar//baz/asdf/quux/..') ; var p2 = path.normalize('foo/bar//baz/asdf/quux/../') ; console.log('p',p,p2); //组合参数中的所有路径,返回规范化后的路径. va

nodejs 中es5 模块的几种写法

1. module.exports.func = function(){} 2. module.exports.field = ''; 3. module.exports = function(arg1,arg2){    return {func:function(){  return arg1 + arg2  } }     } 4. module.exports = {field:xxxx, func:function(){}}

第二章. node中的模块和require

一 什么是模块.            JavaScript诞生初,它只不过是一个网页的小脚本而已,没有人会想到它会发展到现在能有大量的库,工具,组件变得如此复杂,慢慢地javascript发展中,人们发现javascript有个先天的缺陷--缺少模块.       在其他语言中,java有类,python有import, php 有include和require甚至比它底层的C也有include.而javascript只能通过 <script>标签引入,这种方式令代码变得杂乱,依赖变得不清晰

nodejs的require模块及路径

在nodejs中,模块大概可以分为核心模块和文件模块. 核心模块是被编译成二进制代码,引用的时候只需require表示符即可,如(require('net')). 文件模块,则是指js文件.json文件或者是.node文件.在引用文件模块的时候后要加上文件的路径:/-/-/xxx.js表示绝对路径../xxx.js表示相对路径(同一文件夹下的xxx.js),../表示上一级目录.如果既不加/-/.../又不加./的话,则该模块要么是核心模块,要么是从一个node_modules文件夹加载. 对于

nodejs(第三篇):nodejs中的文件模块、nodejs中的require与exports、http模块补充、JavaScript Standard Style

一.nodejs中的文件模块 在nodejs中,用户自己编写的模块,称为文件模块. 文件模块,则是指js文件.json文件或者是.node文件.在引用文件模块的时候后要加上文件的路径:/.../.../xxx.js表示绝对路径../xxx.js表示相对路径(同一文件夹下的xxx.js),../表示上一级目录.如果既不加/.../.../又不加./的话,则该模块要么是核心模块,要么是从一个node_modules文件夹加载. (1)在Node.js中,require是一个方法,只有通过requir

Python中引用自定义模块

学习了一小段时间的Python,始终停滞在简单的语法上,不能真正体会到Python的强大之处.今天学习了自定义模块的引用方法.当引用模块时,编译器会先在当前目录,接着去sys.path.Python的安装目录去寻找你引用的模块,如果没有的话,就会报错. 第一种情况,你的模块和你要使用的模块在同一目录下.Hello.py是一个模块,里面有一个打印Hello, World的方法Hello().test.py是一个测试程序,它将引用Hello.py中的hello()方法.因为它和模块在同一目录,所以可