Node 模块化

模块化概念

      Node 中规定一个 JavaScript 文件就是一个模块,默认情况下在一个模块内部无法获取另一个模块的变量和函数在。可以使用 exports 对象将模块的变量和函数进行导出,在其他模块中使用 require 函数导入该模块,从而使用该模块的变量和函数。

一、模块化导出导入方式一

ModuleA.js

var property = "Is Property";

function fun() {
    console.log("Is Fun");
}

exports.property = property;
exports.fun = fun;

ModuleB.js

var moduleA = require("./ModuleA");

console.log(moduleA.property);
moduleA.fun();

二、模块化导入导出方式二

ModuleA.js

var property = "Is Property";

function fun() {
    console.log("Is Fun");
}

module.exports.property = property;
module.exports.fun = fun;

ModuleB.js

var moduleA = require("./ModuleA");

console.log(moduleA.property);
moduleA.fun();

      exports 是 module.exports 的别名,使用 exports 和 module.exports 导出同一个变量或函数,最终以 module.exports 为准。

系统模块

      Node 运行环境提供了很多 API,这些 API 都是以模块的形式存在,这些模块称为系统模块。

第三方模块

      有特定功能的非系统模块都是第三方模块,第三方模块有两种存在形式。第一种是以 JavaScript 文件的形式存在,提供实现具体功能的 API 接口。第二种形式是以命令行的形式存在,辅助项目开发。

      使用 npm 来管理第三方模块,npm 本身也是一个以命令行形式存在的第三方模块。第三方模块可以全局安装也可以本地安装,全局安装可以在所有项目中使用,本地安装只能在当前项目中使用。一般以命令行形式存在的模块全局安装,以 JavaScript 文件形式存在的模块本地安装。

  • 下载模块:npm install 模块名称
  • 卸载模块:npm unintall package 模块名称

一、第三方模块 nrm

      默认情况下使用 npm 下载第三方模块会去远程仓库下载(npmjs.com),下载速度很慢,nrn 能够切换下载路径。

// 全局安装 nrm
npm install nrm -g;
// 查看所有现在镜像
nrm ls;
// 切换下载路径为 taobao
nrm use taobao;
package.json 文件

      package.json 文件记录了项目依赖的所有模块,以及模块的信息。使用 npm init -y 命令可以在当前项目中生成 package.json 文件。

模块加载机制

      使用 require 函数引入模块,如果是完整路径则直接引入。如果模块后缀省略先去找同名的 JavaScript 文件,再去找同名的文件夹,如果有同名文件夹怎在该文件夹下查找是否用 index.js 文件。如果文件夹下没有 index.js 文件就去找当前文件夹下的 package.json 文件的 mian 选项中的入口文件,如果没有找到入口文件或者没有指定入口文件则会报错。

      当模块没有路径也没有后缀时,Node 会认为该模块是系统模块,在 node_module 文件夹中查找是否有相同名字的 JavaScript 文件,再去查找是否有相同名字的文件夹,在文件夹中查找 index.js 文件,如果没有 index.js 文件,则查看文件夹下的 package.json 的 main 选项确定入口文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值