43 Node简介、Node安装、Node运行与顶层对象、Buffer、模块系统、包和npm
Node.js是一个能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境。
Node.js主要用于编写像Web服务器一样的网络应用。
中文官网:http://nodejs.cn/
1.前端与后台
HTML、css、js,在用户端都是属于前端的部分。前端的作用:第一反应给用户想不想进一步接触 。
如果一个网站性能到底好不好,有时候是取决于后端的。
2.学习Node的目的
了解前后端交互流程。学习后端是如何运转的。
地址?key=value
3.为什么选择Node
Node是后端语言的平台 。php、java、python、C#。
它基于Ecmascript的语言。我们只需要学习后端思想即可。 JavaScript is everwhere。
4.Node的特点
把chrome的 V8引擎给拿出来的。
单线程:对标多线线程 。 因为js是单线程的。线程死了,程序也就死了。但是这些都不叫事。
事件循环机制:
任务 + 事件完成机制 =》 接下来要干什么 。
异步非阻塞
node是异步非阻塞的,速度是非常快。
5.Node适合的场景
写接口、写动态网站 、即时通信。
6.Node与JavaScript之间的区别
JavaScript:ecmascript/BOM/DOM
Node: Ecmascript/Node提供的方法,没有DOM和BOM
( 定时器、Math、String、Number、Array、RegExp、Date、Math... )
readFile/ rmfile
二、Node安装
1.下载与安装
下载地址:http://nodejs.cn/download/
V14只能是win10及以上。
https://npm.taobao.org/mirrors/node/ v12
X64 : 64位
X86:32位
2.常见cmd操作
命令行操作。
如何打开命令行:
第1种、window + r => cmd : 路径是以你管理用户名为目录
第2种、开始 => 搜索 cmd : 路径是以你管理用户名为目录
第3种、文件夹地址栏 => cmd : 执行命令路径就是 当前文件夹的目录
dir:查看当前目录的内容
cls:清屏
cd:修改目录 -》 cd 目录名 cd 命令要结合使用 tab键:快速补全。
↑↓:快速调出最近命令
如果进入node环境,按两次ctrl+c退出 。
//创建文件夹、创建文件、删除文件: cmd常用命令。 cmd关机命令: shutdown
作用:
1、可以执行系统自带的命令
2、执行一些可执行程序: .exe、.cmd
在cmd中输入 notepad、mspaint可以打开对应的记事本、画面 程序。
但是 输入vscode不行。:vscode不是内部命令,也不是可执行程序 。
notepad、mspaint 在环境变量中是已经存储的。而我们后期安装的没有记录。
node可以在cmd运行。
3.环境变量
如果以后 出现 xxxx 不是内部命令,也不是可执行程序 ,两种情况:要么就是没安装此程序,要么就是环境变量出了问题。
配置环境变量:
右键计算机-》属性-》高级系统设置-》环境变量-》系统变量-》path-》复制出来所有的值
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Lenovo\Fingerprint Manager Pro\;C:\Program Files\Git\cmd;C:\Program Files\nodejs\;C:\Program Files (x86)\Tencent\WeChat
;C:\Users\Administrator\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\Administrator\AppData\Roaming\npm
修改完毕,重启cmd
三、Node运行与顶层对象
1.Node的运行
代码示例:
console.log( 'hello node.js' )
1、在任意目录下打开cmd。然后通过拖拽的方式执行此文件
2、在文件的当前下打开cmd。然后通过相对路径的方式执行此文件 。
2.顶层对象
在浏览器 JavaScript 中,通常 window是顶层对象,而 Node.js 中的顶层对象是 global
代码示例:
console.log( global )
3.全局变量
Node平台内置了例如:__filename
和 __dirname
等全局变量 setInterval() setTimeout()等方法
代码示例:
// setTimeout( ()=>{
// console.log('123')
// } ,2000)
let num = 0
setInterval( ()=> {
console.log( num++ )
} ,1000)
__filename
: 获取当前执行文件的完整路径,包含文件名的。绝对路径
__dirname
: 获取当前执行文件的目录路径。不包含文件名
使用技巧 :反映了在后端当中涉及到文件路径的,应该是用绝对路径。
console.log( __dirname + '\\a.txt' )
// console.log( __dirname );
// console.log( __filename );
四、Buffer(了解)
Buffer类是随Node.js内核一起发布的核心库
Buffer的结构和数组很像、但Buffer就是专门用来存储二进制数据
文件中就是以二进制流存储的。 1和0。计算机只认识1和0,
1.常见进制简述
二进制、八进制、十进制、十六进制...
n进制( 0~n-1 )
2进制(0~1) 逢2进1
10(0-9) 逢10进1
二进制的:
1 0 1 1
1 * 2^3 + 0*2^2 + 1*2^1 + 1*2^0 =>11
1 2 3
1*10^2 2*10^1 3*10^0 = 123
进制转换工具
十六进制:
0~F: 0~9 a b c d e f
虽然文件流是二进制,但是存储的表现形式是十六进制 。为什么 ?
10: 二进制:1010 -》 十六进制:a
计算机的存储原理:
最小的存储单位 :b,bite,比特。
存储文件最小单位:B,字节
1b 就是一位
8b = 1B
1 | 0 | 1 | 1 | 1 | 1 | 2 | 2 |
---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1Kb = 1024B
1Mb = 1024Kb
1Gb = 1024Mb
...
ascill
比如:0100 0001 =》 字符A =》 65
11111111,足以表示它们的字符。
utf8通用的3个字节表示1个字符、gb2312国标码 2个字节足以表示咱们国内的字符
2.Buffer的常见操作
2.1基本使用
代码案例:
2.2常见方法
代码案例:
五、模块系统
在Node.js中,一个js文件就称之为一个模块(Module)。
1.模块概述
简述优势
2.模块的分类
在Node中,模块分为两类:一类是Node提供的模块,称为核心模块;另一类是用户编写的模块,称为文件模块。
2.1 内置模块/核心模块
代码示例:
2.2 文件模块
文件模块常见的有:自定义模块、第三方模块
代码示例:
2.3 模块加载机制和Commonjs简述
六、包和npm
1.包的概念:
在Nodejs中包由由包结构和包描述文件两个部分组成.
包结构:用于组织包中的各种文件,例如:源代码文件、资源文件
包描述文件:描述包的相关信息,例如:package.json、bin、lib等文件
2.npm
npm是随着Nodejs一起安装的一个包管理工具。
3.npm常见命令
示例:
4.package.json文件详解
代码示例:
5.淘宝镜像
1)全局安装cnpm工具( 我们npm工具如何使用的,cnpm一模一样 )
npm install -g cnpm --registry=https://registry.npm.taobao.org
2)配置npm命令的源:
npm config set registry https://registry.npm.taobao.org