三.Node基础
Node是什么?
node是一个基于V8(JavaScript引擎) 的 JavaScript运行时环境
也就是说Node.js基于V8引擎来执行JavaScript的代码,但是不仅仅只有V8引擎:
前面我们知道V8可以嵌入到任何C ++应用程序中,无论是Chrome还是Node.js,事实上都是嵌入了V8引擎来执行JavaScript代码;
但是在Chrome浏览器中,还需要解析、渲染HTML、CSS等相关渲染引擎,另外还需要提供支持浏览器操作的API、浏览器自己的事件循环等;
另外,在Node.js中我们也需要进行一些额外的操作,比如文件系统读/写、网络IO、加密、压缩解压文件等操作;
Node的应用场景
应用一:目前前端开发的库都是以node包的形式进行管理;
应用二:npm、yarn、pnpm工具成为前端开发使用最多的工具;
应用三:越来越多的公司使用Node.js作为web服务器开发、中间件、代理服务器;
应用四:大量项目需要借助Node.js完成前后端渲染的同构应用;( ssr , nuxt框架 )
应用五:资深前端工程师需要为项目编写脚本工具(前端工程师编写脚本通常会使用JavaScript,而不是Python或者shell);
应用六:很多企业在使用Electron来开发桌面应用程序;
Node安装和管理
nvm 和 n
Node的输入和输出
输入 : node 文件 env=development yjx
在文件通过 : process.argv获取
process.argv[2] process.argv[3]
Node的全局对象(global)
比如module、exports、require()会在模块化中讲到;
比如Buffer后续会专门讲到;
特殊的全局对象
__dirname:获取当前文件所在的路径: 注意:不包括后面的文件名
__filename:获取当前文件所在的路径和文件名称: 注意:包括后面的文件名称
了解的全局对象
process : process提供了Node进程中相关的信息
定时器函数:在Node中使用定时器有好几种方式:
setTimeout(callback, delay[, ...args]):callback在delay毫秒后执行一次;
setInterval(callback, delay[, ...args]):callback每delay毫秒重复执行一次;
setImmediate(callback[, ...args]):callbackI / O事件后的回调的“立即”执行;
这里先不展开讨论它和setTimeout(callback, 0)之间的区别;
因为它涉及到事件循环的阶段问题,我会在后续详细讲解事件循环相关的知识;
process.nextTick(callback[, ...args]):添加到下一次tick队列中; 具体的讲解,也放到事件循环中说明
内置模块path
path模块用于对路径和文件进行处理,提供了方法。
采用的原因 :mac,linux,window上的路径是不一样的,为了处理他们的差异,我们要使用path模块
path常见的API :
1.从路径中获取信息:
dirname :获取文件的文件夹
basename :获取文件名
extname :获取文件扩展名
2.路径的拼接 : path.join()
3.路径的拼接 :path.resolve()
会把一个路径或路径片段的序列解析为一个绝对路径
给定的路径的序列是从右往左被处理的,后面每个path被依次解析,直到构造完成一个绝对路径
如果在处理完所有给定path的段之后,还没有生成绝对路径,则使用当前工作目录
生成的路径被规范化并删除尾部斜杠,零长度path段被忽略
如果没有path传递段,path.resolve()将返回当前工作目录的绝对路径
const path = require("path") const filepath = "c://abc/cba/nba.txt" //1.可以从一个路径中获取的信息 console.log(path.extname(filepath)) //.txt console.log(path.basename(filepath))//nba.txt console.log(path.dirname(filepath))//c://abc/cba //2.将多个路径拼接在一起 const path1 = "/abc/cba" const path1 = "../why/kobe/james.text" console.log(path.join(path1,path2)) // /abc/why/kobe/james.text //3.将多个路径拼接在一起,最终一定返回一个绝对路径 path。resolve console.log(path.resolve(path1,paht2))
本文来自博客园,作者:杨建鑫,转载请注明原文链接:https://www.cnblogs.com/qd-lbxx/p/16559867.html