node模块

Node.js

什么是Node.js

http://nodejs.cn/

Node.js是一个基于Chrome V8引擎的JavaScript运行环境
浏览器是JavaScript的前端运行环境
Node.jsJavaScript的后端运行环境
Node.js中无法调用BOM,DOM等浏览器内置的API

Node.js 它的内置API fs,path,http...

Node.js作为JavaScript运行环境,仅仅提供了基础的功能和API
了解:
基于 Express 框架(http://www.expressjs.com.cn/),可以快速构建 Web 应用
基于 Electron 框架(https://electronjs.org/),可以构建跨平台的桌面应用
基于 restify 框架(http://restify.com/),可以快速构建 API 接口项目

会js 就会Node.js
怎么学
浏览器中的JavaScript:
js基础语法+浏览器内置API(DOM ,BOM)+第三方库(jQuery,art-template等)

Node.js:
js基础语法 + Node.js内置API模块(fs,path,http)+第三方模块(express)
Node.js安装

http://nodejs.cn/

查看已安装的Node.js 的版本号

打开终端,输入node -v命令 按回车

Windows系统打开终端:

(Windows+R)运行面板,输入cmd 回车,就可以打开终端

Node.js环境中运行js代码
  • 准备js代码

  • 打开终端(终端目录一定要指向文件目录) cd 文件路径

  • 输入 node 要执行的js文件的路径

    node 要执行的js文件的路径
    
终端快捷键
上键  快速定位到上一次执行命令
tab 快速补全
esc   清空当前已输入的命令
cls  清空终端

Node.js三大模块

内置模块(Node.js官方提供 fs ,path,http,…)

自定义模块(用户创建的每个js文件,都是自定义模块)

第三方模块(由第三方开发出来的模块,并非官方提供的内置模块)

内置模块

http://nodejs.cn/api/

fs文件系统模块

fs模块是Node.js官方提供,用来操作文件的模块,它提供了一系列方法和属性,满足用户对文件的需求
require()用法看下面 加载模块

// 1引入fs模块 来操作文件
var fs = require('fs');
/* 
fs.readFile()
参数1  读取文件的路径
参数2  读取文件时候采用的编码方式  一般默认是utf8
参数3  回调函数 拿到读取失败和成功的结果 err  data
*/
fs.readFile('./files/aa.txt', 'utf8', function (err, data) {
  /* 
  读取文件成功,err的值为null
  读取文件失败,err的值为错误对象 data的值为undefined
  */
  console.log(err);  
  console.log("---------");
  console.log(data);
})
自定义模块

自定义模块中定义的方法,变量只能在当前模块中使用。不存在变量冲突

加载模块

当 Node 遇到 require(X) 时,按下面的顺序处理。
(1)如果 X 是内置模块(比如 require(‘http’))
  a. 返回该模块。
  b. 不再继续执行。
(2)如果 X 以 “./” 或者 “/” 或者 “…/” 开头
  a. 根据 X 所在的父模块,确定 X 的绝对路径。
  b. 将 X 当成文件,依次查找下面文件,只要其中有一个存在,就返回该文件,不再继续执行。

  • X
  • X.js
  • X.json
  • X.node

c. 将 X 当成目录,依次查找下面文件,只要其中有一个存在,就返回该文件,不再继续执行。

  • X/package.json(main字段)
  • X/index.js
  • X/index.json
  • X/index.node

(3)如果 X 不带路径
  a. 根据 X 所在的父模块,确定 X 可能的安装目录。
  b. 依次在每个目录中,将 X 当成文件名或目录名加载。
(4) 抛出 “not found”

require()可以加载需要的内置模块,用户自定义模块,第三方模块

向外共享

每个js自定义模块中都有一个module对象,它里面存储了和当前模块有关的信息
在自定义模块中输出module

console.log(module);

会得到差不多这样的Module对象:

Module {
  id: '.',
  path: 'C:\\xxx\\code\\moudle',
  exports: {},
  parent: null,
  filename: 'C:\\xxx\\code\\moudle\\com.js',
  loaded: false,
  children: [],
  paths: [
    'C:\\xxx\\code\\moudle\\node_modules',
    'C:\\xxx\\code\\node_modules',
    'C:\\xxx\\node_modules',
    'C:\\node_modules'
  ]
}

自定义模块中,可以使用module.exports对象,将模块内的成员共享出去,供外界使用

外界用require()导入自定义模块,得到的就是module.exports所指向的对象

exports对象

由于module.exports单词写起来比较复杂,为了简化向外共享成员的代码,Node提供了exports对象

exports和module.exports指向同一个对象

exports.username = "zs";
exports.sayHello = function () {
  console.log("hello")
}

console.log(module.exports === exports);   //true

外界require方法导入模块时,永远以module.exports指向的对象为准

// 可以这样写:
module.exports = {
  username: "zs",
  sayHello: function () {
    console.log(123)
  }
}
// 但不能这样写:
exports = {}

不能给exports直接赋值一个新对象 永远以module.exports指向的对象为准
module.exports指向的对象就是全局内置对象
如果直接给exports赋值一个新对象,就只是改变了exports的指向,exports指向的就不再是全局内置对象

Node.js中的模块化规范

Node.js遵循了CommonJS模块化规范,CommonJS规定了模块的特性和各模块之间如何相互依赖

CommonJS规定:

  • 每个模块内部,module变量代表当前模块
  • module变量是一个对象,它的exports属性(module.exports)是对外的接口
  • 加载某个模块,其实就是加载模块的module.exports属性,require方法用于加载模块

模块化

什么是模块化

模块化是指解决一个复杂问题时,自顶向下逐层把系统划分为若干模块的过程

编程领域的模块化

就是遵守固定的规则,把一个大文件拆成独立的多个小模块

  • 提高了代码的复用性
  • 提高了代码的可维护性
  • 可以实现按需加载
模块化的规范

模块化的规范就是对代码进行模块化的拆分和组合时,需要遵守的规则

  • 如何引入模块
  • 在模块中使用什么样的语法向外暴露成员

npm和包(第三方模块)

什么是包

Node.js中的第三方模块又叫做包

包的来源

不同于Node.js的内置模块和自定义模块,包是由第三方个人或团队开发出来的,免费使用

为什么要使用包

Node.js提供的Api开发效率低

基于内置模块封装出来包,提供了更高级,更方便的API,极大的提高了工作效率

下载包

国外的一家IT公司,叫做npm ,Inc ,这家公司的著名的网站https://www.npmjs.com/全球最大的包共享平台

提供了一个地址 https://registry.npmjs.org/,来对外共享所有的包,我们可以从这个服务器下载自己所需要的包

https://www.npmjs.com/  网站上搜索自己所需要的包
https://registry.npmjs.org/ 服务器上下载自己需要的包
npm

所以npm就是个 包管理工具

这个包管理工具随着node的安装一起被安装到了用户的电脑上

终端输入命令 npm -v查看自己电脑上安装的npm包管理工具的版本号

项目中安装 包
npm install 包的完整名称
简写
npm i 包的完整名称

初次装包完成,项目文件下多一个叫node_modules文件夹和package-lock.json和package-lock.json文件

node_modules 存放所有已安装到项目中的包  require导入第三方包时,就是从这个目录中查找并加载包
package-lock.json 配置文件用来记录node_modules目录下每一个包的下载信息,包的名字,版本号 下载地址

不需要手动修改这两个文件 npm包管理工具会自动维护它们
包管理配置文件package.json

npm规定,在项目目录中,必须提供一个叫做package.json的包管理配置文件,用来记录与项目有关的一些配置

  • 项目名称版本号 描述
  • 项目中都用到了哪些包
  • 哪些包只在开发期间用到
  • 哪些包在开发和部署时都需要用到

项目目录中,创建一个package.json的配置文件,可用来记录项目中安装了哪些包,方便删除node_modules目录之后,在团队成员之间共享项目的源代码
在项目开发中,一定要把node_modules文件夹,添加到.gitignore忽略文件中 不需要被git所管理

创建该文件命令:

npm init -y

该命令只能在英文的目录下运行成功

dependencies节点

package.json文件中,有一个dependencies节点,专门用来记录您使用npm install 命令安装了哪些包

一次性安装所有的包
npm i    
或者
npm install
卸载包
npm uninstall  moment
devDependencies

有些包只在项目开发阶段会用到,在项目上线之后不会用到,建议把这些包记录到devDependencies节点中 (比如scss)

有些包在项目开发阶段和项目上线之后都会用到建议把这些包记录到dependencies节点中

//记录到devDependencies节点中
npm i 包名 -D
//完整写法
npm install 包名 --save-dev
解决包下载慢的问题

nrm工具,利用nrm提供的终端命令可以快速查看和切换包的镜像源

-g 全局  下载工具需要加-g  在电脑的任何一个地方都可以使用

//下载nrm安装全局可用的工具
npm i nrm -g
//查看所有的镜像源
nrm ls

将下包的镜像源切换到taobao
nrm use taobao
https://registry.npm.taobao.org/

https://yarnpkg.com/zh-Hans/docs/package-json
包的分类

npm包管理工具下载的包,分为两大类

  • 项目包

    被安装到项目的node_modules目录中的包,都是项目包

    • 开发依赖包(被记录到devDependencies节点中的包,只在开发期间会用到)
    • 核心依赖包(被记录到dependencies节点中的包,在开发期间和项目上线之后都会用到)
  • 全局包

    执行npm install 命令是 提供了-g参数 安装的就是全局包

    全局包被安装到C:\Users\54004\AppData\Roaming\npm\node_modules中 只有工具性质的包,才有全局安装的必要性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值