我的理解是 jsonp就是利用了scrip 的src标签,比如图片引入,a标签的跳转,请求回来的是一段js,绕开了同源协议。
标签的src属性并不被同源策略所约束,所以可以获取任何服务器上脚本并执行。比如你能引入一个js文件并能执行,
http是明文传输,https是加密传输
先发起请求 dns解析,然后tcp/ip建立连接,发起http请求,服务器响应 回答数据,
https搜索排名比http靠前
hash模式和history模式
共同点:hash 模式和 history 模式都属于浏览器自身的特性
hash模式带有#号,配置域名只配置前面的就可以了,仅 hash 符号之前的内容会被包含在请求中,如 http://www.abc.com,因此对于后端来说,即使没有做到对路由的全覆盖,也不会返回 404 错误
history :利用了 HTML5 History Interface 中新增的 pushState() 和 replaceState() 方法。在当前已有的 back、forward、go 的基础之上,它们提供了对历史记录进行修改的功能,只是当它们执行修改时,虽然改变了当前的 URL,但浏览器不会立即向后端发送请求,前端的 URL 必须和实际向后端发起请求的 URL 一致,不然会有404错误,就是找不到页面
这是语法糖
text = e.target.value"/>
//语法糖 1.v-bind:href="" 等同于 :href=""
//2.v-on:input 等同于 @input
//这个e e是标准浏览器传递进去的事件参数
组件的语法糖
newvisible = dialogvisible" >
Symbol保证属性不重名
可迭代对象是具有 Symbol.iteration
Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。
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 对象存储的值总是唯一的,所以需要判断两个值是否恒等。有几个特殊值需要特殊对待:
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 也能存储
__dirname
总是指向被执行 js 文件的绝对路径所以当你在 /d1/d2/myscript.js
文件中写了 __dirname
, 它的值就是 /d1/d2
混入 (mixins): 是一种分发 Vue 组件中可复用功能的非常灵活的方式。混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项。
服务端渲染 是一个生成好了的html 直接拿来用
客户端渲染 是动态的生成html数据 有异步操作 不利于爬虫
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:可选 向数组添加新的