面试官问你关于node的那些事(基础篇)

面试官问你关于node的那些事(基础篇)

前沿:文章的起源,是树酱的朋友在最近面试中对部分岗位中对node掌握程度要求感到很“慌 ”,当然node已渐渐从很多公司招聘的“啊拼音加分项”转变为“强指标”,“慌”的原因无非是因为平时项目无需用到或者说少用node,再加上我们的知识吸收,大javascript百炼成仙免费阅读多都是碎片化的知识拼接起来,缺少一个完整体系化的梳理,借此机会,重新梳理一下,当然更多的还需要你参与实战,本文前端开发需要掌握什么技术是基础篇。

1.饭前点心 🥧

👨提问:最近Deno很火,会不会替代node的替代品,学njavascript什么意思ode是不是没有前途?

莫慌,Node依旧是社区热捧的服务器端 JavaScript 运行环境,Deno的出现其实本质上是完善现阶段的Node(新轮子&#x前端开发入门薪水ff09;,包括原生支持TS、安全性、支持ES Module浏览器模jsonp块、等特征。万变不离其宗,虽然有了Deno,将来可能就不需要 Node.js,但是新事物总是需要不断推演和考验后,中间件技术所以这一点而言,Node短时间内很难被替换,毕API竟背后依附着强大社区的支撑

关于 Deno 更多了解,你可以看

  • Deno 正式发布,彻底弄明白和 node 的区别
  • Deno 运行时入门教程:Node.js 的替代品json是什么意思

2.正餐 🍔

通过一些node常见的问题跟你聊聊一些基本知识

2.1 node 如何获取命令行传来的参数

答案是:面板数据格式;process.argv。process是一个全局变量,它提供当前 Node.js 进程的有关信息,而process.argv 属性则返回一个数组,数中间件组中的信息包括启动Node.js进程时的命令行参数

jsonp

举个场景:我们需要在script定义一个node的命令,然后执行前端开发有前景吗改文中间件是什么意思件后获取不同的参数

面试官问你关于node的那些事(基础篇)

拓展:为什么splice(2)?让我们看看其他参数的数值

  • process.argv[0] : 返回启动Node.js进程的可执API行文件所在的绝对路径
  • process.argv[1] : 为当前执行的JavaScript文件路径
  • process.argv.splice(2前端开发工程师) : 移除前两者后,剩余的元素为其他命令行参数(也就是我们自定义部分)

面试官问你关于node的那些事(基础篇)

关于获取命令行传来的参数还可以结合commanderjavascript什么意思commander.parjson数据se(prapi是什么意思ocess.argv);

2.2 node有哪些相json文件是干什么的关的文件路径?

答案是:Node 中的文件路径有 __dirname, __filename, process.cwd(), ./ 或者 ../下面用一个例子来介绍这几javascript百炼成仙免费阅读种文件路径的区别

先看看我们当前运行的目录的结构

KSDK/
    -src/
        -test.js

在 test.js 里写下如下的code👇

面试官问你关于node的那些事(基础篇)

然后分别在src下运行和KSDK下运行对比下结果如何?

  • 在src目录下运行

面试官问你关于node的那些事(基础篇)

  • 在KSDK目录下运行

面试官问你关于node的那些事(基础篇)

对比看到,只有我们后两者产生变化,可以得出如下结论 🚀

  • __dirname: 总是返回被执行的 js 所在文件夹的绝对路径
  • __filename: 总是返回被执行的 js 的绝对路径
  • process.cwd(): 总是返回运行 node 命令时所在的文件夹的绝对路径

2.3 node相关path API 有哪些?javascript:void(0)

答案:path 模块提供了一些实用工具,用于处理文件和目录的路径,常用api有:path.dirname中间件是什么意思path.joinpath.resolve 其他的看文档 Path API

  • path.dirname(): 返回 path 的目录名
  • path.join():所有给定的 path 片段连接到一起javascriptf0c;然后规范化生成中间件是什么意思的路径
  • path.resolve():方法会将路径或路径片段的序列解析为绝对路径,中间件是什么;解析为前端开发有前景吗相对于当前目录的绝对路径,相当于cd命令

我们用个简单的demo来区分

面试官问你关于node的那些事(基础篇)

我们看到path.join(__dirname, '../lib/common.js')path.resolve(__djson是什么意思irname, '../l前端开发入门薪水ib/common.js')返回的结果相同,难道可以相互替换?你在看下面这中间件漏洞个例子👇,你或许会清晰些

路径还是上面演示的路径

  • join是把各个path片段连接在一起, resolve把&json文件是干什么的#xff0f;当成根目录
path.join('/a', '/b') // '/a/b'
path.resolve('/a', '/b') //'/b'
  • join是直接拼接字段,resolve是解析路径并返回
path.join("a","b")  // "a/b"
path.resolve("a", "b") // "/Users/tree/Documents/infrastructure/KSDK/src/a/b"

2.4 node的文件读取怎么做的?

答案:通过fs文件系统模块提供的API,也是node中重要的模块之一,fs模块主要用于文件的读写、移动、复制、删除、重命名等操作。

通过一个简单的重命名apirename使用,之前在做脚手架中使用到

面试官问你关于node的那些事(基础篇)

⏰需要注意的是,使用require('fs')载入fs模块,fs模块中所有方法都有同步和异步两种形式,刚刚我们展示的rename是异步方法的调用,因为在繁忙的进程中,应使用异步方法, 同步的版本会阻塞整啊拼音个进程(停止所有的连接),当然fs.rename对应javascript是干什么的的同步方法就是fs.renameSync

下面我们看一个同步方法的演示,判断文件是否存在

面试官问你关于node的那些事(基础篇)

还有一点要注意的是,无论同步异步尽量对抛出的异常做相应的处理

2.5 node的url模块是用来干嘛的?

答案是:用来对url的字符串解析、url组成等功能,主要包括以下几个API。url.pajavascriptrse()url.format()

  • url.parse:可以将一个url的字符串解析并返回一个url的对象
  • url.format:将传入的url对象编程一个url字符javascript:void(0)串并返回

url.parse作为例子:阿飘是什么意思

面试官问你关于node的那些事(基础篇)

解析出来结果

Url {
  protocol: 'http:',
  slashes: true,
  auth: null,
  host: 'baidu.com:8080',
  port: '8080',
  hostname: 'baidu.com',
  hash: '#node',
  search: '?query=js',
  query: 'query=js',
  pathname: '/test/h',
  path: '/test/h?query=js',
  href: 'http://baidu.com:8080/test/h?query=js#node'
}

2.6数据格式怎么设置 node的http模块创建服务与Express或Koa框架有何不同?

答案中间件是什么是:express是一个服务端框架,框架简单封装了node的http模块,express支持node原生的写法,express不仅封装好服务器,还封装了中间件、路由等特征,方便开发web数据格式是什么意思服务器,换句话说express矢量数据格式 = http模块 + 中间件 + 路由

先看看http模块是如何实现一个简单的服务器

面试官问你关于node的那些事(基础篇)

运行3000端口 即可访问到浏览器打印出hjavascriptello node.js

接下来看看express如何实现

面试官问你关于node的那些事(基础篇)

以上就实现一个简单的服务端逻辑,包含中间件、路由设置

2.7 Express和Koa框架中间件有什么不同ÿAPI1f;

答案中间件是什么javascript:void(0)中间件: app.use方法就是往中间件队列中塞入新的中间件,express中间件处理方式是线性的,next过后继续寻找下一个中间件,当然如果没有调用next()javascript的话啊拼音f0c;就不会调用下一个函数json怎么读了,调用就会被终止

  • express 中间件:是通过 next 的机制,即前端开发入门薪水上一个中间件会通过 next 触发下一个中间件
  • koa2 中间件:是通过 async await 实现的,中间件执行顺序是“洋葱圈”模型(推荐&#javascript百炼成仙免费阅读xff09;

面试官问你关于node的那些事(基础篇)

我们看下k中间件的主要作用和功能oa2下中间件是什么意思面这个简单的例子,你可以对比下Express的实现

面试官问你关于node的那些事(基础篇)

看看数据格式转换输出的日志

面试官问你关于node的那些事(基础篇)

2.8 什么是模版引擎?

答案是:模板啊拼音引擎是一个通过结合页面模板、要展示的数据生成HTML页面的工具,本质上是后端渲染(javascript百炼成仙;SSR)的需求,加上Node渲染页面本身是纯静态的,当我们需要页面多样化、更灵活,我们就需要使用模板引擎来强化页面,更好json数据的凸显服务端渲染的优势

常见主流模版引擎有:

  • art-template 官方文档 :号称效率最高的,模版引擎
  • ejs 官方文档:是一个JavaScript模板库,用来从JSO前端开发软件N数据中生成HTML字符串。
  • pug 官方文档:是一款健壮、灵活、功能丰富的模板引擎,专门为 Node.js 平台开发

未完待续...