vue自定义组件
避免js冲突,命名冲突
1.使用匿名函数,将脚本包含起来。让变量的作用域包含在匿名函数之内。
匿名函数:(function (){})() 前面的括号内是函数体,后面的()表示执行。
2.命名空间,定义一个全局变量,然后用Hash对象作为全局变量,定义一个命名空间,然后在定义属性变量
给每个匿名函数定义一个命名空间,然后把该函数的对象挂载到该函数的命名空间下
JQuery的$和其它JS发生冲突的快速解决方法
先加载jQuery.js,再加载Prototype.js(按照这样的顺序加载,就不存在其它js库的$符号被jQuery占用的问题。)
通过全名替代简写的方式来使用 jQuery
可以创建自己的简写,通过noConflict()函数来定义一个快捷方式用来获取dom节点
将$符号作为变量传递给ready方法,在函数内部用$,外部用jquery
使用语句块(使用匿名函数)使用noConflict()方法,将变量$的控制权让渡给prototype.js。定义匿名函数并设置形参为$,函数内部全部使用
es6
箭头函数(不用再函数外部从新定义函数内部的this),反引号(字符串模板),Promise(一个回调函数,后跟两个参数,resolve成功的回调,reject 失败的回调)Modules()模块化是封装对象的属性和方法的javascript代码(导入导出)module.exports导出。let()跟const()两个都是块级作用域,并且const()是一个不变量。重复生命会报错,const用于声明常量,其值一旦被设定不能再被修改,否则会报错。
js防抖跟节流。
当持续触发事件时,一段时间段内没有再触发事件,事件处理函数才会执行一次,如果设定的时间到来之前就触发了事件,延时重新开始。
当持续触发事件时,保证一定时间段内只调用一次事件处理函数。
css3的新特性,定义动画,实现动画?
语义化标签有没有了解?
语义化的理解:代码结构清晰容易阅读,利于开发和维护,方便其他设备解析,根据语义渲染页面,有利于搜素引擎的优化,减少差异化
常用的语义化标签包括
<header></header>头部
<nav></nav>导航栏
<section></section>区块(有语义化的div)
<main></main>主要区域
<artical></artical>主要内容
<aside></aside>侧边栏
<footer></footer>底部
怎么用cookie将一个两个小时保存时间变为两天?
深浅拷贝
内存地址一样即浅拷贝,被拷贝对象一旦发生改变,拷贝对象也会发生改变。
内存地址不一样即深拷贝,拷贝对象不会随着被拷贝对象的数据发生变化而变化。
三次握手
第一次握手:客户端发送网络包,服务端收到了。
这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。
第二次握手:服务端发包,客户端收到了。
这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。
第三次握手:客户端发包,服务端收到了。
这样服务端就能得出结论:客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常。
第三次握手的时候,是可以携带数据的。但是,第一次、第二次握手不可以携带数据
四次挥手
第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于CLOSED_WAIT1状态。
第二次握手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 + 1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于CLOSE_WAIT2状态。
第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。
第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 + 1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态
基本数据类型与引用数据类型的区别
基本数据类型是可以直接操作保存在。引用数据类型是对象
基本数据类型是指存放在栈中的简单数据段,数据大小确定,内存空间大小可以分配,它们是直接按值存放的,所以可以直接按值访问。引用类型是存放在堆内存中的对象,变量其实是保存的在栈内存中的一个指针(保存的是堆内存中的引用地址),这个指针指向堆内存。
父子传方式。
父子通讯中最常见的数据传递方式就是通过props传递数据,就好像方法的传参一样,父组件调用子组件并传入数据,子组件接受到父组件传递的数据进行验证使用
三次握手的作用
三次握手的作用也是有好多的,多记住几个,保证不亏。例如:
确认双方的接受能力、发送能力是否正常。
指定自己的初始化序列号,为后面的可靠传送做准备。
如果是 https 协议的话,三次握手这个过程,还会进行数字证书的验证以及加密密钥的生成到。
ajax的优点与缺点:
优点:<1>.无刷新更新数据。
<2>.异步与服务器通信。
<3>.前端和后端负载平衡。
<4>.基于标准被广泛支持。
<5>.界面与应用分离。
缺点:①ajax不支持浏览器back按钮
②安全问题ajax暴露了与服务器交互的细节。
③对搜索引擎的支持比较弱,
④破坏了程序的异常机制
⑤不容易调试
⑥不能很好的支持移动设备
Ajax的工作原理
相当于在用户和服务器之间加了—个中间层(AJAX引擎),使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器,像—些数据验证和数据处理等都交给Ajax引擎自己来做, 只有确定需要从服务器读取新数据时再由Ajax引擎代为向服务器提交请求。
http请求优化方式:
使用css sprites(css精灵):将所有图标放在一个图像文件中,使用css的background-image和position属性定位来显示所需要的
合并脚本跟样式表,
图片等静态资源放在服务器或cdn服时,尽量采用不用的域名,这样可以防止cookie不会互相污染,减少数据请求的往返数据。
css替代图片,缓存一些数据。
少用location.reload(),使用location.href=‘当前页url’
一个页面从输入URL 到页面加载显示完成,这个过程中都发生了什么?
1.用户在浏览器输入URL,发起访问网页的请求;
2.浏览器开始解析域名,查找URL对应的IP地址;
3.浏览器通过IP地址与网页服务器建立联系;
4.网页服务器接收用户请求交给后台处理器处理,并返回处理结果给浏览器;
5.浏览器接收服务器返回的处理结果,对其进行解析、渲染并最终绘制网页。
ajax执行流程?
1. 创建XMLHttpRequest对象,也就是创建一个异步调用对象2. 创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息3. 设置响应HTTP请求状态变化的函数4. 发送HTTP请求5. 获取异步调用返回的数据6. 使用JavaScript和DOM实现局部刷新
获得屏幕的高度
screen对象用于获取用户的屏幕信息。window.screen.属性
1. jsonp的原理是什么?
利用script标签绕过同源策略的限制,拿到数据
JSONP 是服务器与客户端跨源通信的常用方法。最大特点就是简单适用,兼容性好(兼容低版本IE),缺点是只支持get请求,不支持post请求。 核心思想:网页通过添加一个<script>元素,向服务器请求 JSON 数据,服务器收到请求后,将数据放在一个指定名字的回调函数的参数位置传回来。
同源就是:同域名,同端口,同协议
原型链继承
就是利用原型使一个引用类型继承另外一个引用类型的属性和方法。
构造函数,原型,实例之间的关系:
每个构造函数都有一个原型对象,原型对象包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。
构造函数继承:
使用call()和apply()的方法可以在新创建的对象上执行构造函数。(可以使用call()和apply()进行继承。)