简介
- node.js是一个基于chrome V8 引擎的 JavaScript 运行环境。
- node.js使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
- node.js的包管理器 npm , 是全球最大的开源库生态系统
安装
- 官网地址 : http://nodejs.cn
- 查看是否安装成功 :
- node -v : 查看node.js版本
- npm -v : 查看npm版本
- node -h : 帮助信息
-
安装淘宝镜像 : 地址 : http://npm.taobao.org/
在终端下输入 : npm install -g cnpm --registry=https://registry.npm.taobao.org
一些命令行的基本操作
- cd 进入目录
- cd… 返回上一级
- tab 自动补全内容
- ctrl + c 退出操作
- cls 清屏
- dir 显示文件
- mkdir 创建文件夹
- rmdir 删除文件夹
- type nul > file.text 创建空文件
- echo[ content ]>file.text 创建带内容的文件
- del flie.text 删除文件
一些安装操作
- npm安装模块
- 局部安装 : npm install xxx
- 全局安装 : npm install xxx -g
- 查看全局安装的位置 : npm root -g
- nvm
- node version manage : 对node版本的管理
- nvm ls :查看版本信息
- nvm install v(版本号) : 安装对应版本的nvm
- nvm use(版本号) : 使用该版本nvm
- nrm
- node register manage : 对 npm 下载源的管理
- npm i -g nrm : 安装
- nrm ls : 查看
- nrm use : 切换
- node的一些基本操作
- node + 文件路径 : 开启node环境(REPL模式),可直接操作(后置名为.js时,后缀名可以省略)
- cnpm install -g nodemon : 安装nodemon , 可以实时侦测文件的变化(相当于VScode的live Server)
浏览器和node.js
- 浏览器 : 主要进行DOM操作 , document , window
- node.js : 主要进行计算机底层的操作,数据库,文件,系统,进程等。
node.js的模块
- 内置的node.js模块 : 就是下载npm之后直接可以使用的模块,不用下载,通过 require()引入即可。
- url模块 : url.parse() 会解析一个URL 字符串并返回一个URL对象。第二个参数布尔值true,对query属性解析成对象 。 url.format() : 返回一个urlObject格式化后的URL字符串。方法是parse()方法的相反操作。
- querystring模块 : 提供用于解析和格式化URL查询字符串的实用工具。parse():对query的串联字符串进行对象的解析。stringify():parse()的相反操作
//url : 处理 url 地址 , web项目 请求 -> 请求url -> 后端就要处理
var url = require('url');
var querystring = require('querystring');
var str = 'http://www.baidu.com/goods/detail.php?id=1&type=phone#abc';
var result = url.parse(str,true); //对url进行解析的,返回一个对象,第二个参数:可以把 字符串格式化参数 -> 对象形式的数据
- path : 处理文件路径
- path.join() : 连接路径
- path.parse() : 方法可以返回路径各部分的信息。
- path.relative() : 接受两个路径作为参数 。 基于当前工作目录,返回从第一个路径到第二个路径的相对路径。
- pth.resolve() : 把一个相对地址转成一个绝对地址
var path = require('path');
const { fileURLToPath } = require('url');
//想拼接两个路径。
console.log( path.join( 'd:\\a\\b' , 'file.txt') );
//__dirname : 当前这个node文件的根目录
//__filename : 当前这个node文件的绝对地址
console.log( path.join( __dirname , 'file.txt') );
//path.parse() : 把路径转成各种信息
console.log( path.parse(__filename) );
console.log( path.relative('d:\\a\\b' , 'd:\\a\\b\\file.txt') ); // file.txt
console.log( path.relative('d:\\a\\b\\file.txt' , 'd:\\a\\b') ); // ..
//可以把一个相对地址转成一个绝对地址
console.log( path.resolve('./file.txt') ); // D:\ke\SZ-GP4\20201012\file.txt
- fs : 与文件系统交互
- readFile() : 异步读取文件
- readFileSync() : 同步读取文件
- writeFile()异步写入文件
- writeFileSync : 同步写入文件。
- appendFile()异步的追加数据到文件,如果文件不存在就创建文件
- unlink() : 异步的删除文件或者符号链接。
- rename() : 文件重命名。
- mkdir() : 创建文件夹。
- redir() : 删除文件夹。
- readdir() : 读取文件夹。
- start():读取文件信息
var fs = require('fs');
//并不是累加,格式重写。
fs.writeFile('./a.txt','hi Node',function(err){});
//累加数据
fs.appendFile('./a.txt','hello vue',function(err){});
//如果文件不存在,就先创建在写入内容
fs.writeFile('./b.txt','hi Node',function(err){});
//删除文件
fs.unlink('./b.txt',function(err){});
//重命名文件
fs.rename('./a.txt','./c.txt',function(err){});
//创建文件夹
fs.mkdir('myApp',function(err){});
//删除文件夹
fs.rmdir('myApp',function(err){});
//读取文件夹
fs.readdir('../20201012',(err,data)=>{
console.log(data);
});
//读取文件的详细信息
fs.stat('../20201012',(err,data)=>{
console.log(data);
});
- 自定义的模块
- 通过require引入模块
- 通过module.exports修改模块。
- 第三方模块
- 下载模块 : cnpm install xxx
- 调用模块
npm详解
- 官网 : https://www.npmjs.com/
-
关于package.json :
1. 创建 : npm init 或 npm init -y
2. scripts : 定义了一组可以运行的 node 脚本。
- 让调用的命令变得简单。 npm run 脚本的属性。( 例 : npm run serve)
- 调用局部安装的软件包。如果局部没有这个包,才会找全局的包。直接在命令行中操作 -> 直接找全局的包。
3. dependencies 设置了作为依赖安装的 npm 软件包的列表。
- 生成环境 : 上线后用到的代码。
- 安装方式 : npm i xxx --save (-S) 可以简写为 npm i xxx (默认为 -S方式)
4. devDependencies 设置了作为开发依赖安装的 npm 软件包的列表。
- 开发环境 : 包括有 gulp工具 webpack工具 …
- 安装方式 : npm i xxx --dev-save (简写 : npm i xxx -D);
5. npm i : 可以根据package.json中的依赖,安装所有用到的地方模块。
6. npm i --production 只安装生成环境的模块。
7. npm uninstall -g xxx : 全局删除
8. npm uninstall -S xxx : 局部生成删除
9. npm uninstall -D xxx : 局部开发删除
模块版本问题
- 安装指定版本的模块 : npm i [email protected]
- 查看具体有哪些版本 : npm view xxx versions
- 版本 : (3.5.1) 大版本.中版本.补丁版本
- latest | * : 最新版本
- ^1.2.3 : 大版本是固定,中版本和补丁版本不固定
- ~1.2.3 : 大版本和中版本是固定,补丁版本不固定
- 1.2.3 : 全部都是固定的
- 更新 : npm update xxx -> 根据package.json中的版本号来进行升级。
- 查看项目中的所有过期模块 : outdated
- 锁定版本 : package-lock.json 。 npm 去下载模块的时候 就会生成 package-lock.json 。如果有package-lock.json这个文件,那么npm i 就不会自动去安装,而是安装锁定的版本。
局部模块的创建
1. 本地把功能先开发好
2. npmjs.com 去注册账号
3. npm addUser : 添加账号
4. npm publish : 发布到平台上
5. npm unpublish : 删除包
全局模块的创建
1. 开发功能
2. 给index.js 第一行添加命令 : #! /usr/bin/env node
3. package.json 添加
"bin": {
"包名": "index.js"
}
4. npm link 将全局包安装(实际就是拷贝)到全局中
5. npm publish : 发布到平台上