Node.js不是一门新语言,而是一门技术
- 对于我们代码来说,浏览器其实就是一个运行环境;
- 在每一个浏览器中如果想正常执行js代码必须要有
解析引擎
,在chrome
浏览器中是通过v8解析引擎
执行和解析js代码; - 内置API是由运行环境提供的特殊接口,只能在所属的运行环境中被调用;
- 内置API有DOM、BOM、XMLHttpRequest、Canvas等等。
补充:DOM和BOM的区别
(1)BOM(Browser Object Model)浏览器对象模型
BOM和浏览器关系密切。浏览器的很多东西可以通过JavaScript控制的,例如打开新窗口、打开新选项卡(标签页)、关闭页面、把网页设为主页、或加入收藏夹等,这些涉及到的对象就是BOM;
(2)DOM(Document Object Model)文档对象模型
DOM和HTML文档有关。网页是由服务器发送给客户端浏览器的,无论用什么浏览器,接收到的HTML都是一样的,所以DOM和浏览器无关,它关注的是网页本身的内容。
Node.js is a JavaScript runtime built on Chrome’s V8 JavaScript engine.
- 浏览器是JavaScript的前端运行环境;
- Node.js是JavaScript的后端运行环境;
- Node.js中无法调用DOM和BOM等浏览器内置API;
- 其自身内置的API有fs、path、http等等。
Node.js可以做什么
- node.js作为一个js的运行环境,仅仅提供了基础功能的api。然后基于node.js提供的这些基础后,很多强大的工具和框架如雨后春笋,层出不穷。
- npm(全称 Node Package Manager,即“node包管理器”)是Nodejs默认的、以JavaScript编写的软件包管理系统。
- js基础语法+node.js内置api模块+第三方api模块。
- fs是指系统文件的读写,path指用来处理路径的模块,http指用来创建web服务器的模块。
- 在终端中输入命令:
node+文件路径
。
fs文件系统模块
- js没有操作文件的能力,但node可以做到;
- node提供了操作文件系统模块;
- fs模块中所有的操作都有两种形式可供选择:同步和异步;
- 同步文件系统会阻塞程序的执行,也就是除非操作完毕,否则不会向下执行代码;
- 异步文件系统不会阻塞程序的执行,而是在操作完成时,通过回调函数将结果返回,然后可以立即向下执行代码;
- 一般情况我们使用的都是异步方式;
- 在使用fs模块操作文件时,如果提供的操作路径是以
./
或../
开头的相对路径,容易出现路径动态拼接错误的问题; - 原因在于代码在运行的时候,会以执行node命令所在处的目录,动态拼接出被操作文件的完整路径;
- 在使用fs模块操作文件时,直接提供完整的路径,从而防止路径动态拼接的问题。