# homework-fe-02-06
**Repository Path**: sfljskeprim_admin/homework-fe-02-06
## Basic Information
- **Project Name**: homework-fe-02-06
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-11-25
- **Last Updated**: 2021-11-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
1. **# 简答题**
1. 简述浏览器请求数据时,同步和异步的区别?
> 异步: 在执行一些耗时操作去做别的事情而不是等待,而同步在执行一些耗时操作不能去做别的事情,必须等待执行完毕
2. 简述 ajax 的过程。
> 1. 创建XMLHttpRequest类型的对象,IE6兼容需要创建`ActiveXObject("Microsoft.XMLHTTP")`
> 2. 准备发送,打开与一个网址之间的连接通过`open()`
> 3. 执行发送动作调用`send`方法,对于POST请求需要在发送之前设置`setRequestHeader()`
> 4. 执行xhr状态变化事件处理函数:`onreadystatechange`
> 5. 在HTML5中XMLHTTPRequest进行了升级,onload事件监听请求完成的动作,onprogress事件,在请求进行中触发
3. 请解释一下 JavaScript 的同源策略。
> 同源策略是浏览器的一种安全策略,所谓同源:域名、协议、端口完全相同
>
> 在同源策略下,只有同源的地址才可以互相通过AJAX的方式请求,不同源地址间的请求称为跨域请求。
4. GET和POST的区别,何时使用POST?
> GET请求:一般用于信息获取,使用URL传递参数?a=xx&b=xx,对发送信息的数量有限制,一般在2000个字符
>
> POST请求:一般用于向服务器提交资源,对所发送的信息没有限制
>
> 使用POST请求:
>
> - 无法使用缓存文件,更新服务器上的文件或数据库
> - 向服务器发送大量数据,post没有数据量限制
> - 发送包含未知字符的用户输入时,POST比GET更稳定也更可靠
5. 什么是jsonp跨域。
> JSONP :JSON width Padding 是一种借助与script标签发送跨域请求的技巧。
>
> 原理:客户端借助script标签请求服务端的一个地址,地址返回一段带有某个全局函数的JavaScript脚本,在调用函数中,原本需要返回给客户端的数据通过参数传递给这个函数,这样客户端就可以通过参数得到原本服务端想要返回的数据。
6. 什么是cors跨域。
> Cross Origin Resource Share 跨域资源共享,需要服务器进行处理,在被请求的服务端响应头添加一个Access-Control-Allow-Origin的值,其中 * 表示允许访问任意源不安全,以及指定地址源访问
7. 请描述jsonp 与 cors 的区别。
> JSONP的优势在于支持老式浏览器,弊端比较明显,需要客户端和服务定制进行开发。服务端返回的数据不能是标准的JSON数据,而是callback包裹的数据。
>
> cors支持所有的浏览器请求类型,承载的请求数据量更大,开发更简洁,服务端只需要将处理后的数据直接返回,不需要再特殊处理。
>
> 1. JSONP的主要优势在于对浏览器的支持较好。IE10一下不支持CORS
> 2. JSONP只能用于获取资源,CORS支持所有类型的HTTP请求,功能完善
>
> 1. JSONP的错误处理机制并不完善,没有办法进行错误处理,CORS和正常请求一样可以监听错误,利于排查
> 2. JSONP只会发一次请求,而对于复杂的请求,CORE会发两次请求
>
> 1. JSONP并不是跨域规范,存在明显的安全问题,callback参数注入和资源访问授权设置
8. 简单描述模板的作用。
> 减少字符串拼接,在模板里面解析JSON,然后跟HTML内容拼接,性能会更好。
9. 请描述ArtTemplate模板的使用步骤。
> 1. 引入模板文件
>
>
>
> 2. 创建模板
>
> 3. 添加模板中的结构
>
> 4. 在模板中编写js代码解析数据
```
```
**# 代码题**
\* 作业需求:
\* 完成视频中留言板项目
\* json文件自己完成,模仿jsonPlaceholder的格式
\* 样式自由发挥