安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

三面面试官运行npmrunxxx的时候发生了什么?

5月9日 菩提门投稿
  事情是这样的,直接开讲
  面试官:npmrunxxx的时候,发生了什么?讲得越详细越好。
  我(心想,简单啊):首先,DNS解析,将域名解析成IP地址,然后
  TCP连接,TCP三次握手。。。
  面试官:停停,我问的不是从URL输入到页面展现到底发生什么?,是npmrunxxx的时候,发生了什么。
  我(尴尬,条件反射地以为是问的八股文):emmmm,我记得npmrunxxx的时候,首先会去项目的package。json文件里找scripts里找对应的xxx,然后执行xxx的命令,例如启动vue项目npmrunserve的时候,实际上就是执行了vuecliserviceserve这条命令。(好险,幸好这点常识我还是懂的)
  package。json文件{name:h5,version:1。0。7,private:true,scripts:{serve:vuecliserviceserve},}
  面试官:嗯,不错,那为什么不直接执行vuecliserviceserve而要执行npmrunserve呢?
  我(支支吾吾):emm,因为npmrunserve比较简短,比较好写。
  面试官:你再想想。
  我(啊?不对吗,对哦,我想起来了):因为直接执行vuecliserviceserve,会报错,因为操作系统中没有存在vuecliservice这一条指令
  面试官:哦,对对对,不错不错,哟西哟西!
  我(嘿嘿,稳了,这次我要30k):嘻嘻!
  面试官:那既然vuecliservice这条指令不存在操作系统中,为什么执行npmrunserve的时候,也就是相当于执行了vuecliserviceserve,为什么这样它就能成功,而且不报指令不存在的错误呢?
  我(啊?要不你还是把我鲨了吧,不想再勉强作回答):不好意思,这个我还没了解过。
  面试官:emmm,好吧,没关系,我们做下一道算法题吧:。。。。
  。。。。
  后面无关此次文章的内容,就省略过了。
  面试官:好的,此处面试到此结束,我们会在一周内回复您的面试结果
  哔哔哔。。。(电话挂断)
  唉。看来是凉了
  为什么执行npmrunserve的时候,这样它就能成功,而且不报指令不存在的错误呢?
  我赶紧问问了大佬朋友这一过程到底是发生了什么
  经过一番讨论,终于找到了答案。
  不服输的我,赶紧回拨了面试官的电话号码。
  我:喂,面试官,您好,我已经找到答案了,可以麻烦您再听一下吗?
  面试官:嗯,可以啊,请讲。
  我:我们在安装依赖的时候,是通过npmixxx来执行的,例如npmivuecliservice,npm在安装这个依赖的时候,就会nodemodules。bin目录中创建好vuecliservice为名的几个可执行文件了。
  。bin目录,这个目录不是任何一个npm包。目录下的文件,表示这是一个个软链接,打开文件可以看到文件顶部写着!binsh,表示这是一个脚本。
  由此我们可以知道,当使用npmrunserve执行vuecliserviceserve时,虽然没有安装vuecliservice的全局命令,但是npm会到。nodemodules。bin中找到vuecliservice文件作为脚本来执行,则相当于执行了。nodemodules。binvuecliserviceserve(最后的serve作为参数传入)。
  面试官:可以啊,真不错,但是我还想继续问问,你说。bin目录下的文件表示软连接,那这个bin目录下的那些软连接文件是哪里来的呢?它又是怎么知道这条软连接是执行哪里的呢?
  我(窃喜,这个我们刚刚也讨论了):我们可以直接在新建的vue项目里面搜索vuecliservice
  可以看到,它存在项目最外层的packagelock。json文件中
  从packagelock。json中可知,当我们npmi整个新建的vue项目的时候,npm将binvuecliservice。js作为bin声明了。
  所以在npminstall时,npm读到该配置后,就将该文件软链接到。nodemodules。bin目录下,而npm还会自动把nodemodules。bin加入PATH,这样就可以直接作为命令运行依赖程序和开发依赖程序,不用全局安装了。
  假如我们在安装包时,使用npminstallgxxx来安装,那么会将其中的bin文件加入到全局,比如createreactapp和vuecli,在全局安装后,就可以直接使用如vuecliprojectName这样的命令来创建项目了。
  面试官:搜噶,也就是说,npmi的时候,npm就帮我们把这种软连接配置好了,其实这种软连接相当于一种映射,执行npmrunxxx的时候,就会到nodemodulesbin中找对应的映射文件,然后再找到相应的js文件来执行。
  我(疯狂点头):嗯嗯,是的,就是这样
  面试官:我有点好奇。刚刚看到在nodemodulesbin中有三个vuecliservice文件。为什么会有三个文件呢?
  我:如果我们在cmd里运行的时候,windows一般是调用了vuecliservice。cmd,这个文件,这是windows下的批处理脚本:ECHOoffGOTOstart:finddp0SETdp0dp0EXITb:startSETLOCALCALL:finddp0IFEXISTdp0ode。exe(SETprogdp0ode。exe)ELSE(SETprognodeSETPATHEXTPATHEXT:;。JS;;)endLocalgotoundefined2NULtitleCOMSPECprogdp0。。vuecliservicebinvuecliservice。js
  所以当我们运行vuecliserviceserve这条命令的时候,就相当于运行nodemodules。binvuecliservice。cmdserve。
  然后这个脚本会使用node去运行vuecliservice。js这个js文件
  由于node中可以使用一系列系统相关的api,所以在这个js中可以做很多事情,例如读取并分析运行这条命令的目录下的文件,根据模板生成文件等。unix系默认的可执行文件,必须输入完整文件名vuecliservicewindowscmd中默认的可执行文件,当我们不添加后缀名时,自动根据pathext查找文件vuecliservice。cmdWindowsPowerShell中可执行文件,可以跨平台vuecliservice。ps1
  面试官:原来如此,不错嘛小伙子,短短时间内就掌握清楚了,看来学习能力很强,不错不错,我很看好你,我会催hr尽快回复你的。先这样了,拜拜
  我(欣喜若狂,功夫不负有心人啊):好啊,好啊,拜拜
  哔哔哔。。。(电话挂断)
  过了三十分钟。。。。
  今天是个好日子,心想的事儿都能成,今天是个好日子,打开了家门咱迎春风。。。(手机铃声响起)。
  我:喂,您好。
  hr:您好,我是xxx公司的hr,根据你面试的优秀表现,恭喜你获得了我司的offer,经过我最大的努力,我给你争取到了最大的薪资,薪资是月薪3500,您看满意吗?
  我:。。。。
  哔哔哔。。。。(电话挂断)
  tmd,c
  总结运行npmrunxxx的时候,npm会先在当前目录的nodemodules。bin查找要执行的程序,如果找到则运行;没有找到则从全局的nodemodules。bin中查找,npmigxxx就是安装到到全局目录;如果全局目录还是没找到,那么就从path环境变量中查找有没有其他同名的可执行程序。参考文章
  https:blog。51cto。comu150775334531157
  https:juejin。cnpost6971723285138505765
  原文地址:
  https:www。cnblogs。comsunnyluckyp16054660。html
投诉 评论 转载

三面面试官运行npmrunxxx的时候发生了什么?事情是这样的,直接开讲面试官:npmrunxxx的时候,发生了什么?讲得越详细越好。我(心想,简单啊):首先,DNS解析,将域名解析成IP地址,然后TCP连接……面对国家级黑客攻击?Apple会作安全提示Apple用户每天用手机、电脑上网,都有机会被黑客攻击,而近年由国家于背后支持的所谓国家级攻击,亦渐见频繁。Apple有见及此,宣布会向潜在被攻击的用户,主动发出安全提示通知。……无限续航?雅迪新一代老年代步车,一车多用,全国上牌,不要驾照阅读本文前,请您先点击上面的关注,这样您就可以免费收到我们的最新内容,感谢支持随着电动车、三轮车上路规范越来越严格,车主不仅需要给车辆上牌,还需要持证上路。但对很多上了年……东数西算概念持续活跃,云计算ETF(516510)大涨3。5金融界2月21日消息,今日早盘A股市场小幅高开后走势震荡,北上资金小幅净流出,截至上午10点北向资金单日净流出18。29亿元。行业方面,计算机、通信、传媒、国防军工等板块大幅领……终于现货了!双模5G7nm麒麟芯片鸿蒙系统,网友终于等到了很多网友都说华为5G手机没有现货,其实并非如此,如今华为某东自营已经开始现货销售华为nova7这款5G手机了,目前8GB128GB版,华为仅售2999元,跟之前被第三方商家公布……苹果窒息操作,iPadmini6取消128G,安卓平板还得继不可否认,苹果的产品对于市场上其他品牌的同类产品有着很强的指导作用。比如iPhone13的价格出来后,在五六千这个价位本来比较缺货的一些安卓手机立马就有货了。所以,当大家……苹果13Promax是否值得购买?看完实际测评你就知道了2021年9月份苹果公司给广大消费者带来了一款名为苹果13proMax的手机机型,相信很多朋友都已经入手了这款手机。那么问题来了,苹果13proMax这款手机的实际体验怎么样呢……手把手教你在iPhone上创建Workflow脚本,简直不要介绍Workflow是一款应用软件,2015年AppStore最佳应用,iPhone平台最具创新应用。2017年3月,Workflow被苹果公司收购。〔1〕苹果不只……选华为?还是苹果,宿命之争!客观对比今年的iphone13因为价格原因大放异彩,抢购的人啊,有点早晨大妈冲超市的意思,网上也就出了相关的视频,可见降价之后的苹果还是有很大吸引力的,另外一家华为,国内手机的佼佼者,……硬核解析超纲的AIDay,特斯拉的视觉智能野心深度撰文李逸之编辑匡吉8月20日,特斯拉预热已久的AIDay如期举行。一如以往的投资者日公开活动,AIDay同样以秀技术肌肉为主,以顺便招人为辅。然而,今年的AIDay……中国建造大型太空望远镜奇妙知识季我看到媒体报道,中国正在建造第一台大型太空光学望远镜,正式的名字叫做载人空间站工程巡天空间望远镜,预计在2024年发射进入近地轨道,和中国空间站在同一个轨道上飞……预计6499起步!华为P60Pro或将用上顶级2K分辨率直屏自从2018年,华为发布了旗下顶级旗舰手机Mate20Pro之后,华为的每一代的旗舰系列手机是Pro版本均采用曲面屏幕。其中,华为P40Pro甚至将双曲面升级至四曲面,而华为M……
社评为何华尔街刚出新规,滴滴就启动退市?没有对比就没有伤害!V40轻奢版和OPPOA95,同一处理器无惧续航,高端智能驾驶,新能源标杆核酸检测技术上新较传统方法漏判误判率更低Pythonenumerate()使用计数器简化循环区块链BSC匿名币独角兽,DCS是如何成为早期红利的价值捕获智能合约开发笔记Python包管理工具开会还在用手写?打开手机这个功能,会议纪要自动转成文字苹果自研芯片再扩版图动了老朋友的奶酪盾牌座uy能容纳6500兆个地球,如果地球也有这么大,那地球大厂也内卷?看裁员潮背后互联网企业的嬗变

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利