es6
通信/编程/原理篇
一. 原理篇
1. 对 SPA 单页面应用的理解,优缺点是什么?
SPA( single-page application )仅在 Web 页面初始化时加载相应的 HTML、JavaScript 和 CSS。⼀旦⻚⾯加载完成,SPA 不会因为用户的操作而进行页面的重新加载或跳转;取而代之的是利用路由机制实现 HTML 内容的变换,UI 与用户的交互,避免页面的重新加载。
优点:
1)用户体验好、快,内容的改变不需要重新加载整个页面,避免了不必要的跳转和重复渲染;
2)SPA 相对对服务器压力小;
3)前后端职责分离,架构清晰,前端进行交互逻辑,后端负责数据处理;
缺点:
1)首屏(初次)加载慢:为实现单页面 Web 应用功能及显示效果,需要在加载资源的时候将JavaScript、CSS 统一加载,部分页面按需加载;
2)不利于 SEO:由于所有的内容都在一个页面中动态替换显示,所以在 SEO 上其有着天然的弱势。
二.算法与编程篇
1. 写一个倒计时函数
let n = 10; // 全局变量 let time = setInterval(() => { setTimeout(() => { console.log('倒计时------', n); n--; if (n < 0) { console.log('倒计时------时间到'); clearInterval(time); // 删除时间 setInterval,每隔一段时间执行一次 } }) }, 1000);
三.通信篇
1、ajax如何处理跨域
答: 首先回答这个问题,先知道什么是跨域,跨域问题来源于JavaScript的"同源策略",即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。跨域问题是针对JS和ajax的,html本身没有跨域问题。 查看浏览器开发者工具Console报错: Failed to load http://a.a.com:8080/A/FromServlet?userName=123: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://b.b.com:8080' is therefore not allowed access. http://www.abc.com/a/b 调用 http://www.def.com/a/b (跨域:域名不一致) http://www.abc.com:8080/a/b 调用 http://www.abc.com:8081/d/c (跨域:端口不一致) http://www.abc.com/a/b 调用 https://www.abc.com/d/c (跨域:协议不同) 跨域的几种解决方案: 1、响应头添加Header允许访问 2、jsonp 只支持get请求不支持post请求 3、httpClient内部转发 4、使用接口网关——nginx、springcloud zuul (自己公司也是如此解决,大多互联网公司都是用此方案)
参考文章链接如下:
https://blog.csdn.net/itcats_cn/article/details/82318092 跨域
https://www.jianshu.com/p/3507b078fe03
https://www.cnblogs.com/liandudu/p/14276948.html