JavaScript 的单线程,与它的用途有关。JavaScript浏览器脚本语言,JavaScript 的主要用途是实现用户互动,及操做 DOM。这决定了它只能是单线程,不然会带来很复杂的同步问题。 为了利用多核 CPU 的计算能力,HTML5 提出 Web Worker 标准,容许 JavaScript 脚本建立多个线程,可是子线程彻底受主线程控制,且不得操做 DOM。因此,这个新标准并无改变 JavaScript 单线程的本质。
同步是阻塞模式。当一个方法被调用时,调用者须要等待该方法执行完毕并返回才能继续执行,咱们称这个方法是同步方法。javascript
异步是非阻塞模式。当一个方法被调用时当即返回,并获取一个线程执行该方法内部的业务,调用者不用等待该方法执行完毕,咱们称这个方法为异步方法php
举个生活中的例子:css
同步就像你冬天早上起来上班,须要先把水烧好后再去洗脸刷牙,这样一来你就会以为时间不够用,那么此时异步就能节约不少的时间,你能够在烧热水的时间内,完成洗漱等事情,不须要等待热水烧好。html
q1:阻止冒泡方式有哪些?前端
q2:阻止浏览器的默认行为有哪些?vue
1.捕获由外向内传播;冒泡由内向外。 2.传统事件不支持捕获;DOM2级事件支持捕获。 3.传统事件多个相同的事件名,会覆盖 ;DOM2级事件会依次执行。 4.DOM2级事件有兼容性的。
概念:利用冒泡原理,把某个子元素事件委托给父元素执行java
<div id="one"> <div id="three"></div> </div> one.addEventListener('click',function(e){ console.log(e.target); //three console.log(e.currentTarget); //one },false);
target:得到触发事件的标签,currentTarget:获得绑定事件的标签node
标准盒模型和怪异盒模型react
功能相同,布局原理就是:两边固定中间自适应;实现功能方法不相同而已。jquery
position 的值为:static,relative,absolute,fixed,sticky
默认定位:
position:static
相对定位:
position:relative
参照物是自身,不脱离文档流
绝对定位:
position:absolute;
参照物是父元素,遵循就近原则,寻找父元素及其爷爷元素中设置 position:relative 属性进行定位,脱离文档流;若是都不设置定位属性,就以根元素<html>进行定位。
固定定位:
position:fixed
参照物是可视区窗口,脱离文档流
sticky 元素仅在其父元素内生效.
css 是样式表
js 是动态脚本语言
文件后缀名不一样
主要区别就是浏览器根据谁转化成 px 单位,
rem 依据的是 html 的 font-size,1rem 等于 16px,
em 依据的是父元素的 font-size
@media 能够作到响应式布局
咱们习惯将 var a = 2;看作是一个声明,而实际上 javascript 引擎并不这么认为。它将 var a 和 a = 2 看作是两个单独的声明,第一个是编译阶段的任务,而第二个则是执行阶段的任务。
谁调用它就指向谁
箭头函数中的 this 指向问题,指向的是它的环境
经过事件绑定, 此时 this 指向 绑定事件的对象
改变 this 指向及区别
call 和 apply 区别是参数不一样
bind 是建立一个新函数,与被调函数有相同的函数体
二、 map()返回一个新数组,原数组不会改变。
三、 没有办法终止或者跳出 forEach()循环,除非抛出异常,因此想执行一个数组是否知足什么条件,返回布尔值,能够用通常的 for 循环实现,或者用 Array.every()或者 Array.some();
四、 $.each()方法规定为每一个匹配元素规定运行的函数,能够返回 false 可用于及早中止循环。
https://www.cnblogs.com/shenp...
1.head 头部写入 keyword 及描述信息。
//call,apply 构造函数继承 // 须要将Child改写以下,apply相似,但缺陷就是访问不到Parent.prototype的属性了 function Child() { Parent.call(this); this.dog = "dog"; } prototype 继承 // 这样直接将Parent.prototype赋给Child.prototype的继承方式不可取,由于在改变Child.prototype里的属性会同时改变Parent.prototype Child.prototype = Parent.prototype; // 不能访问构造函数属性,只能访问原型 // Object.create(Parent.prototype)构造的对象是一个空对象且它的原型指向Parent.prototype,因此这里的Parent.prototype是空对象,连接到了Parent.prototype,并不会影响到Parent.prototype Child.prototype = Object.create(Parent.prototype); // 不能访问构造函数属性,只能访问原型 // 这种继承方式是将实例化后的Parent对象赋给Child的prototype,既能够访问Parent构造函数里边的属性,也能够访问原型属性 Child.prototype = new Parent(); // 以上任一操做完成后这一步必须操做,是将Child的构造函数指向自身,不然在执行完继承以后,实例化的对象构造函数是Parent Child.prototype.constructor = Child;
在改变新的数组(对象)的时候,不改变原数组(对象)
一 meta 标签的使用
<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
二 手机适配等比缩放的方法:
@media 标签
三 布局
四 文本处理
overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
display:-webkit-box !important overflow:hidden; text-overflow:ellipsis; word-break:break-all; -webkit-box-orient:vertical; -webkit-line-clamp:2;(数字2表示隐藏两行)
一 选择器:
二 属性选择器:
BOM 是 Browser Object Model 缩写,即浏览器对象模型
Dom 是 Document Object Model 缩写,即文档对象模型
location 对象
得到当前页面的 URL,并重定向到新的页面
history 对象
go(“参数”) -1 表示上一页,1 表示下一页。
<form action=""> <input type="radio" name="" value="喜欢"/> <input type="radio" name="" value="不喜欢"/> </form> <label for="">爱好</label> <form action=""> <option value="读书">读书</option> <option value="运动">运动</option> </form>
background-color:rgba(255,255,255,.9)
location.href
navigator.userAgent
<input type='text/password/number/button/reset/submit/hidden/radio/checkbox/file'>
<meta name="viewport" initial-scale=1.0 maximun-scale: user-scalable:>
for (var i = 0; i < arr.length; i++) { for (var j = i + 1; j < arr.length; j++) { if (arr[i] == arr[j]) { //若是第一个等于第二个,splice方法删除第二个 arr.splice(j, 1); j--; } } }
var arrs = []; //遍历当前数组 for (var i = 0; i < array.length; i++) { //若是临时数组里没有当前数组的当前值,则把当前值push到新数组里面 if (arrs.indexOf(array[i]) == -1) { arrs.push(array[i]); } } return arrs;
function newArr(arr) { return Array.from(new Set(arr)); }
function unique(arr) { if (!Array.isArray(arr)) { console.log('type error!') return; } arr = arr.sort() var arrry= [arr[0]]; for (var i = 1; i < arr.length; i++) { if (arr[i] !== arr[i-1]) { arrry.push(arr[i]); } } return arrry; } 利用sort()排序方法,而后根据排序后的结果进行遍历及相邻元素比对
@media 针对不一样的媒体类型定义不一样的样式。
clientWidth
offsetWidth
Object.defineProperty()
Object.defineProperty()
箭头函数,能够根据表达式的多少,来判读是否省略{ ... }和 return。
箭头函数的 this 永远指向其上下文的 this ,任何方法都改变不了其指向,
普通函数的 this 指向问题,指向调用它的那个对象
特色:性能高效
router嵌套(https://router.vuejs.org/zh/guide/essentials/named-views.html)
节流: 节流是会有规律的每隔时间n就执行一次函数。 防抖: 防抖是指在一段时间内,函数被触发屡次,可是只执行一次, 当达到了必定的时间间隔就会执行一次
区别:回流必将引发重绘;而重绘不必定会引发回流。
回流:
当 render tree 中的一部分(或所有)元素的属性改变而须要从新构建页面。这就称为回流(reflow)。
重绘:
当render tree中的一些元素须要更新属性,而这些属性只是影响元素的外观,风格,而不会影响布局的,称为重绘。 比方说:只有颜色改变的时候就只会发生重绘而不会引发回流, 当页面布局和几何属性改变时就须要回流.
var arr = [1, 2, 3, 4]; var newArr = arr.filter((item, index) => { return item % 2; }); console.log(newArr); // [1,3];
(返回新数组,不会改变原数组,不会对空数组进行检测,只能作筛选,此方法知足条件当即跳出)
var arr = [1, 2, 3, 4]; var newArr = arr.filter((item, index) => { return item === 1; }); console.log(newArr); // [1];
(返回新数组,不会改变原数组,能够在原有数据基础上作运算)
var arr = [1, 2, 3, 4]; var newArr = arr.map((item, index) => { return item + 1; }); console.log(newArr); // [2,3,4,5];
(检测数组中的每个元素是否都经过了 callback 测试,所有经过返回 true,不然返回 false。)
var arr = [1, 2, 3, 4]; var arr1 = [1, 2, 3, "4"]; var newArr = arr.every(item => { return typeof item === "number"; }); var newArr1 = arr1.every(item => { return typeof item === "number"; }); console.log(newArr); // true console.log(newArr1); // false
reduce
对数组中的每一个元素(从左到右或从右到左)执行 callback 函数累加,将其减小为单个值。
var arr = [1, 2, 3, 4]; var newArr = arr.reduce((sum, value) => { return sum + value; }, 0); console.log(newArr); // 10 const concatArr = [ [0, 1], [2, 3], [4, 5] ].reduce((a, b) => { return a.concat(b); }, []);
forEach(),不改变原数组,不会返回一个新的数组,没有返回值。
map(),不会改变原数组,会返回一个新的数组。
共同点:
参数一:function(currentValue, index, arr)必需
参数二: thisValue 可选
(trim)
ie, 火狐,谷歌
使用全屏插件
封装,继承,多态 1. 封装 2. 继承 原型链继承 构造函数继承 组合继承 寄生组合式继承 3. 多态 所谓多态,就是同一个方法的多种调用方式
1. split(),把字符串分割为子字符串数组。 2. slice() 提取字符串中两个指定索引号之间的字符(索引能够为负值,-1就是倒数第二位)。 3. substring() 提取字符串中两个索引之间的字符(两个索引不能为负值)。 4. indexOf() 返回指定字符创第一次出现的位置。 5. trim(),移除字符串首位空格,常常在对input和textarea的值作判断时用到。 6. search(),检索指定子串或者与正则表达式匹配的值,返回的值是数字。 7. replace(),替换指定子串或者与正则表达式匹配的子串。 8. match(),找到一个或者多个子串或者正则表达式的匹配。 9. toLowerCase(),把字符串转换成小写的。 10. toUpperCase(),把字符串转换成大写的。
{嵌套}
首先less 会转换为ast(抽象语法树)语法 而后遍历转换后全部的节点 最后再造成 css 树
1. put 请求正文是相似 get 请求 url 的请求参数 2. post,请求正文是一个 json 格式的字符串 ```js $.ajax({ type: "post", url: "topupRecordController.do?updateReceiptInfo", data: { refNo: rowsData[0].refNo }, dataType: "json", success: function(result) {} }); ```
1. 获取父级元素 $("#id").parent() 获取其父级元素 $("#id").parents() 2. 获取同级元素 siblings() 返回被选元素的全部同胞(同级)元素; 3. 获取子元素 children() 返回匹配元素的子元素,添加可选参数可经过选择器进行过滤。 find() 得到当前元素的后代
1. $.extend 2. $.fn.extend
data() 方法向被选元素附加数据,或者从被选元素获取数据。
获取和设置 disabled、selected、checked 这些属性时,应该使用 prop()方法,不要使用 attr()方法!!可以用 prop()操做的尽可能用 prop()操做,不要用 attr()操做。
1.obj.name=value
3.obj["name"]=value;
2.js 中能够经过 Object.defineProperty()方法,能够为对象添加自定义的属性
参数 1 添加属性对象 参数 2 添加的属性名 参数 3 添加的属性值(配置对象) Object.defineProperty(obj, "phone", { value:110, enumerable 是否容许枚举,遍历 enumerable:false, writable 属性值是否能够修改,默认为 false 表示不能修改 writable:true })
一、https 协议须要到 ca 申请证书,通常免费证书较少,于是须要必定费用。
二、http 是超文本传输协议,信息是明文传输,https 则是具备安全性的 ssl 加密传输协议。
三、http 和 https 使用的是彻底不一样的链接方式,用的端口也不同,前者是 80,后者是 443。
四、http 的链接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 http 协议安全。
isNaN 是数字返回 false,不是数字返回 true
Promise.all能够将多个Promise实例包装成一个新的Promise实例。 同时,成功和失败的返回值是不一样的,成功的时候返回的是一个结果数组,而失败的时候则返回最早被reject失败状态的值. Promse.all在处理多个异步处理时很是有用,好比说一个页面上须要等两个或多个ajax的数据回来之后才正常显示,在此以前只显示loading图标。 ```js let p1 = new Promise((resolve, reject) => { resolve('成功了') }) let p2 = new Promise((resolve, reject) => { resolve('success') }) let p3 = Promse.reject('失败') Promise.all([p1, p2]).then((result) => { console.log(result) //['成功了', 'success'] }).catch((error) => { console.log(error) }) Promise.all([p1,p3,p2]).then((result) => { console.log(result) }).catch((error) => { console.log(error) // 失败了,打出 '失败' }) ```
:first-child :last-child :focus :link :lang :checked :hover :active :visited :nth-child(n) :nth-of-type等
一、资源压缩合并,减小http请求 二、非核心代码异步加载 --> 异步加载的方式 --> 异步加载的区别 三、利用浏览器缓存 --> 缓存的分类 --> 缓存的原理 四、使用CDN 五、DNS预解析
浏览器页面准备:如unload前一个页面、初始化资源等。 重定向:若是服务端返回header中定义了重定向才会有这个过程,若是没有重定向,不会产生这个过程。 app cache:会先检查这个域名是否有缓存,若是有缓存就不须要DNS解析域名。这里的app是值应用程序application,不指手机app。 DNS解析:把域名解析成IP,若是直接用ip地址访问,不产生这个过程。 TCP链接:http协议是通过TCP来传输的,因此产生一个http请求就会有TCP connect,可是依赖于长链接,不会产生这个过程。 发送请求:请求服务端资源。 接受请求:接受服务端返回数据。 解析HTML结构 加载外部脚本和样式表文件:正常来讲JS、css都是外部加载的。 解析并执行脚本代码 构建与解析HTML DOM树 加载外部图片 页面加载完成,页面正常显示。
TypeScript 是一种由微软开发的自由和开源的编程语言
多态的实现能够采用和继承相似的方法。首先定义一个抽象类,其中调用一些虚方法,虚方法在抽象类中没用定义,而是经过其具体的实现类来实现。
1 定义变量加入了 let const
let 会将变量提高到块顶部(而非像 ES5 是函数顶部)。
可是在变量声明前引用变量会形成错误。
let 是块做用域的,不能够在声明前使用。
const 若是不但愿变量的值在发生改变,使用 const 声明变量。
2 封闭空间
3 字符串和变量的拼接
4 解构赋值
5 类和面向对象
8个生命周期钩子函数
经过this.$refs.ref.method调用 ```js import children from'components/children.vue' components: {'children': children }, <children ref="child"></children> methods:{ parentFun(){ this.$refs.child.test(); } } ```
ref 有三种用法:
一、ref 加在普通的元素上,用 this.ref.name 获取到的是 dom 元素
二、ref 加在子组件上,用 this.ref.name 获取到的是组件实例,可使用组件的全部方法。
$(function(){ var r = document.body.offsetWidth/window.screen.availWidth; $(document.body).css("-webkit-transform","scale(" + r + ")"); }); $(window).resize(function(){ var r=document.body.offsetWidth/window.screen.availWidth; $(document.body).css("-webkit-transform","scale("+r+")"); });
required: true
vm.$set( target, key, value )this.$set(this.obj,'k1','v1')
相同点:
1. 都支持服务器端渲染 2. 都有Virtual DOM,组件化开发,经过props参数进行父子组件数据的传递,都实现webComponent规范 3. 数据驱动视图 4. 都有支持native的方案,React的React native,Vue的weex 5. 都有管理状态,React有redux,Vue有本身的Vuex(自适应vue,量身定作)
不一样点:
1.React严格上只针对MVC的view层,Vue则是MVVM模式 2.virtual DOM不同,vue会跟踪每个组件的依赖关系,不须要从新渲染整个组件树. 而对于React而言,每当应用的状态被改变时,所有组件都会从新渲染,因此react中会须要shouldComponentUpdate这个生命周期函数方法来进行控制 3.组件写法不同, React推荐的作法是 JSX + inline style, 也就是把HTML和CSS全都写进JavaScript了,即'all in js'; Vue推荐的作法是webpack+vue-loader的单文件组件格式,即html,css,jd写在同一个文件; 4.数据绑定: vue实现了数据的双向绑定,react数据流动是单向的 5.state对象在react应用中不可变的,须要使用setState方法更新状态; 在vue中,state对象不是必须的,数据由data属性在vue对象中管理;
常见的语义化标签
<title>:页面主体内容。
h1~h6:分级标题
<header>
<main>:页面主要内容,一个页面只能使用一次。若是是web应用,则包围其主要功能。
<nav>:标记导航,仅对文档中重要的连接群使用。
<section>:定义文档中的节(section、区段)。好比章节、页眉、页脚或文档中的其余部分。
:呈现小号字体效果,指定细则,输入免责声明、注解、署名、版权
:和 em 标签同样,用于强调文本,但它强调的程度更强一些。
<figure>:规定独立的流内容(图像、图表、照片、代码等等)(默认有40px左右margin)。
<figcaption>:定义 figure 元素的标题,应该被置于 figure 元素的第一个或最后一个子元素的位置。
<address>:做者、相关人士或组织的联系信息(电子邮件地址、指向联系信息页的连接)。
<mark>:使用黄色突出显示部分文本。:移除的内容。
<ins>:添加的内容:标记代码。
<progress>:定义运行中的进度(进程)。
https://www.php.cn/css-tutorial-412103.html
jquery自动完成插件 http://www.jq22.com/jquery-info438
多人开发,减小开发成本
复杂数据类型在栈中存储数据名和一个堆的地址,在堆中存储属性及值,访问时先从栈中获取地址,再到堆中拿出相应的值
基本数据类型做为参数时,函数内部对参数值的修改不会改变外部变量的值
Vue就是基于MVVM模式实现的一套框架
750
1920 1280
https://www.cnblogs.com/jofun...
https://blog.csdn.net/weixin_...
https://www.cnblogs.com/tcxq/...
video 表示一段视频并提供播放的用户界面
audio 表示音频
canvas 表示位图区域
source 为video和audio提供数据源
track 为video和audio指定字母
svg 定义矢量图
code 代码段
figure 和文档有关的图例
figcaption 图例的说明
main
time 日期和时间值
mark 高亮的引用文字
datalist 提供给其余控件的预约义选项
keygen 秘钥对生成器控件
output 计算值
progress 进度条
menu 菜单
embed 嵌入的外部资源
menuitem 用户可点击的菜单项
menu 菜单
template
section
nav
aside
article
footer
header
background-size:length|percentage|cover|contain;
stars:>=5000
in:name 关键字
in:description 关键字
in:Readme 关键字
awesome + 关键字:能够找到别人收集好的内容。
language:关键字
npm config set sass_binary_site
https://npm.taobao.org/mirror...
https://github.com/PanJiaChen... vue 管理后台模板代码仓库
http://manager.cat-shop.penku...
admin001
admin@12138
https://www.jianshu.com/p/fcc... 前端 seo
https://blog.csdn.net/qq_3750... H5 移动端 ios/Android 兼容性总结
https://www.netlify.com 能够关联 github 搭建一个静态网站
https://www.teambition.com/ 团队开发任务工具
https://www.lodashjs.com/ js 工具类
http://momentjs.cn/ 日期格式化插件
https://www.sourcetreeapp.com/ sourcetree
https://www.cnblogs.com/fishe... sourcetree 安装使用
https://www.jianshu.com/p/0c6... git workflow 工做流
https://backlog.com/git-tutor... 猴子都懂得 git
https://www.jianshu.com/p/398...
https://segmentfault.com/a/11... 解析 vue2.0 的 diff 算法
https://www.jianshu.com/p/e4e...
https://blog.csdn.net/kang_k/... vue 作 seo 优化
nuxt 基于 vue 插件
https://tophub.fun/main/home/hot 鱼塘
https://github.com/trending github 仓库排名
https://github.com/zhaoolee/C... 表情包的博物馆
https://expo.io/learn expo 环境使用的插件,很难安装
在大家的终端里安装下这个插件,下下周以前装好就行
npm install expo-cli --global
https://reacttraining.com/rea... react-router
有空了能够了解下,2020 年应该知道的 20 个 react ui 框架
https://www.codeinwp.com/blog...