• web前端工程师面试之路


    CSDN话题挑战赛第2期
    参赛话题:面试宝典

    前请提要

    今年我的第一个面试是在我们本地的二线城市,当时我高兴极了,作为一个专升本的同学,这一路的经历并不平凡,从专科时候选修的web课程到自学vue,到专科被本地公司录取,并在3个月内转正,再到拿到本科录取通知,主动请辞工作,我一直在充实的生活环境里成长,在本科阶段我一边修学课程,一边做兼职项目,再到从一点英语底子没有,在1年时间内考下了英语四级,我很开心,一路的努力都有了自己想要的答案;这不,从各种投递渠道,我拿到了本地中型公司的面试通知;

    面试流程

    线上叮叮面试

    人事与我单独交流

    1. 互相打招呼
    2. 说了我为什么拿到了面试(实践经历丰富)
    3. 问我是否准备好,拉入技术负责人

    技术负责人开始面试,人事旁听

    面试题

    面试题一:

    你熟悉的框架是什么?

    问题剖析:

    这里面试官会考究我们所用框架是否符合公司需求及未来发展

    问题解答:

    我回答了vue,也是我最熟练的框架,这里不是说能制作基本的业务就行了,扩展讲了vue的生态;

    面试题二:

    说说你对cookies,sessionStorage和localStorage的理解

    问题剖析:

    这个题在面试前我就背了,而且印象很深,所以 古人云 凡事预则立,不预则废; 云的很有道理,像这类关键技术常用技术,你不会就是你实践不到位了

    问题解答:

    共同点:都是保存在浏览器端,且是同源的。


    cookies是为了标识⽤户⾝份⽽存储在⽤户本地终端上的数据,始终在同源http请求中携带,即cookies在浏览器和服务器间来回传,sessionstorage和localstorage不会⾃动把数据发给服务器,仅在本地保存。


    存储⼤⼩的限制不同。cookie保存的数据很⼩,不能超过4k,⽽sessionstorage和localstorage保存的数据⼤,可达到5M。


    数据的有效期不同。cookie在设置的cookie过期时间之前⼀直有效,即使窗⼝或者浏览器关闭。sessionstorage仅在浏览器窗⼝关
    闭之前有效。localstorage始终有效,窗⼝和浏览器关闭也⼀直保存,⽤作长久数据保存。


    作⽤域不同。cookie在所有的同源窗⼝都是共享;sessionstorage不能共享,即使同⼀页⾯;localstorage在所有同源

    就这样我几乎把细节都说了出来,面试官欣慰的点了头,最后又问了一些vue的基础知识,总体面试难度不难,面试结果是未通过,也许是我的薪资要的太高了;

    个人经验总结

    充分准备,再去面试;准备好你拿的出手的项目,最好是经过部署的,上线的,而后要认清自己,到底去那里最合适

    资料总结/刷题指南

    最后我在这里准备了一些我的面试资料,就是初期网上搜集的一些;大家参考; 这个是html格式,我总结下来拿手机的html查看器方便手机背;

    DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>面试总结title>
    head>
    <style>
        .content {
            display: flex;
            flex-direction: column;
        }
    
        span {
            font-weight: 600;
            color: red;
        }
    
        p {
            text-indent: 2em;
        }
    
        h3 {
            color: rgb(13, 13, 185);
        }
    
        code {
            text-indent: 2rem;
        }
    style>
    
    <body>
        <div class="content">
            <h3>!DOCTYPE有什么作⽤?标准模式与混杂模式如何区分?它们有何意义?h3>
            <p>告诉浏览器使⽤哪个版本的HTML规范来渲染⽂档。p>
            <p>DOCTYPE不存在或形式不正确会导致HTML⽂档以<span>混杂模式span>呈现。p>
        div>
        <div class="content">
            <h3>⾏内元素h3>
            <p>a span img input select label i bp>
        div>
        <div class="content">
            <h3>块级元素h3>
            <p>div ul ol li dl dt dd h1 pp>
        div>
        <div class="content">
            <h3>浏览器内核有哪些h3>
            <p>Safari:Webkitp>
            <p>Chrome:现在是Blink内核p>
            <p>IE:Trident内核p>
            <p>360,猎豹浏览器:IE+chrome双内核p>
        div>
        <div class="content">
            <h3>浏览器内核工作原理h3>
            <p>渲染引擎:负责解析html/xhtml/图形等文件,渲染网页,不同的内核渲染结果有差异p>
            <p>JS引擎:解析和执⾏javascript来实现⽹页的动态效果。p>
        div>
        <div class="content">
            <h3>HTML5有哪些新特性h3>
            <p>新增加了图像、位置、存储、多任务等功能。p>
            <p>canvas ,video,audio,语义化标签,nav,article,表单控件:calender,date,time...p>
        div>
        <div class="content">
            <h3>HTML语义化h3>
            <p>没有样式时可以让页⾯呈现出清晰的结构。p>
            <p>有利于SEO和搜索引擎建⽴良好沟通,有助于爬⾍抓取更多的信息p>
            <P>可以增强可读性P>
        div>
        <div class="content">
            <h3>cookies,sessionStorage和localStorageh3>
            <p>共同点:都是保存在浏览器端,且是同源的。p>
            <p>cookies是为了标识⽤户⾝份⽽存储在⽤户本地终端上的数据,始终在同源http请求中携带,即cookies在浏览器和服务器间来回传,sessionstorage和localstorage不会⾃动把数据发给服务器,仅在本地保存。
            p>
            <p>存储⼤⼩的限制不同。cookie保存的数据很⼩,不能超过4k,⽽sessionstorage和localstorage保存的数据⼤,可达到5M。p>
            <p>数据的有效期不同。cookie在设置的cookie过期时间之前⼀直有效,即使窗⼝或者浏览器关闭。sessionstorage仅在浏览器窗⼝关
                闭之前有效。localstorage始终有效,窗⼝和浏览器关闭也⼀直保存,⽤作长久数据保存。p>
            <p>作⽤域不同。cookie在所有的同源窗⼝都是共享;sessionstorage不能共享,即使同⼀页⾯;localstorage在所有同源p>
        div>
        <div class="content">
            <h3>.label属性h3>
            <p>label标签⽤来定义表单控件间的关系p>
            <p>for:对焦表单idp>
            <P>accesskey:热键对焦P>
        div>
        <div class="content">
            <h3>浏览器内多个标签页之间的通信h3>
            <p>WebSocketp>
            <p>也可以调⽤ localstorge、cookies 等本地存储⽅式。 localstorge 在另⼀个浏览上下⽂⾥被添加、修改或删除时,它都会触发⼀个p>
        div>
        <div class="content">
            <h3>a标签h3>
            <p>:link,未被访问时p>
            <p>:visited,访问后p>
            <p>:hover,悬浮时p>
            <p>:active,鼠标点击-松开期间p>
        div>
        <div class="content">
            <h3>⽹页验证码h3>
            <p>区分⽤户是计算机还是⼈的程序;防止恶意攻击,如分布式拒绝服务攻击(DDoS)p>
        div>
        <div class="content">
            <h3>标签语义h3>
            <p>视觉样式标签:b i u sp>
            <p>语义样式标签:strong em ins del codep>
        div>
        <div class="content">
            <h3>xhtml/htmlh3>
            <p>html元素必须正确嵌套,不能乱p>
            <p>html属性必须是⼩写的p>
            <P>html属性值必须加引号;P>
        div>
        <div class="content">
            <h3>图片格式h3>
            <p>jpg是有损压缩格式,体积小p>
            <p>png是⽆损压缩格式,8位,24位p>
            <P>svg是可缩放的矢量图形,基于xml,高分辨率P>
            <p>webp同时提供了有损压缩与无损压缩(可逆压缩)的图片文件格式,为了减少文件大小p>
        div>
        <div class="content">
            <h3>div+css 的布局h3>
            <p>⽅便改版和SEOp>
            <p>表现与结构相分离p>
            <P>页⾯加载速度更快、结构化清晰P>
        div>
        <div class="content">
            <h3>meta viewporth3>
            <p>viewport是虚拟窗口,在移动端浏览器下出现p>
            <p>meta viewport 标签的作⽤是让当前 viewport 的宽度等于设备的宽度,同时不允许⽤户进⾏⼿动缩放p>
        div>
        <div class="content">
            <h3>Canvash3>
            <p>Canvas 元素⽤于在⽹页上绘制图形,该元素标签强⼤之处在于可以直接在 HTML 上进⾏图形操作。包括不限于验证码生成,动画效果p>
        div>
        <hr>cssend
        <div class="content">
            <h3>css盒子模型h3>
            <p>content,padding,border,marginp>
        div>
        <div class="content">
            <h3>Sass、scss、lessh3>
            <p>同属于动态样式语言,比css多出很多功能(如变量、嵌套、运算,混入(Mixin)、继承、颜色处理,函数等)p>
            <p>Sass是一款css预处理语言,sass是靠缩进表示嵌套关系,与css规范不符,所以不被广为接受p>
            <p>SASS版本3.0之前的后缀名为.sass,而版本3.0之后的后缀名.scss。p>
            <p>scss一款css预处理语言,SCSS 是 Sass 3 引入新的语法,其语法完全兼容 CSS3,并且继承了 Sass 的强大功能,语法与css3相同,后缀.scssp>
            <p>SCSS 是 Sass 3 引入新的语法,其后缀名是分别为 .sass和.scss两种p>
            <p>scss是sass的一个升级版本,完全兼容sass之前的功能p>
            <p>LESS,精简样式表,语法与scss大同小异,变量声明上less-@,scss-$p>
            <p>引入外部文件 scss: import 开题必须为_,less则与css引入无异p>
            <p>sass的安装需要Ruby环境,是在服务端处理的,而less是需要引入less.js来处理less代码输出css到浏览器p>
            <p>在一般前端项目里面使用 yarn add less yarn add less-loader添加到对应的项目里面p>
        div>
        <div class="content">
            <h3>css层叠样式表h3>
            <p>流布局,float改变流p>
            <p>css画三角形 :div的width和height为0,只用边框宽来填充,边框样式设置为实线“solid”;然后顶部边框设置颜色,剩下的三个边框的颜色设置为透明“transparent”值即可。p>
            <P>css实现元素垂直居中 : table布局(vertical-align:middle),flex 布局, absolute绝对定位+translate, 行内元素 line-height 布局P>
            <p>css样式优先级:!important > style 1000 >Id 100 > class 10 > tag 1 p>
            <p>display:none ; 彻底消失,会引发页面重排p>
            <p>visibility:hidden; 单纯隐藏,位置还在,和opacity:0一样p>
        div>
        <div class="content">
            <h3>BFCh3>
            <p>块级格式化上下文,独立渲染区域,规定了内部box如何布局,并且与这个区域外部毫不相干p>
            <p>作用:避免margin重叠;自适应两栏布局;清除浮动。p>
            <P>触发:float的值不是none;position的值不是static或者relative;display的值是inline-block、block、table-cell、flex、table-caption或者inline-flex;overflow的值不是visible。
            P>
        div>
        <div class="content">
            <h3>px、em、rem、vh、vwh3>
            <p>px物理像素,绝对单位;p>
            <p>em相对于自身字体大小,自身没有会向上寻找,相对单位p>
            <P>rem相对于html的字体大小,相对单位P>
            <p>vh,屏幕高度p>
            <p>vw,屏幕宽度p>
        div>
        <div class="content">
            <h3>css可继承的属性h3>
            <p>可继承的属性:文本类:text-indent、text-align、line-height、word-spacing、letter-spacing、text-transform、direction、color;p>
            <p>字体类:font、font-family、font-weight、font-size、font-stylep>
            <P>visibility、caption-side、border-collapse、border-spacingP>
        div>
        <div class="content">
            <h3>scss是什么 :css的预编译语言h3>
            <p>先装css-loader、node-loader、sass-loader等加载器模块;p>
            <p>style标签加上lang属性 ,例如:lang=”scss”p>
        div>
        <div class="content">
            <h3>JSONP的原理h3>
            <p>jsonp是使用方法回调的原理p>
            <code>function showjson(json){
                alert(json.url);
            }code>
        div>
        <hr> js
        <div class="content">
            <h3>线程和进程h3>
            <p>进程:cpu分配资源的最小单位(是能拥有资源和独立运行的最小单位)p>
            <p>线程:是cpu最小的调度单位(线程是建立在进程的基础上的一次程序运行单位,一个进程中可以有多个线程)p>
            <p>一个进程内有多个线程,执行过程是多条线程共同完成的,线程是进程的部分。p>
        div>
        <div class="content">
            <h3>为什么js是单线程h3>
            <p>JS是单线程的原因主要和JS的用途有关,JS主要实现浏览器与用户的交互,以及操作DOMp>
            <p>为了避免复杂情况的产生(如多线程操作dom)p>
            <p>HTML5提出Web Worker标准,允许JavaScript脚本创建多个线程,但是子线程完全受主线程控制,且不得操作DOM。p>
        div>
        <div class="content">
            <h3>js基本数据类型h3>
            <p>string, number, boolean, undefiend, null, symbolp>
            <p> number、boolean 和 string 有包装对象,代码运行的过程中会找到对应的包装对象,然后包装对象把属性和方法给了基本类型,然后包装对象被系统进行销毁。p>
        div>
        <div class="content">
            <h3>内存泄漏h3>
            <p>闭包(全局变量和局部变量问题):能够读取其他函数内部变量的函数。p>
            <code>
                function f1(){
    
                    var n=999;   
                    
                    function f2(){
                    alert(n);    // 999
                    }
                    
                    }
            code>
            <p>意外的全局变量p>
            <p>遗忘的定时器p>
        div>
        <div class="content">
            <h3>js数组对象操作h3>
            <p>数组合并:arr1.concat(arr2, ······)p>
            <p>对象合并:Object.assign()p>
            <code>et obj1 = {name: '温情'}
                let obj2 = {age: '22'}
                
                const newObj = Object.assign({}, obj1, obj2);code>
        div>
        <div class="content">
            <h3>作用域,什么是作用域链h3>
            <p>规定变量和函数的可使用范围称为作用域p>
            <p>查找变量或者函数时,需要从局部作用域到全局作用域依次查找,这些作用域的集合称作用域链。p>
        div>
        <div class="content">
            <h3>js异步编程h3>
            <p>回调函数(callback);存在地狱回调问题,难以维护p>
            <p>事件监听。不取决于代码执行顺序p>
            <p>Promisep>
            <p>Generatorp>
            <p>生成器 async/await,是ES7提供的一种解决方案。p>
        div>
        <div class="content">
            <h3>堆内存,栈内存h3>
            <p>栈内存主要用于存储各种基本类型的变量p>
            <p>堆内存主要负责像对象Object这种变量类型的存储p>
        div>
        <div class="content">
            <h3>判断类型h3>
            <p>typeof 判断基本类型,null属于objectp>
            <p>instanceof不能检测基本数据类型,它是用来判断个实例是否属于某种类型p>
        div>
        <div class="content">
            <h3>跨域h3>
            <p>JSONP:jsonp就利用了script标签进行跨域取得数据,不能解决postp>
            <p>ajax实现跨域:dataType:'jsonp', //=> 执行jsonp请求p>
            <p>CORS跨域资源共享,服务端设置Access-Control-Allow-Origin就可以开启CORS,不安全p>
            <p>Nginx反向代理p>
            <p>脚手架配置跨域,将服务端域模拟为本地域p>
        div>
        <div class="content">
            <h3>js内置对象h3>
            <p>数据封装类对象:Object、Array、Boolean、Number 和 String
                  其他对象:Function、Arguments、Math、Date、RegExp、Error....p>
        div>
        <div class="content">
            <h3>防抖和节流h3>
            <p>函数防抖
                当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次 : 输入搜索p>
            <p>函数节流
                当持续触发事件时,保证在一定时间内只调用一次事件处理函数p>
            <p>防抖是将多次执行变为最后一次执行,节流是将多次执行变为每隔一段时间执行p>
            <p>代码区别就在于if这里是清除定时器还是直接return终止函数p>
        div>
        <div class="content">
            <h3>apply(),call(),bind()h3>
            <p>apply()和call()都是每个函数或对象都拥有的非继承的方法。都是用来改变this的指向的p>
            <p>db理解为作用域p>
            <code>obj.myFun.call(db,'成都','上海');     // 德玛 年龄 99  来自 成都去往上海
                obj.myFun.apply(db,['成都','上海']);      // 德玛 年龄 99  来自 成都去往上海  
                obj.myFun.bind(db,'成都','上海')();       // 德玛 年龄 99  来自 成都去往上海
                obj.myFun.bind(db,['成都','上海'])();   // 德玛 年龄 99  来自 成都, 上海去往 undefinedcode>
            <p>all 的参数是直接放进去的,第二第三第 n 个参数全都用逗号分隔p>
            <p>apply 的所有参数都必须放在一个数组p>
            <p>bind 除了返回是函数以外,它 的参数和 call 一样。p>
        div>
        <div class="content">
            <h3>setImmediateh3>
            <p>setImmediate表示立即执行,它是宏任务,回调函数会被放置到事件循环的check阶段。p>
            <p>在应用中如果大量的计算型任务,它是不适合放在主线程中执行的,因为计算任务会阻塞主线程,主线程一旦被阻塞,其他任务就需要等待,p>
        div>
        <div class="content">
            <h3>for-in,for-ofh3>
            <p>for in 和 for of 都可以循环数组,for in 遍历数组(下标)、遍历对象(key),而for of 遍历数组和对象的值p>
            <p>for in 可以遍历对象,for of 不能遍历对象,只能遍历带有iterator接口的,例如Set,Map,String,Arrayp>
            <p>for in适合遍历对象,for of适合遍历数组。p>
            <p>for in遍历的是数组的索引,对象的属性,以及原型链上的属性。p>
        div>
        <hr>'js-end'
        <div class="content">
            <h3>vue 与 react 框架核心价值h3>
            <p>组件化,嵌入开发p>
            <p>数据视图分离,数据驱动视图 利用vdomp>
            <p>关注于业务数据p>
        div>
        <div class="content">
            <h3>为什么使用vueh3>
            <p>渐进式框架 :有极高的维护和扩展特性p>
            <p>与现代化工具链,第三方库整合良好p>
            <p>MVVM设计模式 :双向数据绑定,数据-视图分离p>
            <p>体积小,市场成熟p>
            <p>有成熟的构建工具支持p>
        div>
        <div class="content">
            <h3>vdom (virtual dom) 虚拟domh3>
            <p>虚拟DOM,DOM树的虚拟表现。因为改变真实dom代价太大,会引发dom重排p>
        div>
        <div class="content">
            <h3>React / Vue 项目时为什么要在列表组件中写 keyh3>
            <p>key 是给每一个 vnode 的唯一 id,可以依靠 key,更准确,更快的拿到 oldVnode 中对
                应的 vnode 节点p>
        div  class="content">
        <h3>vdom key的作用h3>
        <p>key最好为唯一标识p>
        <p>key是虚拟DOM对象的标识,当状态中的数据发生变化时,Vue会根据【新数据】生成【新的虚拟DOM】,随后Vue进行【新虚拟DOM】的差异比较,也就是diff算法,比较无差异的节点不需要更新p>
        div>
        <div class="content">
            <h3>data,stateh3>
            <p>保证组件的独立性和可复用性p>
        div>
        <div class="content">
            <h3>vue 响应式系统h3>
            <p>任何一个 Vue Component 都有一个与之对应的 Watcher 实例p>
            <p>computed擅长处理的场景:一个数据受多个数据影响;watch擅长处理的场景:一个数据影响多个数据。p>
            <p>功能上:computed是计算属性,watch是监听一个值的变化,然后执行对应的回调。p>
        div>
        <div class="content">
            <h3>Vue的生命周期h3>
            <p>将要创建 ===>调用beforeCreate函数
                创建完毕 ===>调用created函数
                将要挂载 ===>调用beforeMount函数
                挂载完毕 ===>调用mounted函数
                将要更新 ===>调用beforeUpdate函数
                更新完毕 ===>调用uodated函数
                将要销毁 ===>调用beforeDestory函数
                销毁完毕 ===>调用destroyed函数p>
            <p>vue3 create周期被合并到了setup阶段p>
            <p>第一次页面加载时会触发 beforeCreate, created, beforeMount, mounted 这几个钩子p>
            <p>DOM 渲染在 mounted 中就已经完成了。p>
            <p>onActivated(): 被包含在 'keep-alive' 中的组件,会多出两个生命周期钩子函数,被激活时执行;
                onDeactivated(): 比如从 A 组件,切换到 B 组件,A 组件消失时执行;p>
            <p>onErrorCaptured //错误警告
                onRenderTracked // 状态跟踪
                onRenderTriggered //状态触发p>
    
    
        div>
        <div class="content">
            <h3>组件之间是怎么通信的h3>
            <p>父子传参:父组件通过自定义属性的方式传参,通过props属性给子组件传参,子组件通过props属性去接收参数。p>
            <p>子父传参:子组件通过自定义事件的方式传参,通过$emit去进行传参。p>
            <p>单向数据流:父级 prop 的更新会向下流动到子组件中,但是反过来则不行,防止从子组件意外变更父级组件的状态及复杂理解p>
            <p><span>vue3span>通信p>
            <p>Provide/inject 子父组件穿透通信p>
            <p>vue3 宏编译函数 不需要导入p>
            <p>defineProps,defineEmitsp>
        div>
        <div class="content">
            <h3>vue3h3>
            <p>没有thisp>
            <p>用组合式 API 和 'script setup' 编写的 ,函数式编程p>
        div>
        <div class="content">
            <h3>自定义组件h3>
            <p>在 components 目录新建组件文件
                在需要用到的页面import中导入p>
            <p>p>
        div>
        <div class="content">
            <h3>CSS 只在当前组件中起作用h3>
            <p>修改为'style scoped'p>
        div>
        <div class="content">
            <h3>Vue 路由跳转的几种方式wh3>
            <p>第一种方式:router-link (声明式路由)
                第二种方式:router.push(编程式路由)
                第三种方式:this.$router.push() (函数里面调用)
                第四种方式:this.$router.replace() (用法同上,push)
                第五种方式:this.$router.go(n)p>
        div>
        <div class="content">
            <h3>Vue的路由实现:hash模式和history模式h3>
            <p>hash 模式 (默认)
                工作原理:监听网页的hash值变化 —>onhashchange事件, 获取location.hash
                使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载。
                会给用户好像跳转了网页一样的感觉, 但是实际上没有跳转
                主要用在单页面应用(SPA)p>
            <p>history 模式
                工作原理: 主要利用history.pushState() API 来改变URL, 而不刷新页面.p>
        div>
        <div class="content">
            <h3>Vue与Angular以及React的区别h3>
            <p>Angular 是一个应用设计框架与开发平台,用于创建高效、复杂、精致的单页面应用。p>
            <p>React 是一个用于构建用户界面的 JavaScript 库p>
            <p>ue (读音 /vju/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue
                的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。p>
        div>
        <div class="content">
            <h3>vue-router中导航守卫有哪些h3>
            <p>全局前置守卫、路由独享守卫、组件内守卫p>
        div>
        <div class="content">
            <h3>vue-指令h3>
            <p>v-if:判断是否隐藏;
                v-for:数据循环;
                v-bind:class:绑定一个属性;
                v-model:实现双向绑定;p>
            <p>自定义指令p>
            <p>自定义指令需要通过 directives 选项注册p>
            <p>可以全局注册和组件内注册p>
        div>
        <div class="content">
            <h3>v-if , vi-showh3>
            <p>v-if 控制dom节点 ,v-if隐藏会将组件销毁,且切换销毁高p>
            <p>v-show 通过display,更高的初始渲染消耗,不会阻止事件监听p>
        div>
        <div class="content">
            <h3>vuex框架中状态管理,vue3,pinia更轻量易用h3>
            <p>场景有:单页应用中,组件之间的状态,音乐播放、登录状态、加入购物车等。p>
            <p>State、 Getter、Mutation 、Action、 Module。p>
            <p>Action 类似于 mutation,不同在于:Action 提交的是 mutation,而不是直接变更状态p>
        div>
        <div class="content">
            <h3>keep-alive 的作用是什么h3>
            <p>包裹动态组件时,会缓存不活动的组件实例,主要用于保留组件状态或避免重新渲染;p>
        div>
        <div class="content">
            <h3>vue-loader h3>
            <p>解析.vue文件的一个加载器。p>
            <p>用途:js 可以写es6、style样式可以scss或less、template可以加jade等。p>
        div>
        <div class="content">
            <h3>vue dom 操作 通过refh3>
            <p>$el对象操作样式p>
            <p>$parent,$children 操作节点p>
            <p>vm.$emit( event, arg ) //触发父级实例上的事件p>
            <p>$refs ,它仅仅是一个直接操作子组件的应急方案p>
            <p> $on(eventName) 监听当前实例上的自定义事件p>
        div>
        <div class="content">
            <h3>vue,目录说法h3>
            <p>assets件夹是放静态资源;components是放组件;router是定义路由相关的配置;view视图;app.vue是个应主组件;main.js是件p>
            <p>package.json 依赖配置p>
        div>
        <div class="content">
            <h3>vue常的修饰符h3>
            <p>stop:等统JavaScript中的event.stopPropagation(),防事件冒泡p>
            <p>prevent:等同于JavaScript中的event。preventDefault(),防执预设的为(如果事件可取消,则取消该事件,不停事件的进步
                传播);p>
            <p>capture:与事件冒泡的向相反,事件捕获由外到内p>
            <p>self:只会触发范围内的事件,不包含元素p>
            <p>.once:只会触发1次。p>
        div>
        <div class="content">
            <h3>初始化闪动h3>
            <p>初始化前,div不被vue管理,容易花屏p>
            <p>在css加上[v-cloak]{display:none;},如果没有彻底解决问题,则在根元素加上style=“display:none;” :style=“{display:block}”p>
        div>
        <div class="content">
            <h3>vue更新数组时触发视图更新的方法h3>
            <p>push();pop();shift();unshift();splice();sort();reverse()p>
        div>
        <div class="content">
            <h3>vue mock数据h3>
            <p>模拟响应数据,模拟各种场景p>
            <p>后端接没有开发完成之前,前端可以已有的接档,在真实的请求上拦截ajax,并根据mockjs的mock数据的规则,模拟真实接返回的数据p>
        div>
        <div class="content">
            <h3>vue深度组件传参排错h3>
            <p>确保无拼写错误的情况下:watch监听函数的deep参数来深度监听p>
            <p>因为组件通信是由父组件到子组件为单向数据流,所以需要确保参数衔接问题p>
            <p>如果依然无法排除出错误,可以使用vue3的provide及inject透传p>
        div>
        <div class="content">
            <h3>ref,toref,torefsh3>
            <p>ref的本质是拷贝,修改响应式数据,不会影响到原始数据,视图会更新p>
            <p>toRef、toRefs的本质是引用,修改响应式数据,会影响到原始数据,视图不会更新p>
            <p>toRef 一次仅能设置一个数据,接收两个参数,第一个参数是哪个对象,第二个参数是对象的哪个属性p>
            <p>toRefs接收一个对象作为参数,它会遍历对象身上的所有属性,然后挨个调用toRef执行p>
            <p>toRefs如果用来转props将会使参数失去父组件响应式流,从而变为独立页面refp>
        div>
    body>
    <script>
    script>
    
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242
    • 243
    • 244
    • 245
    • 246
    • 247
    • 248
    • 249
    • 250
    • 251
    • 252
    • 253
    • 254
    • 255
    • 256
    • 257
    • 258
    • 259
    • 260
    • 261
    • 262
    • 263
    • 264
    • 265
    • 266
    • 267
    • 268
    • 269
    • 270
    • 271
    • 272
    • 273
    • 274
    • 275
    • 276
    • 277
    • 278
    • 279
    • 280
    • 281
    • 282
    • 283
    • 284
    • 285
    • 286
    • 287
    • 288
    • 289
    • 290
    • 291
    • 292
    • 293
    • 294
    • 295
    • 296
    • 297
    • 298
    • 299
    • 300
    • 301
    • 302
    • 303
    • 304
    • 305
    • 306
    • 307
    • 308
    • 309
    • 310
    • 311
    • 312
    • 313
    • 314
    • 315
    • 316
    • 317
    • 318
    • 319
    • 320
    • 321
    • 322
    • 323
    • 324
    • 325
    • 326
    • 327
    • 328
    • 329
    • 330
    • 331
    • 332
    • 333
    • 334
    • 335
    • 336
    • 337
    • 338
    • 339
    • 340
    • 341
    • 342
    • 343
    • 344
    • 345
    • 346
    • 347
    • 348
    • 349
    • 350
    • 351
    • 352
    • 353
    • 354
    • 355
    • 356
    • 357
    • 358
    • 359
    • 360
    • 361
    • 362
    • 363
    • 364
    • 365
    • 366
    • 367
    • 368
    • 369
    • 370
    • 371
    • 372
    • 373
    • 374
    • 375
    • 376
    • 377
    • 378
    • 379
    • 380
    • 381
    • 382
    • 383
    • 384
    • 385
    • 386
    • 387
    • 388
    • 389
    • 390
    • 391
    • 392
    • 393
    • 394
    • 395
    • 396
    • 397
    • 398
    • 399
    • 400
    • 401
    • 402
    • 403
    • 404
    • 405
    • 406
    • 407
    • 408
    • 409
    • 410
    • 411
    • 412
    • 413
    • 414
    • 415
    • 416
    • 417
    • 418
    • 419
    • 420
    • 421
    • 422
    • 423
    • 424
    • 425
    • 426
    • 427
    • 428
    • 429
    • 430
    • 431
    • 432
    • 433
    • 434
    • 435
    • 436
    • 437
    • 438
    • 439
    • 440
    • 441
    • 442
    • 443
    • 444
    • 445
    • 446
    • 447
    • 448
    • 449
    • 450
    • 451
    • 452
    • 453
    • 454
    • 455
    • 456
    • 457
    • 458
    • 459
    • 460
    • 461
    • 462
    • 463
    • 464
    • 465
    • 466
    • 467
    • 468
    • 469
    • 470
    • 471
    • 472
    • 473
    • 474
    • 475
    • 476
    • 477
    • 478
    • 479
    • 480
    • 481
    • 482
    • 483
    • 484
    • 485
    • 486
    • 487
    • 488
    • 489
    • 490
    • 491
    • 492
    • 493
    • 494
    • 495
    • 496
    • 497
    • 498
    • 499
    • 500
    • 501
    • 502
    • 503
    • 504
    • 505
    • 506

    ☃️ 个人简介:一个喜爱技术的人。
    🌞 励志格言: 脚踏实地,虚心学习。
    ❗如果文章还可以,记得用你可爱的小手点赞👍关注✅,我会在第一时间回、回访,欢迎进一步交流。

  • 相关阅读:
    CSS实现步骤进度条——前端每日一练
    EasyConnect
    搜索技术【深度优先搜索】 - 排列树
    mysql(5.5)启动服务和环境配置
    如何通过快鲸scrm解决线索管理难、线索浪费严重等问题
    Python 局部变量global,全局变量local ,非局部变量nonlocal ,Enclosing function locals作用域
    零基础产品经理如何迅速学习Axure原型制作?快速上手攻略!
    SAD notes
    在HbuilderX中,@tap和@click的含义 与 区别 及 使用方式
    Qt 控制台程序变 非控制台
  • 原文地址:https://blog.csdn.net/g18204746769/article/details/127618746