Node.js是一个能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境。
Node.js主要用于编写像Web服务器一样的网络应用
官网地址:Node.js
中文官网:Node.js 中文网
(1)它是一个JavaScript 运行环境:Node.js作为运行环境可以让JavaScript 脱离浏览器,在服务器端单独执行,如果客户端和服务器端使用相同的开发语言,可以在很大程度上达到客户端和租务器端代码的共用。
(2)依赖于Chrome V8 引擎进行代码解析:Chrome V8负责在非浏览器解析情况下解析JavaScript 代码。
(3)轻量,可伸缩,适于实时数据交互应用:在Node.js中,Socket可以实现双向通信,例如聊天室就是实时的数据交互应用。
- 单线程
- 异步I/O
- 事件与回调函数
具体如下:
(1)单进程,单线程:进程就是一个应用程序的一次执行过程,它是一个动态的概念:而线程是进程中的一部分,进程包含多个线程在运行。单线程就是进程中只有一个线程,阻塞1/O模式下一个线程只能处理一个任务:而非阻塞1/O模式下,一个线程永远在处理任务,这样CPU的利用率是100%,Nodej采用单线程,利用事件驱动的异步编程模式,实现了非阻塞I/O。
(2)非阻塞I/O(non-blocking L/O):提到非阻塞I/O,首先有必要了解一下阻塞L/O,I/O(Input/Output)表示输入/输出操作,阻室I/O可以理解为被阻塞了的输入/输出操作。在服务器端有很多会涉及阻塞LO的操作,例如在读取文件的过程中,需要等待文件读取完毕后才能继续执行后面的操作,Node.js中使用事件同调的方式来解决这种阻塞l/O的情况,避免了阻塞I/O所需的等待,所以说它具有非阻塞l/O的特点。
(3)事件驱动(Event-Driven):对于事件密动来说,在学习JavaScript的初级阶段。都会接触到事件,如onclick、onload等,这些事件通常会绑定在某个页面元素上,然后为其指定事件处理函数,当事件被触发时才会执行相应的处理函数。可以说这样的事件处理机制就是标准的事件驱动机制。
下载地址:Download | Node.js
在node环境中指的是global对象,在浏览器中指的是window
node的顶层对象是global对象。global对象是node的全局对象,改对象及其所有的属性都可以在程序的任何地方访问;global对象最跟本的作用是作为全局变量的宿主。
global 最根本的作用是作为全局变量的宿主。按照 ECMAScript 的定义,满足以下条 件的变量是全局变量:
当你定义一个全局变量时,这个变量同时也会成为全局对象的属性,反之亦然。需要注 意的是,在 Node.js 中你不可能在最外层定义变量,因为所有用户代码都是属于当前模块的, 而模块本身不是最外层上下文。
注意: 最好不要使用 var 定义变量以避免引入全局变量,因为全局变量会污染命名空间,提高代码的耦合风险。
- 方法一:开始菜单 -> Windows 系统 -> 命令提示符。
- 方法二:按下快捷键 Win + R 打开运行,输入 cmd 回车。
- 方法三:点击任务栏搜索按钮,搜索 cmd 并打开。
- 方法四:在资源管理器的地址栏输入 cmd 并回车,cmd 打开后会自动定位到当前目录。
- 方法五:右键点击开始菜单的 Win 图标 -> 命令提示符。
每条命令输入后,回车运行。命令正确则执行完毕后回到 >
状态;命令错误返回错误信息
切换目录,进入指定文件夹:
- 切换磁盘:
d:
(进入 d 盘)- 切换磁盘和目录:
cd /d d:/test
(进入 d 盘 test 文件夹)- 进入文件夹:
cd \test1\test2
(进入 test2 文件夹)- 返回根目录:
cd \
- 回到上级目录:
cd ..
- 新建文件夹:
md test
显示目录内容:
- 显示目录中文件列表:
dir
- 显示目录结构:
tree d:\test
(d 盘 test 目录)- 显示当前目录位置:
cd
- 显示指定磁盘的当前目录位置:
cd d:
- 延迟和丢包率:
ping ip/域名
- Ping 测试 5 次:
ping ip/域名 -n 5
- 清除本地 DNS 缓存:
ipconfig /flushdns
- 路由追踪:
tracert ip/域名
进程管理:
- 显示当前正在运行的进程:
tasklist
- 运行程序或命令:
start 程序名
- 结束进程,按名称:
taskkill /im notepad.exe
(关闭记事本)- 结束进程,按 PID:
taskkill /pid 1234
(关闭 PID 为 1234 的进程)
服务管理:
- 显示当前正在运行的服务:
net start
- 启动指定服务:
net start 服务名
- 停止指定服务:
net stop 服务名
- 输入
help
,查看帮助;- Tab 键,自动补全;
- 上/下方向键,查看历史命令;
- 右键窗口标题栏 -> 属性,可以修改外观样式。
- 关机:
shutdown /s
- 重启:
shutdown /r
- 注销:
shutdown /l
- 休眠:
shutdown /h /f
- 取消关机:
shutdown /a
- 定时关机:
shutdown /s /t 3600
(3600 秒后关机)
在Nodejs中包由由包结构和包描述文件两个部分组成.
包结构:用于组织包中的各种文件,例如:源代码文件、资源文件
包描述文件:描述包的相关信息,例如:package.json、bin、lib等文
npm是随着Nodejs一起安装的一个包管理工具,它具有以下用途:
允许用户从NPM服务器下载别人编写的第三方包到本地使用。
允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
npm的全称是(Node Package Manager),是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载、安装、上传以及管理已经安装的包。
npm会和node.js一起安装
$ npm init
npm init
用来初始化生成一个新的package.json
文件。它会向用户提问一系列问题,如果觉得不用修改默认配置,一路回车就可以了。
尾缀带-f
(代表force)、-y
(代表yes),则跳过提问阶段,直接生成一个新的package.json
文件,不带尾缀的话,默认有提问阶段。
以上创建好之后就可以在Package.json直接看了 还可以在里面修改更新。
npm install xxx -g 简写 npm i xxx -g
npm install xxx 简写 npm i xxx
基本用法
# 读取package.json里面的配置单安装
$ npm install
//可简写成 npm i
# 默认安装指定模块的最新(@latest)版本
$ npm install [<@scope>/]
//eg:npm install gulp
# 安装指定模块的指定版本
$ npm install [<@scope>/]@
//eg: npm install [email protected]
# 安装指定指定版本范围内的模块
$ npm install [<@scope>/]@
//eg: npm install vue@">=1.0.28 < 2.0.0"
# 安装指定模块的指定标签 默认值为(@latest)
$ npm install [<@scope>/]@
//eg:npm install [email protected]
# 通过Github代码库地址安装
$ npm install
//eg:npm install git://github.com/package/path.git
#卸载当前项目或全局模块
$ npm uninstall [-g]
eg: npm uninstall gulp --save-dev
npm i gulp -g
卸载后,你可以到 /node\_modules/ 目录下查看包是否还存在,或者使用以下命令查看:
npm ls 查看安装的模块
#升级当前项目或全局的指定模块
$ npm update [-g]
//eg: npm update express
npm update express -g
$ npm set init-author-name 'my name jerry'
$ set init-author-email '[email protected]'
$ set init-author-url 'http://yourdomain.com'
$ npm set init-license 'MIT'
执行了以上的修改,此时 Package.json并没有发生变化
//设置后执行init才是真正修改成功
$ npm init