node.js的模块化和npm

一,Node.js简介

1.Node.js是一个能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境。
2. Node采用Google开发的V8引擎运行js代码,使用事件驱动、非阻塞和异步I/O模型等技术来提高性能,可优化应用程序的传输量和规模。
3. Node大部分基本模块都用JavaScript编写。在Node出现之前,JS通常作为客户端程序设计语言使用,以JS写出的程序常在用户的浏览器上运行。
4.目前,Node已被IBM、Microsoft、Yahoo!、Walmart、Groupon、SAP、 LinkedIn、Rakuten、PayPal、Voxer和GoDaddy等企业采用。
5.Node主要用于编写像Web服务器一样的网络应用,这和PHP和Python是类似的。
6.但是Node与其他语言最大的不同之处在于,PHP等语言是阻塞的而Node是非阻塞的。
7. Node是事件驱动的。开发者可以在不使用线程的情况下开发出一个能够承载高并发的服务器。其他服务器端语言难以开发高并发应用,而且即使开发出来,性能也不尽人意。

二,模块化-CommonJS规范

1.CommonJS规范的简介
• CommonJS规范的提出,主要是为了弥补当
前JavaScript没有模块化标准的缺陷。
• CommonJS规范为JS指定了一个美好的愿景,
希望JS能够在任何地方运行。
• CommonJS对模块的定义十分简单:
– 模块引用
– 模块定义
– 模块标识

2.模块引用
• 在规范中,定义了require()方法,这个方法接收模块标识,以此将一个模块引入到当前运行环境中。
• 模块引用的示例代码:

/*
	在node中,通过require()函数来引入外部的模块
		require()可以传递一个文件的路径作为参数,node将会自动根据该路径来引入外部模块
		这里路径,如果使用相对路径,必须以.或..开头

	使用require()引入模块以后,该函数会返回一个对象,这个对象代表的是引入的模块

	我们使用require()引入外部模块时,使用的就是模块标识,我们可以通过模块标识来找到指定的模块
	- 模块分成两大类
		核心模块
			- 由node引擎提供的模块
			- 核心模块的标识就是,模块的名字
		文件模块
			- 由用户自己创建的模块
			- 文件模块的标识就是文件的路径(绝对路径,相对路径)
				相对路径使用.或..开头

 */
//引入一个fs文件模块
var fs = require("fs");
console.log(fs)

结果:
在这里插入图片描述
3.模块定义
• 在运行环境中,提供了exports对象用于导出当前模块的方法或者变量,并且它是唯一的导出的出口。
• 在模块中还存在一个module对象,它代表模块自身,而exports是module的属性。
• 在Node中一个文件就是一个模块。

/*
 模块化
 - 在Node中,一个js文件就是一个模块
 - 在Node中,每一个js文件中的js代码都是独立运行在一个函数中
 而不是全局作用域,所以一个模块的中的变量和函数在其他模块中无法访问
 */

/*
 我们可以通过 exports 来向外部暴露变量和方法
 只需要将需要暴露给外部的变量或方法设置为exports的属性即可

 * */
//暴露变量
exports.a = "我是a";
exports.b = "我是b";
//暴露函数
exports.fun = function(){
    console.log(111);
};

exports 和 module.exports的区别

exports 和 module.exports
		- 通过exports只能使用.的方式来向外暴露内部变量
			exports.xxx = xxx

		- 而module.exports既可以通过.的形式,也可以直接赋值
			module.exports.xxx = xxxx
			module.exports = {}

4.模块标识
• 模块标识其实就是模块的名字,也就是传
递给require()方法的参数,它必须是符合
驼峰命名法的字符串,或者是以.、…开头的
相对路径、或者绝对路径。
• 模块的定义十分简单,接口也十分简洁。
每个模块具有独立的空间,它们互不干扰,
在引用时也显得干净利落。

在另一个模块中引入该模块:

//引入其他的模块
/*
 在node中,通过require()函数来引入外部的模块
 require()可以传递一个文件的路径作为参数,node将会自动根据该路径来引入外部模块
 这里路径,如果使用相对路径,必须以.或..开头

 使用require()引入模块以后,该函数会返回一个对象,这个对象代表的是引入的模块

 我们使用require()引入外部模块时,使用的就是模块标识,我们可以通过模块标识来找到指定的模块
 - 模块分成两大类
 核心模块
 - 由node引擎提供的模块
 - 核心模块的标识就是,模块的名字
 文件模块
 - 由用户自己创建的模块
 - 文件模块的标识就是文件的路径(绝对路径,相对路径)
 相对路径使用.或..开头

 */

var ex = require("./demo");
console.log(ex);
ex.fun();

结果:
在这里插入图片描述
5.包 package
• CommonJS的包规范允许我们将一组相关
的模块组合到一起,形成一组完整的工具。
• CommonJS的包规范由包结构和包描述文
件两个部分组成。
• 包结构
– 用于组织包中的各种文件
• 包描述文件
– 描述包的相关信息,以供外部读取分析
包结构
• 包实际上就是一个压缩文件,解压以后还
原为目录。符合规范的目录,应该包含如
下文件:
– package.json 描述文件
– bin 可执行二进制文件
– lib js代码
– doc 文档
– test 单元测试
包描述文件
• 包描述文件用于表达非代码相关的信息,
它是一个JSON格式的文件 – package.json,
位于包的根目录下,是包的重要组成部分。
• package.json中的字段
– name、description、version、keywords、maintainers、contributors、bugs、licenses、repositories、dependencies、homepage、os、cpu、engine、builtin、directories、implements、scripts、author、bin、main、devDependencies。

三,npm,cnpm介绍和使用

1.介绍
• CommonJS包规范是理论,NPM是其中一
种实践。
• 对于Node而言,NPM帮助其完成了第三
方模块的发布、安装和依赖等。借助NPM,
Node与第三方模块之间形成了很好的一个
生态系统。
2.NPM命令
• npm –v
– 查看版本
• npm
– 帮助说明
• npm search 包名
– 搜索模块包
• npm install 包名
– 在当前目录安装包
• npm install 包名 –g
– 全局模式安装包
NPM命令
• npm remove 包名
– 删除一个模块
• npm install 文件路径
– 从本地安装
• npm install 包名 –registry=地址
– 从镜像源安装
• npm config set registry 地址
– 设置镜像源

3.如何通过npm去安装所需的包
(1).打开cmd,将路径修改到想要安装的文件夹,并执行安装包命令:
以math包举例
在这里插入图片描述
(2).查看安装文件是否存在:
说明:
(1).过npm下载的包都放到node_modules文件夹中我们通过npm下载的包,直接通过包名引入即可(json文件里不能有注释)
(2).node在使用模块名字来引入模块时,它会首先在当前目录的node_modules中寻找是否含有该模块如果有则直接使用,如果没有则去上一级目录的node_modules中寻找如果有则直接使用,如果没有则再去上一级目录寻找,直到找到为止直到找到磁盘的根目录,如果依然没有,则报错

在这里插入图片描述
3.npm install 包名 --save 说明(安装包并添加到依赖中)
在这里插入图片描述
(1).添加依赖是什么?我们打开json文件:
在这里插入图片描述
(2).添加依赖后有什么作用?当我们上传nodex项目后,都不会去上传node_modules文件夹里面的包,而是j通过json文件里的依赖来自动下载。

4.cnpm(npm的镜像)
提高
(1).你可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:

npm install -g cnpm --registry=https://registry.npm.taobao.org

在这里插入图片描述

(2).安装好过后就可以从cnpm中下载所需要的包。
在这里插入图片描述
四,nodemon工具
作用,node.js 的代码修改后,该工具自动帮我们重启服务,
4.1安装

npm install -g nodemon

使用:nodemon 运行文件名
结果:
在这里插入图片描述
注:如果遇到类似错误:nodemon : 无法加载文件 C:\Users\jiahs\AppData\Roaming\npm\nodemon.ps1,因为在此系统上禁止运行脚本。
解决:
1.开始菜单---->右键---->windows PowerShell(管理员)

2.打开 windows PowerShell(管理员)—》输入set-ExecutionPolicy RemoteSigned ------》输入 y

3 接下来就可以要运行nodemon了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值