邂逅Node.js开发;;官方对Node.js的定义:
Node.js是一个基于V8JavaScript引擎的JavaScript运行时环境。
也就是说Node.js基于V8引擎来执行JavaScript的代码,但是不仅仅只有V8引擎:
前面我们知道V8可以嵌入到任何C++应用程序中,无论是Chrome还是Node.js,事实上都是嵌入了V8引擎来执行JavaScript代码;
但是在Chrome浏览器中,还需要解析、渲染HTML、CSS等相关渲染引擎,另外还需要提供支持浏览器操作的API、浏览器自己的事件循环等;
另外,在Node.js中我们也需要进行一些额外的操作,比如文件系统读/写、网络IO、加密、压缩解压文件等操作;
;我们可以简单理解规划出Node.js和浏览器的差异:;我们来看一个单独的Node.js的架构图:
我们编写的JavaScript代码会经过V8引擎,再通过Node.js的Bindings,将任务放到Libuv的事件循环中;
libuv(UnicornVelociraptor—独角伶盗龙)是使用C语言编写的库;
libuv提供了事件循环、文件系统读写、网络IO、线程池等等内容;
;Node.js的快速发展也让企业对Node.js技术越来越重视,在前端招聘中通常会对Node.js有一定的要求,特别对于高级前端开发工程师,Node.js更是必不可少的技能:
应用一:目前前端开发的库都是以node包的形式进行管理;
应用二:npm、yarn、pnpm工具成为前端开发使用最多的工具;
应用三:越来越多的公司使用Node.js作为web服务器开发、中间件、代理服务器;
应用四:大量项目需要借助Node.js完成前后端渲染的同构应用;
应用五:资深前端工程师需要为项目编写脚本工具(前端工程师编写脚本通常会使用JavaScript,而不是Python或者shell);
应用六:很多企业在使用Electron来开发桌面应用程序;;Node.js是在2009年诞生的,目前最新的版本是分别是LTS16.15.1以及Current18.4.0:
LTS版本:(Long-termsupport,长期支持)相对稳定一些,推荐线上环境使用该版本;
Current版本:最新的Node版本,包含很多新特性;
这些我们选择什么版本呢?
如果你是学习使用,可以选择current版本;
如果你是公司开发,建议选择LTS版本(面向工作,选择LTS版本);
Node的安装方式有很多:
可以借助于一些操作系统上的软件管理工具,比如Mac上的homebrew,Linux上的yum、dnf等;
???可以直接下载对应的安装包下载安装;
我们选择下载安装,下载自己操作系统的安装包直接安装就可以了:
window选择.msi安装包,Mac选择.pkg安装包,Linux会在后续部署中讲解;
安装过程中会配置环境变量(让我们可以在命令行使用);
并且会安装npm(NodePackageManager)工具;
;在实际开发学习中,我们只需要使用一个Node版本来开发或者学习即可。
但是,如果你希望通过可以快速更新或切换多个版本时,可以借助于一些工具:
nvm:NodeVersionManager;
n:InteractivelyManageYourNode.jsVersions(交互式管理你的Node.js版本)
问题:这两个工具都不支持window
n:n?isnotsupportednativelyonWindows.
nvm:nvm?doesnotsupportWindows
Window的同学怎么办?
针对nvm,在GitHub上有提供对应的window版本:/coreybutler/nvm-windows
通过nvminstalllatest安装最新的node版本
通过nvmlist展示目前安装的所有版本
通过nvmuse切换版本;安装n:直接使用npm安装即可
安装最新的lts版本:
前面添加的sudo是权限问题;
可以两个版本都安装,之后我们可以通过n快速在两个版本间切换;
;如果我们编写一个js文件,里面存放JavaScript代码,如何来执行它呢?
目前我们知道有两种方式可以执行:
将代码交给浏览器执行;
将代码载入到node环境中执行;
如果我们希望把代码交给浏览器执行:
需要通过让浏览器加载、解析html代码,所以我们需要创建一个html文件;
在html中通过script标签,引入js文件;
当浏览器遇到script标签时,就会根据src加载、执行JavaScript代码;
如果我们希望把js文件交给node执行:
首先电脑上需要安装Node.js环境,安装过程中会自动配置