05-前端工程化基础.pdfVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

05-前端⼯程化-常⻅⾯试题

1.Node基础

1.1说说Node是什么?和浏览器有什么区别和关系?

Node.js是⼀个基于V8JavaScript引擎的JavaScript运⾏时环境

V8可以嵌⼊到任何C++应⽤程序中,⽆论是Chrome还是Node.js,事实上都是嵌⼊了V8引擎

来执⾏JavaScript代码;

但是在Chrome浏览器中,还需要解析、渲染HTML、CSS等相关渲染引擎,另外还需要提供

⽀持浏览器操作的API、浏览器⾃⼰的事件循环等

在Node.js中我们也需要进⾏⼀些额外的操作,⽐如⽂件系统读/写、⽹络IO、加密、压缩解

压⽂件等操作

在浏览器中,全局变量都是在window上的,⽐如有document、setInterval、setTimeout、

alert、console等

在浏览器中执⾏的JavaScript代码,如果我们在顶级范围内通过var定义的⼀个属性,默认会

被添加到window对象上。

在Node中,我们也有⼀个global属性,并且看起来它⾥⾯有很多其他对象

在node中,我们通过var定义⼀个变量,它只是在当前模块中有⼀个变量,不会放到全局中

1.2说说你对模块化开发的理解

模块化开发最终的⽬的是将程序划分成⼀个个⼩的结构(模块)

这个结构中编写属于⾃⼰的逻辑代码,有⾃⼰的作⽤域,定义变量名词时不会影响到其他的结构

可导出变量,函数,对象等给其他模块⽤,也可导⼊其他模块中的变量,函数,对象

按照这种结构划分开发程序的过程,就是模块化开发的过程

早期是没有模块化,带来⼀些问题

命名冲突-⽴即执⾏函数-⾃定义模块-没有规范

社区中模块化规范:CommonJS/AMD/CMD

ES6中推出模块化:ESModule

1.3什么是yarn和npm?为什么要⽤yarn代替npm呢?

npm是与Node.js⾃带的默认包管理器,它有⼀个⼤型的公共库和私有库,存储在npmregistry

的数据库中(官⽅默认中⼼库/,国内淘宝镜像http://registry.npm.tao

/),⽤户可以通过npm命令⾏访问该仓库。在npm的帮助下,⽤户可以轻松管理项⽬

中的依赖项。

yarn也是⼀个包管理器,是由Facebook、Google、Exponent和Tilde联合推出了⼀个新的JS包

管理⼯具,它有如下的优点:

速度快,⽀持并⾏安装。⽆论npm还是Yarn在执⾏包的安装时,都会执⾏⼀系列任务。

npm是按照队列执⾏每个package,也就是说必须要等到当前package安装完成之后,才

能继续后⾯的安装。⽽Yarn是同步执⾏所有任务,提⾼了性能。

离线模式,如果之前已经安装过⼀个软件包,⽤Yarn再次安装时之间从缓存中获取,就不⽤

像npm那样再从⽹络下载了。

yarn是为了弥补早期npm的⼀些缺陷⽽出现的,因为早期的npm存在很多的缺陷,⽐如安装依

赖速度很慢、版本依赖混乱等等⼀系列的问题。虽然从npm5版本开始,进⾏了很多的升级和改

进,但是依然很多⼈喜欢使⽤yarn。

1.4说出npminstall的安装过程

执⾏npminstall会检测是有package-lock.json⽂件:

没有lock⽂件

分析依赖关系,这是因为我们可能包会依赖其他的包,并且多个包之间会产⽣相同依赖的情

况;

从registry仓库中下载压缩包(如果我们设置了镜像,那么会从镜像服务器下载压缩包);

获取到压缩包后会对压缩包进⾏缓存(从npm5开始有的);

将压缩包解压到项⽬的node_modules⽂件夹中(前⾯我们讲过,require的查找顺序会在该

包下⾯查找)

有lock⽂件

检测lock中包的版本是否和package.json中⼀致(会按照semver版本规范检测)

不⼀致,那么会重新构建依赖关系,直接会⾛顶层的流程

您可能关注的文档

文档评论(0)

晨向阳 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档