每日面经(一日5题系列)

1.     Js的几种模块化规范

①    commonJs,通过require引入模块,通过module.exports导出模块,是node专用的模块加载方案,以同步方式引入模块

②    es6模块化规范,通过importexport来导入导出模块

③    commonJses6模块化的区别:

1CommonJs输出的是值的拷贝,es6输出的是值的引用

2CommonJs是运行时加载,ES6是编译时输出接口; CommonJS 模块就是对象,在输入时先加载整个模块,生成对象,再从对象上读取方法;es6模块不是对象,它的对外接口只是一种静态定义(一个只读的引用),在代码静态解析阶段就会生成,等到代码真正执行时,就根据这个引用到被加载的模块中去取值(运行时动态取值)

3CommonJS 模块的require()是同步加载模块,ES6 模块的import命令是异步加载,有一个独立的模块依赖的解析阶段

④    AMD,采用异步方式加载模块,将依赖模块的语句放在一个回调里,加载完后执行回调函数

⑤      CMD也是异步模块加载方案,与AMD的区别在于对依赖的处理和依赖模块的执行时机不同

⑥    AMDCMD的区别:

(1)     定义模块时,对依赖模块的引入方式不同:AMD推崇依赖前置,定义模块时,就要声明其依赖的模块;CMD推崇依赖就近,用到某个模块时才去引入

(2)     对依赖模块处理的时机不同:AMD是加载完就去直接执行,CMD是等所有模块加载完再去执行

2.     进程和线程的区别

①    进程是资源分配的最小单位,线程是资源调度的最小单位

②    一个进程可以拥有多个线程,这些线程共享进程中的数据,线程由进程来启动和管理

③    多个进程之间相互独立,进程中任一线程执行出错会导致整个进程崩溃


3.     修改elementUi样式的方式

①    引入全局CSS文件

②    通过::v-deep修改单个页面中的样式

③    通过给组件再加一个class样式,来覆盖(但不是很通用)


4.     Vue router中传参的方式

Query传参:以?key=value的形式传递,通过$route.query.key获取

Params传参:直接在path后面以/value展示,在路由配置通过/key来声明占位,通过$route.param.key获取,携带params参数时,以对象形式声明只能使用name配置,不能用path配置

5.     Vue组件间通信的方式

①    Props$emitv-model):最常见的父子组件间通信

②    Provideinject:用于祖孙组件之间的通信,祖先元素提供变量对象,孙子组件注入变量名,即可访问

③    Parentchildren:适用与父子组件中通信

④    Attrslisteners$attrs用于记录父传子的所有不被props捕获以及不是classstyle参数,$listeners用于记录父传子的所有不含.native修饰器的事件,通常在二次封装组件时使用比较高效(要用v-bind绑定$attrsv-on注册$listeners注入到子组件)

⑤    全局事件总线:适用于任意间组件通信

安装全局事件总线:在beforeCreate中注册总线(Vue.prototype.$bus = this)就是当前应用的vm

A组件想接受数据就用this.$bus.$on(‘xx’,回调函数)

B组件提供数据就this.$bus.$emit(‘xx’,数据)

⑥    Vuex




#面经##秋招#
全部评论
收藏了,慢慢看
点赞 回复 分享
发布于 2022-08-16 13:46

相关推荐

评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务