ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【面试】前端面试八股文 [打印本页]

作者: 玛卡巴卡的卡巴卡玛    时间: 2024-10-28 21:06
标题: 【面试】前端面试八股文
前端思维导图长处大可爱html+css+js+node全面可下载千峰html+css轻便漂亮千峰js轻便漂亮 一、JS

1、使用

(1)标签引用

  1. <script>
  2.     alert("Hello,World!");
  3. </script>
复制代码
(2)文件引用

  1. <script src="main.js"></script>
复制代码
2、特点


3、标识符


4、数据类型

(1)数据类型


名称类型值String字符串型‘123’Number数值型123Boolean布尔型true/falseNullnull型空UndefinedUndefined型未界说SymbolSymbol型Symbol() 天生唯一值Bigint整数型大整数
名称类型值Object对象{ “key”:“value” }Array数组[…]Function函数fn()Date日期函数new Date()Math数学公式MathRegExp正则new RegExp(“正则表达式”, “匹配模式”) (2)类型判定


  1. console.log(typeof "123")                // string
  2. console.log(typeof 123)                        // number
  3. console.log(typeof true)                // boolean
  4. console.log(typeof undefined)        // undefined
  5. console.log(typeof null)                // object => 所有值均32位,最低的3位表示数据类型,null全部为0,而object前三位是000
复制代码

  1. console.log([1, 2] instanceof Array)                         // true
  2. console.log(function(){} instanceof Function)         // true
  3. console.log({a:1} instanceof Object)                         // true
  4. console.log(new Date() instanceof Date)                        // true
  5. console.log(new RegExp() instanceof RegExp)         // true
复制代码

  1. const str = '111'
  2. const num = 666
  3. const sym = Symbol(66)
  4. const arr = [1,2,3,5]
  5. const date = new Date()
  6. const func = function(){}
  7. const reg = new RegExp()
  8. const map = new Map()
  9. const set = new Set()
  10. // null和undefined没有constructor,obj.constructor => Object() { [native code] }
  11. console.log(str.constructor === String)     // true
  12. console.log(num.constructor === Number)     // true
  13. console.log(sym.constructor === Symbol)     // true
  14. console.log(arr.constructor === Array)      // true
  15. console.log(date.constructor === Date)      // true
  16. console.log(func.constructor === Function)  // true
  17. console.log(reg.constructor === RegExp)     // true
  18. console.log(map.constructor === Map)        // true
  19. console.log(set.constructor === Set)        // true
复制代码

  1. Object.prototype.toString.call("")              // "[object String]"
  2. Object.prototype.toString.call(123)             // "[object Number]"
  3. Object.prototype.toString.call(true)            // "[object Boolean]"
  4. Object.prototype.toString.call(null)            // "[object Null]"
  5. Object.prototype.toString.call(undefined)       // "[object Undefined]"
  6. Object.prototype.toString.call(Symbol())        // "[object Symbol]"
  7. Object.prototype.toString.call(42n)             // "[object BigInt]"
  8. Object.prototype.toString.call({ a: 1 })        // "[object Object]"
  9. Object.prototype.toString.call([1, 2])          // "[object Array]"
  10. Object.prototype.toString.call(new Date())      // "[object Date]"
  11. Object.prototype.toString.call(function () {})  // "[object Function]"
复制代码
(3)类型转换


转换类型方法含义StringString(数据)转换为字符串变量.toString(进制)转换为对应进制字符串NumberNumber(数据)转换为数字parseInt(数据)只保存整数parseFloat(数据)可以保存小数BooleanBoolean(数据)转换为布尔值
转换类型原始数据类型转换后的值String数字类型'n'null'null'undefined'undefined'布尔类型true变'true',false变'false'Number空字符/null0非空字符串数字/NaN(有非数字)true/false1/0undefinedNaNNaNtypeof NaN => "number"BooleanString非空字符串为true,空字符串为falseNumber非零数字为true,0和NaN为falseObject任何对象为true,null为falseUndefined无true,Undefined为false   运行情况对数据类型隐式转换的影响:很多内置函数期望传入的参数数据类型是固定的,如:alert(value)期望传入string类型参数,如果传入number或object等非string类型的数据,就会发生数据类型的隐式转换
  5、深浅拷贝

(1)基本类型拷贝


(2)引用类型拷贝


类型与原数据是否指向同一对象第一层数据为基本数据类型原数据中包罗子对象赋值是改变原数据改变原数据浅拷贝否不改变原数据改变原数据深拷贝否不改变原数据不改变原数据   深拷贝方法
- JSON:JSON.stringify(),JSON.parse()
- Object.assign()
- jQuery 方法 $.extend()
- 递归
  6、var let const


类型varletconst作用域函数作用域块作用域块作用域重新赋值是是否声明不赋值是是否变量提拔是否否重复声明是否否全局声明变量为window对象属性是否否   尽量克制使用var,优先使用const,将来会修改的变量使用let
const必须初始化,声明时大写变量,不能修改变量声明的值,可以修改对象内部属性
let无需初始化,不可以修改变量声明的值
  7、箭头函数


   得当与this无关的回调 :定时器、数组回调
不得当与this有关的回调: 变乱回调 、对象的方法
判定箭头函数
  8、原型和原型链(面向对象编程)


(1)构造函数


  1. function Person(name, age) {
  2.            this.name = name;
  3.            this.age = age;
  4.     this.species = '人类';
  5.     this.say = function () {
  6.         console.log("Hello");
  7.     }
  8. }
  9. let per1 = new Person('xiaoming', 20);
复制代码
(2)实例对象


(3)原型对象


   js每个函数类型数据,都有一个prototype属性指向原型对象
原型对象又有个constructor属性,指向它的构造函数
  


9、作用域和作用域链

(1)作用域


(2)作用域链


10、执行栈和执行上下文

(1)执行栈


(2)执行上下文


11、闭包

(1)界说


(2)作用


(3)应用


12、内存泄漏和垃圾接纳机制

(1)内存走漏


(2)垃圾接纳机制


13、JS 执行机制

(1)进程和线程


(2)单线程


(3)同步和异步


   异步任务分为宏任务和微任务,任务队列也分为宏任务队列和微任务队列:
宏任务:运行情况提供的异步操作,如:setTimeOut、setInternal、DOM监听、UI rendering、ajax、变乱绑定等
微任务:js 语言自身的异步操作,如:Promise的then、catch、finally和process的nextTick等
在一个宏任务周期中会执行当前周期全部微任务,都执行完毕进入下一个宏任务周期,以是任务执行次序为:同步任务>微任务>宏任务
  14、回调函数

(1)界说


(2)特点


   解决回调函数this指向的方法:
- 箭头函数
- let self = this
  (3)长处


(4)回调地狱


  1. setTimeout(function () {
  2.    console.log('第一次打印');
  3.     setTimeout(function () {
  4.         console.log('第二次打印');
  5.         setTimeout(function () {
  6.             console.log('第三次打印');
  7.         }, 1000)
  8.     }, 2000)
  9. }, 3000)
复制代码

15、Promise

(1)界说


(2)特点


(3)优缺点


(4)基本用法


  1. const promise = new Promise((resolve,reject)=>{
  2.     //异步代码
  3.     setTimeout(()=>{
  4.         // resolve(['111','222','333'])
  5.         reject('error')
  6.     },2000)
  7. })
  8. promise.then((res)=>{
  9.     console.log('success',res)        // success
  10. }).catch((err)=>{
  11.     console.log('fail',err)                // error
  12. })
复制代码

  1. promise
  2. .then(result => {···})
  3. .catch(error => {···})
  4. .finally(() => {···});
复制代码

  1. const databasePromise = connectDatabase();
  2. const booksPromise = databasePromise.then(findAllBooks);
  3. const userPromise = databasePromise.then(getCurrentUser);
  4. Promise.all([
  5.   booksPromise,
  6.   userPromise
  7. ])
  8. .then(([books, user]) => pickTopRecommendations(books, user))
复制代码
16、async/await


(1)async


(2)await


17、改变this指向(call、apply、bind)

(1)this


   平凡函数:没有调用者,this默认指向window
箭头函数:this指向外包裹函数;如果没有外包裹函数,this指向window
特殊情况:严格模式下,this指向window就变为undefined
  (2)改变this指向的三个方法


  1. let obj1 = {
  2.         name : 'james',
  3.         getName1 : function(a,b,c) {
  4.             console.log(`getName ${this.name}`); // getName davis
  5.             console.log(`参数:${a},${b},${c}`); // 参数:1,2,3
  6.         }
  7.     }
  8. let obj2 = {
  9.         name : 'davis',
  10.         getName2 : function() {
  11.             console.log(`getName ${this.name}`);
  12.         }
  13.     }
  14. obj1.getName1.call(obj2)
  15. obj1.getName1.call(obj2,1,2,3)
复制代码
  call 在函数调用时改变函数this指向,第一个参数暂时改变this指向并立即执行
call 支持传入多个参数
  
  1. let obj1 = {
  2.     name : 'james',
  3.     getName1 : function(a,b,c) {
  4.         console.log(`getName ${this.name}`); // getName davis
  5.         console.log(`参数:${a},${b},${c}`); // 参数:1,2,3
  6.     }
  7. }
  8. let obj2 = {
  9.     name : 'davis',
  10.     getName2 : function() {
  11.         console.log(`getName ${this.name}`);
  12.     }
  13. }
  14. obj1.getName1.apply(obj2,[1,2,3])
复制代码
  apply 在函数调用时改变函数this指向,第一个参数暂时改变this指向并立即执行
apply 支持传入两个参数,第二个参数只能是数组情势
高级用法:Math.min/max.apply(false, arr)
  
  1. let obj1 = {
  2.     name : 'james',
  3.     getName1 : function(a,b,c) {
  4.         console.log(`getName ${this.name}`); // getName davis
  5.         console.log(`参数:${a},${b},${c}`); // 参数:1,2,3
  6.     }
  7. }
  8. let obj2 = {
  9.     name : 'davis',
  10.     getName2 : function() {
  11.         console.log(`getName ${this.name}`);
  12.     }
  13. }
  14. let fn = obj1.getName1.bind(obj2,1,2,3)
  15. fn()
复制代码
  bind 第一个参数改变this指向,不自动执行,调用返回函数永久改变this指向
bind 可以传入多个固定参数
  18、继续

(1)配景


(2)界说


(3)方式


19、防抖和节流

(1)防抖


  1. function debounce(fn, delay){
  2.         let timer = null;
  3.         return function(){
  4.                 clearTimeout(timer);
  5.                 timer = setTimeout(()=> {
  6.                         fn.apply(this, arguments);
  7.                 }, delay)
  8.         }
  9. }
复制代码
(2)节流


  1. function throttle(fn, delay){
  2.     let canUse = true
  3.     return function(){
  4.         if(canUse){
  5.             fn.apply(this, arguments)
  6.             canUse = false
  7.             setTimeout(()=>canUse = true, delay)
  8.         }
  9.     }
  10. }
复制代码
20、BOM/DOM

(1)常用的 BOM 对象和方法

BOM 对象和方法含义alert(“提示”)提示信息confirm(“确认”)确认信息prompt(“输入”)弹出输入框open(“url”,“black/self”,“新窗口巨细”)打开网页close()关闭当前网页 (2)常见的 DOM 元素选择方式

DOM 元素选择方式含义getElementById通过ID获取getElementsByClassName通过类名获取getElementsByTagName通过标署名获取document.documentElement获取 htmldocument.body获取 bodyquerySelector通过选择器获取一个元素(开辟常用)querySelectorAll通过选择器获取一组元素(开辟常用) 二、HTML/CSS

1、标签

(1)块级元素(display:block)


(2)行内元素(display:inline)


(3)行内块元素(display:inline-block)


标签类型分列方式宽高边距设置默认宽度块级元素独占一行均可单独设置容器的100%行内元素与相邻行内元素在一行宽、高无效,
程度方向上的内外边距可以设置,垂直方向无效自身内容的宽度行内块元素与相邻的行内(块)元素在一行,
中间有空白间隙均可单独设置自身内容的宽度 2、盒模型

名称含义width宽度height高度padding元素内容与元素边框间隔(添补)margin元素边框间距(盒子间距)
(1)尺度盒模型(content-box)


   盒子实际宽度 = border _ 2 + padding _ 2 + 内容宽度(width)
盒子实际高度 = border _ 2 + padding _ 2 + 内容高度(height)
  

(2)怪异盒模型(border-box)



3、浮动与清浮动

(1)浮动


(2)清浮动


   (1)添加高度:父元素添加 height/border/padding
(2)额外标签:浮动元素后添加一个空块级元素含属性 clear:both
(3)单伪元素:父元素添加 .clearfix::after{content:‘’; display:block;clear:both}
(4)双伪元素:父元素添加 .clearfix::after,.clearfix::before // 趁便扫除外边距塌陷
(5)overflow :父元素添加 overflow:hidden
  
  1. .clearfix::after{
  2.         content: '';
  3.         display: block;
  4.         height: 0;
  5.         clear: both;
  6.         visibility: hidden;
  7. }
复制代码
4、选择器

(1)基本选择器

基本选择器使用通配符同一调配全部属性,用*调用class元素中界说 class 属性,用 .类名调用id元素中界说id属性,用 #id名调用element用 标署名调用群组同时选择 多个类名,逗号隔开 (2)层次选择器

层次选择器使用包罗/后代元素被包罗在前一个元素内,选择此父元素内全部后代,用 父元素 后代元素 调用子匹配元素的孩子,用 父元素 > 子元素 调用相邻兄弟修改兄元素后第一个紧邻的弟元素样式,用 兄元素 + 弟元素 调用通用兄弟修改兄元素后全部弟元素样式,用 兄元素 ~ 弟元素 调用 (3)伪类选择器


链接伪类含义a:link未访问a:visited访问后a:hover悬停时a:avtive点击时
目的伪类含义<a href="#id">操作者变乱触发对象<p id="id">指向者变乱实施对象E:target查找点击操作者
UI元素状态伪类含义E:hover鼠标指针移到元素上E:active元素激活时input:focus表单位素获取焦点时input:enabled全部启用的表单位素input:disabled全部禁用的表单位素input:checked复选或单选按钮选中状态的表单位素
布局伪类含义E:first-child查找兄弟元素中的第一个元素E:last-child查找兄弟元素中的最后一个元素E:nth-child(n)查找兄弟元素中的第n个元素E:nth-last-child(n)查找兄弟元素中倒数第n个元素E:first-of-type查找同类型兄弟元素中的第一个元素E:last-of-type查找同类型兄弟元素中的最后一个元素E:nth-of-type(n)查找同类型兄弟元素中第n个元素E:nth-last-of-type(n)查找同类型兄弟元素中倒数第n个元素Enly-child查找只有一个子元素的元素Enly-of-type查找只有一个同类型子元素的元素E:empty查找元素内部无任何文本和标签的元素E:root查找 HTML 页面中的根元素(html)E:first-letter查找元素首字母E:first-line查找元素首行E:selection查找选中文本(修改字体/配景颜色)
否定伪类含义E:not(F)E元素中除了F以外的全部元素 (4)伪元素

伪元素含义E::aftercontent 在元素之后体现E::beforecontent 在元素之前体现E::first-letter界说指定元素首字母E::first-line界说指定元素首行E::selection界说被用户选取的部分(修改字体/配景颜色) (5)属性值匹配


属性值含义E[attr]包罗指定属性的元素[attr = “val”]包罗完全匹配属性值的元素[attr ^ = val]包罗 val 片断开头的元素[attr $ = val]包罗val 片断末端的元素[attr * = val]包罗 val 片断的元素[attr ~ = val]包罗属性值字符的元素,val 单独存在或与其他属性值空格隔开[attr | = val]包罗起始片断完全匹配的元素,起始值是 val 或 val- 开头 5、css 优先级

选择器优先级important!无条件优先内联样式1000id选择器100class、伪类、属性10标签伪元素1 6、常见布局方式

常见布局

(1)float


float含义none默认无浮动left左浮动right右浮动
  1. // 给父级元素添加了一个 ::after 伪元素,通过扫除伪元素的浮动,达到撑起父元素高度的目的.clearfix::after{
  2.         content: '';
  3.         display: block;
  4.         height: 0;
  5.         clear: both;
  6.         visibility: hidden;
  7. }
复制代码

  1. <div style="clear: both"></div>                // 易造成结构混乱,不利于后期维护
复制代码
(2)position


position类型是否脱标参照系是否常用static静态定位否尺度流很少relative相对定位否 (占位)自身位置单独使用absolute绝对定位是(不占位)带定位的父级搭配父级定位元素fixed固定定位是(不占位)浏览器可视区单独使用sticky粘性定位否 (占位)浏览器可视区单独使用   网页布局总结:
层级:尺度流(海底) ==> 浮动盒子(陆地) ==> 定位盒子(天空)
区别:
① 尺度流:块盒子上下分列
② 浮动:块盒子左右分列
③ 定位:盒子堆叠,默认后来居上,z-index 值调整堆叠次序
  (3)flex

功能:动态分列元素的方向、次序和方式


flex盒子属性含义flex-direction主轴方向flex-wrap换行flex-flow前两条简写情势justify-content主轴对齐方式align-items侧轴对齐方式align-content多根轴线对齐方式
justify-content含义flex-start当前行的最左边flex-end当前行的最右边center当前行的中间位置space-between两头对齐(间隔均分,首尾贴边)space-around两头环绕(间隔均分,首尾一半)space-evenly两头均分(间隔均分,首尾同均)
align-items含义flex-start当前行的最上边flex-end当前行的最下边center当前行的中间位置stretch子元素无高度或 auto,默认拉伸baseline以子元素第一行笔墨的基线对齐
项目盒子含义order项目的分列次序,数值越小分列越靠前,默以为0flex-grow项目的放大比例,默以为0flex-shrink项目的缩小比例,默以为1flex-basis主轴是否有多余空间flex前三者简写,默以为0 1 autoalign-self单个项目个性对齐方式 (4)grid


代码类型含义display:grid/inline-grid创建网格容器使其直系子元素成为网格项目grid-template-columns设置列设置列宽和数量(repeat())grid-template-rows设置行设置行高和数量(repeat())grid-gap设置行间距和列间距grid-row-gap与grid-column-gap的简写place-items设置项目位置align-items和justify-items的简写place-content设置grid位置align-content和justify-content的简写 (5)多列布局


功能代码含义划分列数column-count值的巨细代表列数多少调整列宽column-width列宽过小无影响,列宽过大改变列数调整间距column-gap一样平常不调整,默认即可列间隔线column-rule雷同border检索列高column-fill检索列高是否均分,或占满父元素高度 balance(默认)/auto(自动撑满)跨列标题column-span子元素设置all即可(前五全部设置父元素) (6)table

   父级容器 - display:table
子级容器 - display:table-cell
  (7)BFC


触发条件触发值根元素htmlfloatleft、right、inheritpositionabsolute、fixedoverflowhidden、auto、scrolldisplayflex、inline-flex、grid、inline-block、table-cell
   高度塌陷:父元素自适应高度,子元素浮动后脱标(离开尺度流),父元素高度为 0
  7、度量单位


  1. <meta name = "viewport" content = "width = device-width, initial-scale = 1.0, minimum-scale = 1.0, maximum-scale = 1.0, user-scalable = no">
复制代码
度量单位含义参照物px像素/%百分比父元素em相对于父元素字体巨细父元素字体rem相对根元素字体巨细根元素字体vw相对于视口的宽度,1vw 等于视口宽度的1%(总视口宽度为100vw)视口宽度vh相对于视口的高度,1vh 等于视口高度的1%(总视口高度为100vh)视口高度rpx小步伐独有,把全部装备的屏幕,在宽度上中分为750份750rpx 8、HTML5/CSS3 新特性

(1)语义化标签


(2)增强型表单




(3)媒体元素


(4)canvas 绘图


(5)svg 绘图(可伸缩矢量图)

(6)地理定位


(7)拖放API

(8)Web Worker


(9)Web Storage


Web Storage数据生命周期存放数据巨细与服务器端通讯易用性Cookie可设置失效时间,默认是关闭浏览器后失效4K左右每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题原生Cookie接口不友好,需要步伐员自己封装localStorage除非被扫除,否则永久保存5MB左右仅在客户端保存,不到场和服务器的通讯原生接口可以接受,也可以再次封装sessionStorage仅在当前会话下有用关闭页面或浏览器后被扫除5MB左右仅在客户端保存,不到场和服务器的通讯原生接口可以接受,也可以再次封装 (10)Websocket


(11)选择器

(12)边框与圆角

   border-radius:程度半径/垂直半径
四个值:左上/右上/右下/左下
三个值:左上/右上和左下/右下
两个值:左上和右下/右上和左下
一个值:4角见效
  (13)rgba


(14)盒子


(15)配景与渐变


(16)过渡


(17)变换


(18)动画


  1. @keyframes  animationname{
  2.   keyframes-selector{
  3.   cssStyles;
  4. }
复制代码
三、计算机网络

1、HTTP 报文


2、常见状态码

(1)状态码类型

状态码类别缘故原由短语1xxInformation(信息状态码)接受的请求正在处理2xxSuccess(成功状态码)请求正常处理完毕3xxRedirection(重定向状态码)需要进行附加操作以完成请求4xxClient Error(客户端错误状态码)服务器无法处理请求5xxServer Error(服务端错误状态码)服务器处理请求出错 (2)常见状态码

1xx信息状态码100(继续) 接受的请求正在处理2xx成功状态码200(成功) 服务器已成功处理请求,服务器提供了请求网页201(已创建) 请求成功并且服务器创建了新的资源202(已接受) 服务器已接受请求,但尚未处理3xx重定向状态码300(多种选择) 表示要完成请求,需要进一步操作,通常用来重定向301(永久移动) 资源已被分配了新的 URL302(暂时移动) 资源暂时被分配了新的 URL303(查察其他位置) 表示资源存在另一个URL,用GET方法获取资源304(未修改) 自从前次请求后,请求网页未修改过。服务器返回此相应时,不会返回网页内容4xx客户端错误状态码400(错误请求) 服务器不明白请求的语法401(未授权) 发送的请求需要身份验证,可能需要登录403(禁止) 服务器拒绝请求404(未找到) 服务器找不到请求的网页5xx服务端错误状态码500(服务器内部错误) 服务器碰到错误,无法完成请求501(尚未实施) 服务器不具备完成请求的功能502(错误网关) 服务器作为网关或代理,从上游服务器收到无效相应503(服务不可用) 服务器现在无法使用(由于超载或停机维护) 3、TCP 三次握手/四次挥手


(1)TCP连接的创建(三次握手)



   
  (2)TCP连接的开释(四次挥手)


   
  4、网页从开始到加载的过程(输入url以后你的电脑淦了什么)


5、回流/重绘

(1)界说


(2)特点


(3)优化


   如:boder可以代替boder-width、boder-color、boder-style
  
6、https 与 http 区别

区别HTTPHTTPS端口80443证书无需证书需要证书(用于验证服务器身份)连接TCP 三次握手创建连接之后传输数据TCP 连接之后客户端与服务器进行 SSL 加密,确定对话密钥完成加密后传输数据协议超文本传输协议,信息明文传输ssl加密传输协议,为浏览器和服务器之间的通讯加密,确保数据传输的安全安全性较低较高 7、跨域

(1)配景


(2)方法


   开辟时可以通过配置代理服务器或者浏览器安装插件的方式暂时解决,但上线后还是需要服务器做配置
  
   使用script标签的src属性实现跨域,通过将前端方法作为参数传递到服务器端,然后由服务器端注入参数后再返回,实现服务器端向客户端通讯。JSONP 使用简单且兼容性不错,但仅限于 get 请求
  
   当请求违反了同源策略,就在请求头添加 Access-Control-Allow-Origin 属性,浏览器会判定相应中 Access-Control-Allow-Origin 值是否和当前的地点相同,匹配成功后才会做相应处理,否则继续报错。缺点是会忽略cookie,而且对浏览器版本有一定的要求
  
   可以将前端项目部署到和接口同源的当前本地的服务器上。在vue.config.js 中进行代理配置,假设访问 http://localhost:9528/api/login 时会转换为间接访问 http://localhost:3000/api/login
  
   一种浏览器的API,它的目的是在一个单独的长期连接上提供全双工、双向通讯(同源策略对web sockets不适用)。web sockets原理:在JS创建了web socket之后,会有一个HTTP请求发送到浏览器以发起连接。取得服务器相应后,创建的连接会使用HTTP升级从HTTP协议交换为web sockt协议。 只有在支持web socket协议的服务器上才能正常工作
  
8、五层协议的体系布局


9、meta 标签


  1. <!-- 规定 html 字符编码 -->
  2. <meta charset="UTF-8">
  3. <!-- 设置移动端的视区窗口 -->
  4. <meta id="viewport" name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1; user-scalable=no;">
  5. <!-- 移动端点击300ms 延时,可以对放大禁用 -->
  6. <meta name="viewport" content="user-scalable=no">
  7. <meta name="viewport" content="initial-scale=1,maximum-scale=1">
  8. <!-- 设置http头 -->
  9. <meta http-equiv="content-Type" content="text/html; charset=gb2312">
  10. <!-- 图片403 -->
  11. <meta name="referrer" content="no-referrer" />
  12. <!-- DNS 预解析 -->
  13. <meta  http-equiv="x-dns-prefetch-control" content="on">
  14. <link  rel="dns-prefetch" href="//www.zhix.net">
复制代码
10、登录实现


11、浏览器的多进程

(1)缘故原由


(2)构成


(3)进程和线程

区别线程进程规模小大关系构成进程包罗线程资源调度和分配资源的基本单位拥有资源的基本单位并发执行同一进程差别线程差别进程间 12、进程间的通讯方式


四、Vue

1、MVVM 相应式


   
  2、nextTick


3、生命周期函数

生命周期含义beforeCreate创建之前,此时还没有data和MethodCreated创建完成,此时data和Method可以使用了;
在Created之后beforeMount之前如果没有el选项的话那么此时生命周期结束,停止编译,如果有则继续beforeMount渲染之前mounted渲染完成,且vm实例中已添加$el;
已替换DOM元素(双括号中的变量),此时可以操作DOM(但无法获取元素高度等属性,可借助nextTick())beforeUpdatedata改变后,对应的组件重新渲染之前updateddata改变后,对应的组件重新渲染完成beforeDestory实例销毁之前,此时实例仍可使用destoryed实例销毁后 4、computed 、watch、method的区别


5、Vue-router 模式


6、传值

五、Git

1、常用命令


2、rebase 和 merge





六、微信小步伐和uniapp

1、页面标签


2、生命周期


3、api


类型apiwxwx.request、wx.showModal、wx.showToast、wx.showLoading、
wx.chooseImage、wx.switchTab、wx.navigateo、wx.setStorageSync 等uniuni.request,uni.showModal、uni.showToast、uni.showLoading、
uni.chooseImage、uni.switchTab、uni…navigateo、uni.setStorageSync 等 4、变乱

类型触摸变乱名称函数传参函数接收参数wxbindtap<view bindtap="click" data-id="id"></view>fn(e){ this.setData({ currentId:e.currentTarget.dataset.id }) }uni@click<view @click="click(id)"></view>fn(id){ this.currentId = id } 5、for/if/src

类型for循环if判定src动态接收图片wx<view wx:for="{{currentList}}" wx:for-index="s_index" wx:for-item="s_item"></view><view wx:if="{{isShow}}"></view><image src="{{item.img}}"></image>uni<view v-for="(s_item,s_index) in currentList"></view><view v-if="isShow"></view><image :src="item.img"></image> 6、页面传参

类型代码接收参数wx<navigator url="/pages/live?id={{item.room_id}}"></navigator>onLoad(options){}uni<navigator :url="'/pages/live?id=' + item.room_id"></navigator>onLoad(options){} 7、全局数据

类型界说调用wxglobalData:{baseUrl:“www.com”}getApp().globalData.baseUrlunithis.prototype.baseUrl = “https://www.ccc”this.baseUrl 8、数组拼接

类型代码wxthis.setData({ list:this.data.list.concat(res.list) })unithis.list = […this.list,…res.list] 9、阻止冒泡

类型代码wx<view catchtap="clickTab">我是按钮</view>uni<view @click.stop="clickTab">我是按钮</view>   参考:
《想进互联网大公司?那这些题你总得会吧?前端面试题2022及答案前端面试题2022及答案》
《前端面试八股文(详细版)—上》
《微信小步伐与uni-app的区别》

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4