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/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:\nodejsnvm,在nodejsnvm\nvm下面创建两个文件夹nvm,nodejs
解压压缩包到C:\nodejsnvm\nvm
打开nvm中的【install.cmd】,出现命令窗口后根据提示点击回车,出现下述状态
在上面的目录中,新建一个settings.txt
文件,里面的内容填充如下:
root:C:\nodejsnvm\nvm path:C:\nodejsnvm\nodejs 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
posted on 2020-03-20 22:09 Nicholas-- 阅读(6931) 评论(0) 编辑 收藏 举报