水平垂直居中块元素
弹性布局:flex
定位:父元素position:relative
1、绝对定位 + transform,translateX(-100px) translateY(-100px);
2、绝对定位 + margin;
3、绝对定位 + calc;
grid:和flex一样
table
行内元素
父元素宽高不固定,画一个正方形子元素
- 父元素宽高自适应,不需要设置高度,子元素设置宽多少,padding-bottom就设置多少
画三角形
- 宽高为0,设置border,将不需要的其他三侧border-color设置为transparent
继承function Son(age){
Person.call(this,age)
}
function inheritPrototype(son,person){
var subpro = Object.create(person.prototype)
subpro.constructor = son
son.prototype = subpro
}
inheritPrototype(Son,Person)
var instances = new Son(23)
双向数据绑定vue2:
缺点:
1、无法监听数组的变化,所以在vue底层改写了数组的几种原生方法
2、不能监听没有定义的属性
3、删除对象属性和添加无法响应式,需要借助$set
vue3:
proxy:我们可以通过 Proxy 创建对于原始对象的代理对象,从而在代理对象中使用 Reflect 达到对于 JavaScript
原始操作的拦截
相比vue2优点:
1、可以监听整个对象,而不是单个属性
2、可以监听数组的变化
web安全SQL注入:
XSS:
CSRF:
XSS和CSRF的区别:XSS是获取信息,不需要知道其他数据,而XSRF书需要知道其他数据来代替用户完成操作
HTTP和HTTPS
HTTP协议通常承载于TCP协议之上
而HTTPS是在HTTP和TCP之间添加了一个安全协议层(SSL或TSL)
commonJs和ES6加载commonjs通过module.exports或者exports来达到暴露对象
let { stat, readFile } = require('fs');
// 等同于:
let _fs = require("fs");
stat = _fs.stat;
readFile = _fs.readFile;
上面的代码实质是加载整个fs模块,然后去读取其中两个方法,这种加载行为是“运行时加载”,因为只有运行时才能获取对应对象
es6模块不是对象,而是通过export命令输出代码,通过import导入应用
import { stat , readFile } from "fs"
这情况就是在fs里面加载其中三个方法,其他不加载,属于静态加载,可以在编译时完成模块加载,效率要比commonJs高