1.对jsonp原理的理解
我的理解是 jsonp就是利用了scrip 的src标签,比如图片引入,a标签的跳转,请求回来的是一段js,绕开了同源协议。
<script>
标签的src属性并不被同源策略所约束,所以可以获取任何服务器上脚本并执行。比如你能引入一个js文件并能执行,
2.http和https
http是明文传输,https是加密传输
先发起请求 dns解析,然后tcp/ip建立连接,发起http请求,服务器响应 回答数据,
https搜索排名比http靠前
3.vue-router的modle 模式
hash模式和history模式
共同点:hash 模式和 history 模式都属于浏览器自身的特性
hash模式带有#号,配置域名只配置前面的就可以了,仅 hash 符号之前的内容会被包含在请求中,如 http://www.abc.com,因此对于后端来说,即使没有做到对路由的全覆盖,也不会返回 404 错误
history :利用了 HTML5 History Interface 中新增的 pushState() 和 replaceState() 方法。在当前已有的 back、forward、go 的基础之上,它们提供了对历史记录进行修改的功能,只是当它们执行修改时,虽然改变了当前的 URL,但浏览器不会立即向后端发送请求,前端的 URL 必须和实际向后端发起请求的 URL 一致,不然会有404错误,就是找不到页面
4.vue的双向绑定
v-model指令
<input v-model="text"/> 这是语法糖
<input :value = "text" @input="e => text = e.target.value"/>
//语法糖 1.v-bind:href="" 等同于 :href=""
//2.v-on:input 等同于 @input
//这个e e是标准浏览器传递进去的事件参数
组件的语法糖
<my-compont :visible:sync="dialogvisible"></my-compont>
<my-compont :visible="dialogvisible" @update:visible="newvisible => newvisible = dialogvisible" ><my-compont>
5.帮大家理解es6的map对象
6.Array of 和Array from 关于迭代器的说明
Symbol保证属性不重名
可迭代对象是具有 Symbol.iteration
7. ...
8. Map 和Set 对象
Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。
Maps 和 Objects 的区别
- 一个 Object 的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值。
- Map 中的键值是有序的(FIFO 原则),而添加到对象中的键则不是。
- Map 的键值对个数可以从 size 属性获取,而 Object 的键值对个数只能手动计算。
- Object 都有自己的原型,原型链上的键名有可能和你自己在对象上的设置的键名产生冲突。
var myMap = new Map();
var keyString = "a string";
myMap.set(keyString, "和键'a string'关联的值");
myMap.get(keyString); // "和键'a string'关联的值"
myMap.get("a string"); // "和键'a string'关联的值"
// 因为 keyString === 'a string'
Set 对象
Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。
Set 中的特殊值
Set 对象存储的值总是唯一的,所以需要判断两个值是否恒等。有几个特殊值需要特殊对待:
- +0 与 -0 在存储判断唯一性的时候是恒等的,所以不重复;
- undefined 与 undefined 是恒等的,所以不重复;
- NaN 与 NaN 是不恒等的,但是在 Set 中只能存一个,不重复。
let mySet = new Set();
mySet.add(1); // Set(1) {1}
mySet.add(5); // Set(2) {1, 5}
mySet.add(5); // Set(2) {1, 5} 这里体现了值的唯一性
mySet.add("some text");
// Set(3) {1, 5, "some text"} 这里体现了类型的多样性
var o = {a: 1, b: 2};
mySet.add(o);
mySet.add({a: 1, b: 2});
// Set(5) {1, 5, "some text", {…}, {…}}
// 这里体现了对象之间引用不同不恒等,即使值相同,Set 也能存储
Node.js 中,__dirname
总是指向被执行 js 文件的绝对路径
所以当你在 /d1/d2/myscript.js
文件中写了 __dirname
, 它的值就是 /d1/d2
mixins基础概况
混入 (mixins): 是一种分发 Vue 组件中可复用功能的非常灵活的方式。混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项。
服务端渲染和客户端渲染
服务端渲染 是一个生成好了的html 直接拿来用
客户端渲染 是动态的生成html数据 有异步操作 不利于爬虫
数组操作 some 和 every, reduce
every:
判断数组中是否每个元素都满足条件
只有都满足条件才返回true;
只要有一个不满足就返回false;
arr.some( function(value,index, arr){ return value%2 == 0}) 判断数组全为偶数才会返回true
arr.every(function(value,index, arr){ return value%2 == 0) 只要有一个数满足条件就会返回true
some相反 只要有一个条件满足就返回true
reduce: arr.reduce(function(pre,cur,index,arr){}, init)
pre:上次返回的回调值 或者初始值
cur:当前值
init:初始值
index:若有初始值 index为0 否则为1
常用的求和,去重,取最大值
var arr = [1,2,3,4,6,8]
arr.reduce(function(prev,cur){
return Math.max(prev,cur)
})
不修改原数组,返回新的数组
contact ,slice
slice(start,end) slice(-3)
splice(start,howmany, item1....itemx)
start: 规定开始删除或者添加的位置
howmany:要删除的数量,为0 则不删除
item:可选 向数组添加新的