三.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))

 

posted @ 2022-08-08 11:38  杨建鑫  阅读(24)  评论(0编辑  收藏  举报