zoukankan      html  css  js  c++  java
  • CVTE电话面

    1.为什么使用Vuex来管理状态

    2.还有什么多级组件的传递方式

      $attrs/$listeners:实现多层嵌套传递,$attrs包含没有被props声明的属性(不包括class和style),如果某个prop被子组件声明了(这个属性已经再子组件的props中),再子组件的$attr会把声明的prop踢出,并且可以通过v-bind=“$attrs”传入内部组件。inheritAttrs:false可以关闭自动挂载到根元素上的没有再props声明的属性。

      $listeners:包含了父作用域中的(不含.native修饰器的)v-on事件监听器,它可以通过v-on=“$listeners”传入内部组件。

    Provide/inject:主要解决了跨级组件间的通信问题,祖先通过provider来提供变量,然后再子孙组件中通过inject来注入变量。但是provide和inject绑定并不是响应式的,如果传入例如一个可监听的对象,那么其对象的属性还是可响应的。

    3.Vue的双向绑定

    https://segmentfault.com/a/1190000006599500

    mvvm 模式实现双向绑定,view与model不直接进行交互利用VM来实现数据的交互,MVVM 作为数据绑定的入口,整合 Observer(数据监听器,能够对数据对象的所有属性进行监听,如有变动可拿到最新值并通知订阅者)、Compile (指令解析器,对每个元素节点的指令进行扫描和解析,根据指令模板替换数据,以及绑定相应的更新函数)和 Watcher (观察者,能够订阅并收到每个属性变动的通知,执行指令绑定的相应的回调函数)三者,通过Observer来监听自己的 model 数据变化,通过 Compile 来解析编译模板指令,最终利用 Watcher 搭起 Observer 和 Compile 之间的通信桥梁,达到数据变化 -> 视图更新;视图交互变化(input) -> 数据 model 变更的双向绑定效果。

    4.MVVM是什么演变过来的

    https://www.jianshu.com/p/b0aab1ffad93

    https://www.jianshu.com/p/ff6de219f988

    5.MVC解决了什么问题,为什么前端采用MVC模式

    6.状态码304,404,500

    304 缓存未改动,使用原先缓存内容,404服务器请求不到页面资源

    500,服务器内部错误

    7.协商缓存和强制缓存

    https://segmentfault.com/a/1190000008956069

    8.ES6的特性

    9.面向对象的三大特性

    继承,封装,多态

    封装:就是当你需要隐藏一些属性和方法是,就可以将这些属性和方法封装起来,然后通过一个外部可以调用的特定接口(也可以说是一个公共的方法)进行调用。

    继承:原型链的继承,构造函数继承,组合继承,寄生继承,寄生组合继承

    多态:多态就是通过对传递的参数判断来执行逻辑,即可实现一种多态处理机制

    10.TCP,UDP的区别,http是基于哪个协议的,是哪个层,DNS是哪个层

    TCP是面向连接的,而UDP是无连接的,即发送数据前不建立连接

    TCP提供可靠的服务,通过TCP传输的数据无差错,不丢失,不重复;UDP尽最大努力交付,不保证可靠交付,可能出现丢包。

    TCP是面向字节流,分组发送;UDP面向报文,并且网络拥塞不会使得发送速率降低

    TCP只能是1对1的,UDP支持一对多

    http是基于TCP协议的,是应用层,DNS解析也是应用层

    11.Js函数提升和变量提升,为什么

    js代码执行前引擎会先进行预编译,预编译期间会将变量声明与函数声明提升至其对应作用域的最顶端。

    在我们的js中,代码的执行时分两步走的,1、解析 2、一步一步执行

    那么变量提升就是变量声明会被提升到作用域的最顶上去,也就是该变量不管是在作用域的哪个地方声明的,都会提升到作作用域的最顶上去。函数声明式,会将函数的声明和定义一起提升到作用域的最顶上去。如果函数声明和变量声明使用的是同一个变量名称,函数声明的优先级高于变量声明的优先级。

    12.写了一个JS脚本,在浏览器上执行,是怎么样的一个执行过程(任务队列)

    https://www.jianshu.com/p/12b9f73c5a4f

    13.Vue-router原理

    https://www.jianshu.com/p/4295aec31302

    可以通过mode方法选择路由方式,harsh模式,history模式,

             hash模式:在浏览器中符号“#”,#以及#后面的字符称之为hash,用window.location.hash     读取;
             特点:hash虽然在URL中,但不被包括在HTTP请求中;用来指导浏览器动作,对服务 端完全无用,hash不会重加载页面。加载url中指示网页中的位置。
             hash 模式下,仅 hash 符号之前的内容会被包含在请求中,如 http://www.xxx.com,因          此对于后端来说,即使没有做到对路由的全覆盖,也不会返回 404 错误。

    HashHistory.push() **将新路由添加到浏览器访问历史的栈顶

    replace()方法与push()方法不同之处在于,它并不是将新路由添加到浏览器访问历史的栈顶,而是替换掉当前的路由

             这种 #。后面 hash 值的变化,并不会导致浏览器向服务器发出请求,浏览器不发出请          求,也就不会刷新页面。另外每次 hash 值的变化,还会触发hashchange 这个事件,       通过这个事件我们就可以知道 hash 值发生了哪些变化。然后我们便可以监听         hashchange来实现更新页面部分内容的操作:

             history模式:通过back(), forward(), go()等方法,我们可以读取浏览器历史记录栈的信        ,进行各种跳转操作。且提供了两个新方法:pushState(),replaceState()可以对      浏览器历史记录栈进行修改,以及popState事件的监听到状态变更。这2个方法有个          共同的特点:当调用他们修改浏览器历史栈后,虽然当前url改变了,但浏览器不会立  即发送请求该url,这就为单页应用前端路由,更新视图但不重新请求页面提供了基础
             history 模式下,前端的 URL 必须和实际向后端发起请求的 URL 一致,  如 http://www.xxx.com/items/id。后端如果缺少对 /items/id 的路由处理,将返回 404         错误。

  • 相关阅读:
    科学使用睡眠周期,你会比别人拥有更多时间
    遇见那个对的人,便是爱情
    因为专注,所以伟大
    从来都没有爱情发生的人生
    每天只要做好三件事就行了 积跬步以至千里
    不读书的中国人
    两性思维的差异与情侣夫妻间争吵
    结婚的意义 — 几米
    二维码工具类
    验证码图片生成工具类——Captcha.java
  • 原文地址:https://www.cnblogs.com/mlebk/p/12596655.html
Copyright © 2011-2022 走看看