nodejs(第一篇):nodejs是什么?JavaScript语言与node、nodejs的特点、nodejs可以做什么?安装nodejs

一、nodejs是什么?

 

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。

Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。

简单的说 Node.js 就是运行在服务端的 JavaScript,利用JavaScript在服务端进行编程。

Node.js是一个让JavaScript运行在服务器端的开发平台,它让JavaScript的触角伸到了服务器端,可以与PHP、JSP、Python、Ruby平起平坐。

Node.js不是一种独立的语言,与PHP、JSP、Python、Perl、Ruby的“既是语言,也是平台”不同,Node.js使用JavaScript进行编程,运行在JavaScript引擎上(V8)。

nodejs开发的构成就成利用npm开发的社区提供的大量的第三方包加上基本的ECMAScript脚本语言以及node平台提供的一系列编程接口进行编程。

二、JavaScript语言与node

JavaScript语言本身是指ECMAScript,语言本身不包含BOM、DOM,BOM、DOM是浏览器环境给JavaScript提供的编程接口对象,理论上DOM、window都是属于BOM。

浏览器都有引擎,最少两个,一个是渲染引擎,一个是JavaScript解析执行引擎。

Chrome V8引擎就是专门用来解析和执行JavaScript代码的。

在所有浏览器中,Google chroome的V8引擎是最快的js脚本代码解析执行引擎。性能非常好

以前的JavaScript就是只能在浏览器里运行,包含ECMAScript和BOM浏览器的东西。

node不是一门新语言,他只是把chrome V8引擎移植到自己的环境当中,在这个环境之上构建了一系列的底层API,给ECMAScript提供了一些特定环境的编程接口。

nodejs没有BOM、DOM。

三、nodejs的特点

1、node.js是一个平台,或者说是一个运行环境。

2、node.js是一个基于Chrome JavaScript 运行时建立的一个平台,具体是基于Chrome V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。

3、node.js旨在提供一种简单的构建 快速、可伸缩网络程序的方法。

4、使用事件驱动,非阻塞IO模型

5、轻量、可伸缩,适用于实时数据密集的交互应用。

6、单进程,单线程

四、nodejs可以做什么?

JavaScript解析器只是JavaScript代码运行的一种环境,浏览器是JavaScript运行的一种环境,浏览器为JavaScript提 供了操作DOM对象和window对象等的接口。Node.js也是JavaScript运行的一种环境,Node.js为JavaScript提供了操 作文件、创建HTTP服务、 创建TCP/UDP服务等的接口,所以Node.js可以完成其他后台语言(Python、PHP等)能完成的工作。

1、Web开发:Express + EJS + Mongoose/MySQL

express是轻量灵活的Nodejs Web应用框架,它可以快速地搭建网站。Express框架建立在Nodejs内置的Http模块上,并对Http模块再包装,从而实际Web请求处理的功能。

ejs是一个嵌入的Javascript模板引擎,通过编译生成HTML的代码。

mongoose是MongoDB的对象模型工具,通过Mongoose框架,可以进行访问MongoDB的操作。

mysql是连接MySQL数据库的通信API,可以进行访问MySQL的操作。

通常用Nodejs做Web开发,需要3个框架配合使用,就像Java中的SSH。

 

2 、Web聊天室(IM):Express + Socket.io

socket.io一个是基于Nodejs架构体系的,支持websocket的协议用于时时通信的一个软件包。socket.io 给跨浏览器构建实时应用提供了完整的封装,socket.io完全由javascript实现。

 

 

3、 Web爬虫:Cheerio/Request

cheerio是一个为服务器特别定制的,快速、灵活、封装jQuery核心功能工具包。Cheerio包括了 jQuery核心的子集,从jQuery库中去除了所有DOM不一致性和浏览器不兼容的部分,揭示了它真正优雅的API。Cheerio工作在一个非常简单,一致的DOM模型之上,解析、操作、渲染都变得难以置信的高效。基础的端到端的基准测试显示Cheerio大约比JSDOM快八倍(8x)。Cheerio封装了@FB55兼容的htmlparser,几乎能够解析任何的 HTML 和 XML document。

 

4、 REST开发:Restify

restify是一个基于Nodejs的REST应用框架,支持服务器端和客户端。restify比起express更专注于REST服务,去掉了express中的template, render等功能,同时强化了REST协议使用,版本化支持,HTTP的异常处理。

 

5、 Web博客:Hexo

Hexo是一个简单地、轻量地、基于Node的一个静态博客框架。通过Hexo我们可以快速创建自己的博客,仅需要几条命令就可以完成。

发布时,Hexo可以部署在自己的Node服务器上面,也可以部署github上面。对于个人用户来说,部署在github上好处颇多,不仅可以省去服务器的成本,还可以减少各种系统运维的麻烦事(系统管理、备份、网络)。所以,基于github的个人站点,正在开始流行起来….

 

6、Web论坛: nodeclub

Node Club是用 Node.js 和 MongoDB 开发的新型社区软件,界面优雅,功能丰富,小巧迅速, 已在Node.js 中文技术社区 CNode 得到应用,但你完全可以用它搭建自己的社区。

 

7、Web控制台工具: tty.js

tty.js是一个支持在浏览器中运行的命令行窗口,基于node.js平台,依赖socket.io库,通过websocket与Linux系统通信。特性:支持多tab窗口模型; 支持vim,mc,irssi,vifm语法; 支持xterm鼠标事件; 支持265色显示; 支持session。

五、nodejs的历史

  • 2008年左右,随着 AJAX 的逐渐普及,Web 开发逐渐走向复杂化,系统化;

  • 2009年2月,Ryan Dahl 想要创建一个轻量级,适应现代 Web 开发的平台;

  • 2009年5月,Ryan Dahl 在 GitHub 中开源了最初版本,同年11月,JSConf 就安排了 Node 讲座;

  • 2010年底,Joyent 公司资助,Ryan Dahl 也加入了该公司,专门负责 Node 的开发;

  • 2011年7月,在微软的支持下登陆 Windows 平台。PS:node 的生产环境基本是在 Linux 下。

据 Node.js 创始人 Ryan Dahl 回忆,他最初希望采用 Ruby,但是 Ruby 的虚拟机效率不行。

注意:是 Node 选择了 JavaScript,不是 JavaScript 发展出来了一个 Node。

NodeJS的作者说,他创造NodeJS的目的是为了实现高性能Web服务器,他首先看重的是事件机制和异步IO模型的优越性,而不是JS。但是他需要选择一种编程语言实现他的想法,这种编程语言不能自带IO功能,并且需要能良好支持事件机制。JS没有自带IO功能,天生就用于处理浏览器中的DOM事件,并且拥有一大群程序员,因此就成为了天然的选择。

如他所愿,NodeJS在服务端活跃起来,出现了大批基于NodeJS的Web服务。而另一方面,NodeJS让前端众如获神器,终于可以让自己的能力覆盖范围跳出浏览器窗口,更大批的前端工具如雨后春笋。

因此,对于前端而言,虽然不是人人都要拿NodeJS写一个服务器程序,但简单可至使用命令交互模式调试JS代码片段,复杂可至编写工具提升工作效率。

 

 

 

六、学习nodejs的预备知识基础

Html

Css

JavaScript

简单的linux命令行操作

七、安装nodejs

windows环境下

环境 win7 --64位系统

(1)Node.js 安装包(不推荐)

去 Node.js 的官网下载安装包:

https://nodejs.org/en/

我们也可以在https://nodejs.org/en/download/releases/上下载历史版本。

注意,我们以一定要用偶数版(V4、V6等),不要用奇数版(比如V5),因为奇数版不稳定。

我们并不推荐直接采用 Node.js.msi 安装包进行安装,不方便 node 的更新,原因如下:

  • 以前版本安装的很多全局的工具包需要重新安装;

  • 无法回滚到之前的版本;

  • 无法在多个版本之间切换(很多时候我们要使用特定版本)。

因此,我们暂时先不用安装 Node.js,稍后用 NVM 的方式来安装 Node.js。

 

(2)通过 NVM 安装Node.js(推荐)

NVM:node.js version manager,用来管理 node 的版本。之所以需要这个工具,是因为 Node.js 的各种特性都没有稳定下来,所以我们经常由于老项目或尝新的原因,需要切换各种版本。

第一步:下载nvm安装包

下载地址  github上下载最新版本:https://github.com/coreybutler/nvm-windows/releases

第二步:解压缩,新建配置文件

在c盘创建文件夹C: odejsnvm,在nodejsnvm vm下面创建两个文件夹nvm,nodejs

解压压缩包到C: odejsnvm vm

 

打开nvm中的【install.cmd】,出现命令窗口后根据提示点击回车,出现下述状态

在上面的目录中,新建一个settings.txt文件,里面的内容填充如下:

root:C:
odejsnvm
vm  
path:C:
odejsnvm
odejs  
arch: 64 
proxy: none

  

上方内容的解释:

  • root 配置为:当前 nvm.exe 所在的目录

  • path 配置为:node 快捷方式所在的目录

  • arch 配置为:当前操作系统的位数(32/64)

  • proxy 不用配置

配置淘宝镜像

由于nvm默认的下载地址http://nodejs.org/dist/是外国外服务器,速度非常慢,因而可以切换到淘宝的镜像,下载速度会快很多。

打开settings.txt,加入下面文件

 node_mirror: http://npm.taobao.org/mirrors/node/
 npm_mirror: https://npm.taobao.org/mirrors/npm/

  

 

第三步:配置环境变量

配置环境变量(右键 计算机 ->属性->高级系统设置->环境变量)

1)配置【NVM_HOME】环境变量

2)配置【NVM_SYMLINK】环境变量

3)把配置好的两个环境变量加到Path当中

在Path中填写 %NVM_HOME%;%NVM_SYMLINK%;

第四步:测试是否成功

打开cmd命令窗口(开始->运行->输入cmd 或 win键+r键->输入cmd)

在命令窗口中输入 nvm version

出现版本号后则为配置成功

 

第五步:用nvm安装nodejs

使用nvm安装node.js

在命令窗口输入 nvm install latest latest为最新版本

 

默认将下载的node.js存放到nvmde后的文件路径下,如

 

第六步使用Node.js

在命令行中输入nvm use 10.16.3表示使用版本为10.16.3的Node.js

 

linux环境下

环境:centos7.7 64位

通过 NVM 安装Node.js(推荐)

第一步安装nvm

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

  

修改为淘宝源

在~/.bashrc里添加

export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node

  

修改文件

[nick@naive ~]$ vi ~/.bashrc
  
# .bashrc
​
# Source global definitions
if [ -f /etc/bashrc ]; then
​
# export SYSTEMD_PAGER=
​
# User specific aliases and functions
​
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"  # This lo
ads nvm bash_completion
​
export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node

  


 

重新加载设置文件

source ~/.bashrc

  

 

第二步查看nvm是否安装成功

nvm --version 可查看版本

  

第三步安装nodejs

通过 nvm install <version>(版本号) 安装指定版本

nvm install 6.9.0 安装一个6.9.0版本的node

第四步测试node安装是否成功

[nick@naive ~]$ node -v
v12.16.1
​

  

NVM 的常用命令

安装指定版本的node:

nvm install 版本号 [arch]

  

比如:nvm install 4.2.2

 

卸载指定版本node:

nvm uninstall 版本号

  

 

切换使用指定版本的node,进行版本切换:

nvm use 版本号 [arch]

  

 

查看当前使用的 nvm 版本:

nvm -v

  

 

 

查看本地安装的所有的 node 版本:

nvm list 或者nvm ls

  

 

在 查看 node 的版本:

node -v

  

 

列出远程的node版本(linux下)

nvm ls-remote

  

 

原文地址:https://www.cnblogs.com/Nicholas0707/p/12535262.html