我们已经知道了nodejs是一个js的运行环境,nodejs可以使得js直接运行于操作系统,而非浏览器。
所以nodejs就是js语言+一些js运行在操作系统上的必要组件或功能。
学习nodejs就是学习js语言+nodejs自带的功能库。
大概需要学习的模块如下:
- js语言:相信大家都会,但是不精通
- nodejs的模块:组件化管理js文件的机制
- 包:package
- 包管理:npm
- 约定大于配置:nodejs的开发约定
- nodejs提供的库
- 了解概念,历史,周边
- hello world跑起来,先跑起来,不管原理和实现
- 学语法、思想、类库
- 反复,学习加实践,知行合一
- 实践实践还是实践
了解nodejs前置知识
Node.js 与浏览器的区别
浏览器和 Node.js 均使用 JavaScript 作为其编程语言。
构建运行于浏览器中的应用程序与构建 Node.js 应用程序完全不同。
尽管都是 JavaScript,但一些关键的差异使体验相当不同。
从广泛使用 JavaScript 的前端开发者的角度来看,Node.js 应用程序具有巨大的优势:使用单一语言轻松编程所有一切(前端和后端)。
你会拥有巨大的机会,因为全面、深入地学习一门编程语言并通过使用同一语言完成 web(无论是在客户端还是在服务器)上的所有工作是非常困难的,你会处于独特的优势地位。
不同的还有生态系统。
在浏览器中,大多数时候做的是与 DOM 或其他 Web 平台 API(例如 Cookies)进行交互。 当然,那些在 Node.js 中是不存在的。 没有浏览器提供的document
、window
、以及所有其他的对象。
而且在浏览器中,不存在 Node.js 通过其模块提供的所有不错的 API,例如文件系统访问功能。
另一个很大的不同是,在 Node.js 中,可以控制运行环境。 除非构建的是任何人都可以在任何地方部署的开源应用程序,否则你能知道会在哪个版本的 Node.js 上运行该应用程序。 与浏览器环境(你无法选择访客会使用的浏览器)相比起来,这非常方便。
这意味着可以编写 Node.js 版本支持的所有现代的 ES6-7-8-9 JavaScript。
由于 JavaScript 发展的速度非常快,但是浏览器发展得慢一些,并且用户的升级速度也慢一些,因此有时在 web 上,不得不使用较旧的 JavaScript / ECMAScript 版本。
可以使用 Babel 将代码转换为与 ES5 兼容的代码,再交付给浏览器,但是在 Node.js 中,则不需要这样做。
另一个区别是 Node.js 使用 CommonJS 模块系统,而在浏览器中,则还正在实现 ES 模块标准。
在实践中,这意味着在 Node.js 中使用require()
,而在浏览器中则使用import
。V8 JavaScript 引擎
V8 是为 Google Chrome 提供支持的 JavaScript 引擎的名称。 当使用 Chrome 进行浏览时,它负责处理并执行 JavaScript。
V8 提供了执行 JavaScript 的运行时环境。 DOM 和其他 Web 平台 API 则由浏览器提供。
很酷的是,JavaScript 引擎独立于托管它的浏览器。 此关键的特性推动了 Node.js 的兴起。 V8 于 2009 年被选为为 Node.js 提供支持的引擎,并且随着 Node.js 的爆炸性发展,V8 成为了现在为大量的服务器端代码(使用 JavaScript 编写)提供支持的引擎。
Node.js 的生态系统非常庞大,得益于此,V8 还为桌面应用程序(通过 Electron 等项目)提供支持。其他 JS 引擎
其他浏览器也有自己的 JavaScript 引擎:
- Firefox 具有 SpiderMonkey
- Safari 具有 JavaScriptCore(又称为 Nitro)
- Edge 具有 Chakra
还有很多其他的。
所有这些引擎都实现了 ECMA ES-262 标准(又称为 ECMAScript),这是 JavaScript 使用的标准。
对性能的追求
V8 使用 C++ 编写,并且不断地被改进。 它是可移植的,且可运行于 Mac、Windows、Linux 和其他一些系统。
在此 V8 的介绍中,省略了 V8 的实现细节:可以去更具权威性的网站(例如 V8 官方网站)上查看。
与其他 JavaScript 引擎一样,V8 也在不断地发展以加速 Web 和 Node.js 的生态系统。
在 web 上,性能竞赛一直持续了很多年,作为用户和开发者从这场竞争中受益匪浅,因为年复一年地获得了更快、更优化的机器。
编译
JavaScript 通常被认为是一门解释型的语言,但是现代的 JavaScript 引擎不再只是解释 JavaScript,也会对其进行编译。
这从 2009 年开始就一直在发生,当时 SpiderMonkey JavaScript 编译器被添加到 Firefox 3.5 中,所有人都跟进了这个想法。
JavaScript 是由 V8 在其内部编译的,使用了即时(JIT)编译以加快执行速度。
自 2004 年 Google 地图的引入以来,JavaScript 已经从一门通常执行几十行代码的语言演变为能在浏览器中运行具有成千上万行代码的完整的应用程序。
现在,应用程序可以在浏览器中运行数小时,而不仅仅是一些表单验证规则或简单的脚本。
在这个新世界中,编译 JavaScript 非常有意义,因为尽管可能需要多花费一点时间来为 JavaScript 做准备,但是一旦完成,则它会比纯解释型的代码具有更高的性能。
使用 Node.js 需要了解多少 JavaScript
作为初学者,很难达到对编程能力有足够自信的地步。
在学习编码的同时,可能还会对 JavaScript 和 Node.js 的边界感到困惑。
建议在深入研究 Node.js 之前,对 JavaScript 的主要概念有所了解:
- 词汇结构
- 表达式
- 数据类型
- 变量
- 函数
- this
- 箭头函数
- 循环
- 作用域
- 数组
- 模板字面量
- 分号
- 严格模式
- ECMAScript 6、2016、2017
具备这些概念,无论是在浏览器还是在 Node.js 中,都会成为一名熟练的 JavaScript 开发者。
以下概念也是理解异步编程的关键,异步编程是 Node.js 的基本组成部分:
- 异步编程与回调
- 定时器
- Promise
- Async 与 Await
- 闭包
- 事件循环
安装
推荐nodejs中文网下载,网速快:http://nodejs.cn/download/
Windows平台安装nodejs
下载.msi文件,图形化界面,下一步下一步安装即可。
安装完如果没有配置path路径,自行配置path路径即可。
检查是否安装成功,cmd.exe 运行,输入 ```git node -v
npm -v
<a name="YtP6a"></a>
## Mac OS 上安装
你可以通过以下两种方式在 Mac OS 上来安装 node:
- 1、在[官方下载网站](https://nodejs.org/en/download/)下载 pkg 安装包,直接点击安装即可。
- 2、使用 brew 命令来安装:
```git
brew install node
Linux上安装nodejs
多种安装方式,你可以选择:
- 官方下载已经编译好的包,直接使用
- 下载nodejs的源码,自己编译
- 使用apt或者yum等包管理工具安装nodejs
直接使用已编译好的包
Node 官网已经把 linux 下载版本更改为已编译好的版本了,我们可以直接下载解压后使用:
解压文件的 bin 目录底下包含了 node、npm 等命令,我们可以使用 ln 命令来设置软连接:# wget https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.xz // 下载
# tar xf node-v10.9.0-linux-x64.tar.xz // 解压
# cd node-v10.9.0-linux-x64/ // 进入解压目录
# ./bin/node -v // 执行node命令 查看版本
v10.9.0
ln -s /usr/software/nodejs/bin/npm /usr/local/bin/
ln -s /usr/software/nodejs/bin/node /usr/local/bin/
Ubuntu 源码安装 Node.js
以下部分我们将介绍在 Ubuntu Linux 下使用源码安装 Node.js 。 其他的 Linux 系统,如 Centos 等类似如下安装步骤。
在 Github 上获取 Node.js 源码:
$ sudo git clone https://github.com/nodejs/node.git
Cloning into 'node'...
修改目录权限:
$ sudo chmod -R 755 node
使用 ./configure 创建编译文件,并按照:
$ cd node
$ sudo ./configure
$ sudo make
$ sudo make install
查看 node 版本:
$ node --version
v0.10.25
Ubuntu apt-get命令安装
命令格式如下:
sudo apt-get install nodejs
sudo apt-get install npm
CentOS 下源码安装 Node.js
1、下载源码,你需要在https://nodejs.org/en/download/下载最新的Nodejs版本,本文以v0.10.24为例:
cd /usr/local/src/
wget http://nodejs.org/dist/v0.10.24/node-v0.10.24.tar.gz
2、解压源码
tar zxvf node-v0.10.24.tar.gz
3、 编译安装
cd node-v0.10.24
./configure --prefix=/usr/local/node/0.10.24
make
make install
4、 配置NODEHOME,进入profile编辑环境变量
vim /etc/profile
设置 nodejs 环境变量,在 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL_ 一行的上面添加如下内容:
#set for nodejs
export NODE_HOME=/usr/local/node/0.10.24
export PATH=$NODE_HOME/bin:$PATH
:wq保存并退出,编译/etc/profile 使配置生效
source /etc/profile
验证是否安装配置成功
node -v
输出 v0.10.24 表示配置成功
npm模块安装路径
/usr/local/node/0.10.24/lib/node_modules/
注:Nodejs 官网提供了编译好的 Linux 二进制包,你也可以下载下来直接应用。