Node.js中的模块系统

Node.js中的模块系统



一、Node.js中的模块系统

使用Node编写应用程序主要就是在使用:

  1. ECMAScript 语言

    · 和浏览器不一样 ,在node中没有BOM、DOM

  2. 核心模块
    · 文件操作的 fs
    · http服务的http
    · url路径操作模块
    · path路径操作模块
    · os操作 系统信息

  3. 第三方模块
    · art-template
    · 必须通过npm来下载的才可以使用
    4.自己写的模块
    · 自己创建的文件

二、CommonJs模块系统

1.require 加载

var 变量名 = require(  '模块名称' )
两个作用:
	1. 执行被加载模块的代码
	2. 得到被加载模块中的 exports 导出接口对象

2.exports 导出

1. Node 中是模块作用域,默认文件中所有成员只在当前文件模块有效
2. 对于希望可以被其他模块访问的成员,我们就需要把这些公开的成员挂载到 exports 
	接口对象中就可以
3. 导出多个成员(必须在对象中)
module.exports = {
    add: function () {
        return x + y
    },
    str: 'hello'
}
4. 导出单个成员(拿到的就是 函数,字符串)
module.exports = add

3.原理解析

  1. exports 是 module.exports 的一个引用
console.log(module.exports = exports);//true

exports.foo = 'bar'
//等价于
module.exports.foo = 'bar'
  1. exports 和 module.exports 的区别

① 每个模块中都有一个 module 对象,每一个 module 对象中都有一个 exports对象
② 把需要导出的成员都挂载到 module.exports 接口对象中,
也就是:module.exports.xxx = xxx 的方式
③ 但是 module.exports.xxx = xxx 的方式 不是很方便,所以 Node为了方便就提供了一个成员叫 exports ,所以module.exports.xxx = xxx 可以用 exports.xxx = xxx 代替
④ 当一个模块需要导出单个成员的时候,这个时候必须使用:module.exports = xxx 的方式,不能使用 exports = xxx (会报错),因为每一个模块最终向外return的是module.exports,而 exportsmodule.exports 的一个引用 ,所以 即便你为 exports = xxx重新赋值,也不会影响module.exports
⑤但是,有一种赋值方式比较特殊:exports = module.exports 这个用来重新建立关系

4.require标识符分析

在这里插入图片描述

5.第三方模块

在这里插入图片描述
在这里插入图片描述

6.文件操作路径

在这里插入图片描述

三、npm

1.package.json

1.建议每个项目都要有一个package.json文件(包括描述文件,就像产品说明一样)
2.这个文件可以通过npm init的方式来自动初始化出来
3.对于目前来讲,最有用的是 dependencies(运行依赖)选项,可用来帮我们保存第三方包的依赖信息
4.如果不小心删除 node_modules 文件,只需要 npm install 就会自动把 package.json 中的dependencies中所有的依赖项都下载回来
5.执行 npm install 下载包的时候加上 --save ,才会保存依赖项到 dependencies
6.devDependencies是开发依赖

2.npm

1.npm 命令工具行

  1. npm 的第二层含义就是一个命令行工具,只要安装了node就已经安装了npm
  2. npm 也有版本概念
  3. 查看npm版本 npm --version
  4. 升级npm npm install --global npm

2.npm 常用命令

  1. 生成package.json文件 npm init或者npm init -y(可跳过向导快速生成)
  2. 一次性把dependencies选项中的依赖项全部下载 npm install 或者 npm i
  3. 下载第三方包 npm install 包名 或者 npm i 包名
  4. 下载并保存到依赖项 npm install 包名 --save 或者 npm i 包名 -S
  5. 删除包(不会删出依赖项里面的) npm uninstall 包名 或者 npm un 包名
  6. 删除包同时删除依赖信息 npm uninstall 包名 --save 或者 npm un 包名 -S
  7. 查看使用帮助 npm help
  8. 查看指定命令使用帮助 npm 命令 --help

3.解决npm 被墙问题

  1. npm存储包文件的服务器在国外,有时候会被墙,速度很慢,需要解决这个问题
  2. 安装淘宝镜像 npm install --global cnpm (在任意目录下执行;--global安装到全局;必须安装到全局,否则不管用)
  3. 之后可把 npm 替换成 cnpm
  4. 例如:npm install jquery 替换成 cnpm install jquery
  5. 如果不想使用cnpm又想通过淘宝服务器下载:
    npm config set registry https://registry.npm.taobao.org
    在这里插入图片描述
  6. 查看npm 配置信息 npm config list

三、修改完代码自动重启工具nodemon

  1. 安装:npm install --global nodemon
  2. 使用: nodemon app.js
  3. 自动监视文件变化,自动重启服务

总结

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值