1.vue实现一个对话框?用到什么技术?如果没有遮罩层,点击空白处关闭对话框怎么处理?
在最外层绑定一个点击事件
pint(e) {
let dom = document.getElementById('printcontent')
if (dom) {
if (!dom.contains(e.target)) {
//e.target可返回事件的目标节点(触发该事件的节点),然后做判断
console.log('点到外面了')
} else if (dom.contains(e.target)) {
console.log('点到里面了')
}
}
}
2.首次加载白屏怎么优化?
前端角度(优化打包文件大小)
1.懒加载
2.aot模式打包
3.服务端开启gzip压缩
4.cdn缓存图片
5.骨架屏(用户体验角度)
3.单页面应用同一个url地址指向不同资源怎么实现?
路由:
目前来说,无论是vue,还是react,spa的路由实现方式无非就是以下两者:
- hash方式。 使用location.hash和hashchange事件实现路由。
- history api。使用html5的history api实现,主要就是popState事件等。
hash用的还是比较多的,但是这种方式的url会比较丑陋,会出现 #; 而history api就可以很好的解决这个问题,但是需要后端配置,并且由于是html5中的api,所以兼容性还不是很好,用的时候需要确定你的用户,再做决定。
1.hash路由在地址栏URL上有#,而history路由没有会好看一点
2.我们进行回车刷新操作,hash路由会加载到地址栏对应的页面,而history路由一般就404报错了(刷新是网络请求,没有后端准备时会报错)。
3.hash路由支持低版本的浏览器,而history路由是HTML5新增的API。
4.hash的特点在于它虽然出现在了URL中,但是不包括在http请求中,所以对于后端是没有一点影响的,所以改变hash不会重新加载页面,所以这也是单页面应用的必备。
5.history运用了浏览器的历史记录栈,之前有back,forward,go方法,之后在HTML5中新增了pushState()和replaceState()方法(需要特定浏览器的支持),它们提供了对历史记录进行修改的功能,不过在进行修改时,虽然改变了当前的URL,但是浏览器不会马上向后端发送请求。
4.浏览器中存储对象有哪些?
Cookie
LocalStorage
SessionStorage
IndexedDB
1.Cookie的本质工作并不是本地存储,而是状态维持。
2.WebStorage是HTML5专门为浏览器存储而提供的数据存储机制,不与服务端发生通信。
3.IndexedDB用于客户端存储大量结构化的数据。
5.浏览器的cookie读写机制?
Cookie的生成方式主要有以下两种:
1.http response header中的set-cookie。
2.js中通过document.cookie读写cookie,可以将cookie解析为键值对的形式展示。
6.简单说一下自己了解的设计模式?
模式分类 名称 创建型 工厂模式 单例模式 原型模式 结构型 适配器模式 代理模式 行为型 策略模式 迭代器模式 观察者模式(发布-订阅模式) 命令模式 状态模式 JavaScript常用设计模式
7.项目中使用过proxy吗?
8.跨域有哪些实现方式?
9.简单说下浏览器实现跨域的过程?
10. 对微前端有过了解吗?
11.嵌入其他系统的实现方式?
12.iframe发主程序通讯方式?
13.webpack你是怎么用的?