Node.js 入门教程

 Node简介

Node.js是一个能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境。

Node.js主要用于编写像Web服务器一样的网络应用

官网地址:Node.js

中文官网:Node.js 中文网

Node特点和适合的场景

(1)它是一个JavaScript 运行环境:Node.js作为运行环境可以让JavaScript 脱离浏览器,在服务器端单独执行,如果客户端和服务器端使用相同的开发语言,可以在很大程度上达到客户端和租务器端代码的共用。

(2)依赖于Chrome V8 引擎进行代码解析:Chrome V8负责在非浏览器解析情况下解析JavaScript 代码。

(3)轻量,可伸缩,适于实时数据交互应用:在Node.js中,Socket可以实现双向通信,例如聊天室就是实时的数据交互应用。

Node的优势

  • 单线程
  • 异步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等,这些事件通常会绑定在某个页面元素上,然后为其指定事件处理函数,当事件被触发时才会执行相应的处理函数。可以说这样的事件处理机制就是标准的事件驱动机制。

Node安装

1.下载与安装

下载地址:Download | Node.js

2.顶层对象

顶层对象

在node环境中指的是global对象,在浏览器中指的是window

node的顶层对象是global对象。global对象是node的全局对象,改对象及其所有的属性都可以在程序的任何地方访问;global对象最跟本的作用是作为全局变量的宿主。

全局对象与全局变量

global 最根本的作用是作为全局变量的宿主。按照 ECMAScript 的定义,满足以下条 件的变量是全局变量:

  • 在最外层定义的变量;
  • 全局对象的属性;
  • 隐式定义的变量(未定义直接赋值的变量)。

当你定义一个全局变量时,这个变量同时也会成为全局对象的属性,反之亦然。需要注 意的是,在 Node.js 中你不可能在最外层定义变量,因为所有用户代码都是属于当前模块的, 而模块本身不是最外层上下文。

注意: 最好不要使用 var 定义变量以避免引入全局变量,因为全局变量会污染命名空间,提高代码的耦合风险。

3.常见cmd操作

如何打开 CMD 命令提示符窗口

  • 方法一:开始菜单 -> 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 秒后关机)

包和npm

1.包的概念:

在Nodejs中包由由包结构和包描述文件两个部分组成.

包结构:用于组织包中的各种文件,例如:源代码文件、资源文件

包描述文件:描述包的相关信息,例如:package.json、bin、lib等文

2.npm

npm是随着Nodejs一起安装的一个包管理工具,它具有以下用途:

  • 允许用户从NPM服务器下载别人编写的第三方包到本地使用。

  • 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。

  • 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

3.npm常用命令与操作

npm的全称是(Node Package Manager),是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载、安装、上传以及管理已经安装的包

npm会和node.js一起安装

1.npm init 创建模块

$ npm init

npm init用来初始化生成一个新的package.json文件。它会向用户提问一系列问题,如果觉得不用修改默认配置,一路回车就可以了。

尾缀带-f(代表force)、-y(代表yes),则跳过提问阶段,直接生成一个新的package.json文件,不带尾缀的话,默认有提问阶段。

以上创建好之后就可以在Package.json直接看了 还可以在里面修改更新。

2.npm install 安装模块

  • 全局安装: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

3.npm uninstall 卸载模块

#卸载当前项目或全局模块 
$ npm uninstall  [-g] 

eg: npm uninstall gulp --save-dev  
    npm i gulp -g

卸载后,你可以到 /node\_modules/ 目录下查看包是否还存在,或者使用以下命令查看:
npm ls 查看安装的模块

4.npm update 更新模块

#升级当前项目或全局的指定模块
$ npm update  [-g] 
//eg: npm update express 
      npm update express -g

 5.npm set 设置环境变量

$ 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

你可能感兴趣的:(node.js,vim,编辑器)