zoukankan      html  css  js  c++  java
  • 面试题

    VUE常用指令
    {{}} 插值表达式
     
    v-cloak解决vue页面闪烁问题 
    当网络比较卡的时候,我们可以为最外层的div元素 添加 v-cloak 防止用户看到插值表达式
    注意: 必须写一个css样式 [v-cloak]{ display:none} 不然没有效果
    解决办法: 
    <style>
      [v-cloak]{ display:none} // css样式
    </style>
     
    <div id="app" v-cloak>{{ msg }}</div>
     
    v-html
    在元素的属性节点上 添加v-htmll如:<p v-html="msg"></p> // 覆盖原有内容
    会解析标签
    msg 是 '<div>你好</div>'
    <p v-text="msg"></p>
    
     // 显示的结果是: 你好
     
    v-text
    在元素的属性节点上 添加v-text 如:<p v-text="msg"></p> // 覆盖原有内容
    不会解析标签
    msg 是 '<div>你好</div>'
    <p v-text="msg"></p>
    
    显示的结果是: <div>你好</div>
     
    v-bind 属性绑定 简写 :
     
    v-on 事件绑定 简写@
     
    v-if 条件绑定 是动态的移除或者显示 判断的值如果是true 的话 显示  false 移除
     
    v-show 是控制 display属性的 node / block
    v-if和v-show的作用,都是切换界面上元素的显示或隐藏的
    v-model 数据的双向绑定
    v-for :key 循环
     
     
    v-if 和 v-show的区别
    v-if是动态的控制元素的显示或移除 
    v-show 是控制元素的显示或隐藏 v-show只是控制 display 属性
     
    vue双向绑定的原理
    VUE实现双向数据绑定的原理就是利用了 Object.defineProperty() 这个方法重新定义了对象获取属性值(get)和设置属性值(set)的操作来实现的。
    vue 双向数据绑定是通过 数据劫持 结合 发布订阅模式的方式来实现的, 也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化,数据也随之发生改变;
    核心:关于VUE双向数据绑定,其核心是 Object.defineProperty()方法。
      
    父向子组件传递数据
    父组件向子组件传递数据是用属性绑定  子组件用 props接收
     
    子组件向父组件传递数据
    子组件向父组件传递数据 是用事件绑定 用 $meit 接收
     
    MVC与MVVM
    MVC主要是后端的分层开发思想,把一个完整的后端项目,分成三个部分:
      Model: (数据层) 主要负责数据库的操作
      View:(视图层) 所有前端页面,统称 view层
    Controller: (业务逻辑层) 主要处理对应的业务逻辑 
    MVVM是前端页面的分层开发思想, 主要关注 视图层 分离, 也就是说: MVVM把前端的视图层,分为了 三部分 Model, View ViewModel
      Model: 是页面中,需要用到的数据
      View 是页面中的HTML结构
      ViewModel 是一个 中间的调度这, 提供了双向数据绑定的概念 
     
    keep-alive标签的作用
    keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染
     
    axios与ajax的区别
    1、功能不同
    Axios:Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。
    AJAX:AJAX 是与服务器交换数据并更新部分网页的,在不重dao新加载整个页面的情况下Ajax = 异步 JavaScript 和 XML(标准通用标记语言的子集)。
    2、特点不同
    Axios从浏览器中创建 XMLHttpRequests,可以从 node.js 创建 http 请求,支持 Promise API,可以拦截请求和响应、转换请求数据和响应数据。
    Ajax是一种用于创建快速动态网页的技术,Ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
     
    分别简述computed和watch的使用场景
    computed: 当一个属性受多个属性影响的时候就需要用到computed
    watch: 当一条数据影响多条数据的时候就需要用watch
     
     vue组件中data为什么必须是一个函数?
    因为JavaScript的特性所导致,在component中,data必须以函数的形式存在,不可以是对象。
      组建中的data写成一个函数,数据以函数返回值的形式定义,这样每次复用组件的时候,都会返回一份新的data,相当于每个组件实例都有自己私有的数据空间,它们只负责各自维护的数据,不会造成混乱。而单纯的写成对象形式,就是所有的组件实例共用了一个data,这样改一个全都改了。
     
    created和mounted的区别
    created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。
    mounted:在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。 
     
     
     
    $router与$route
    $router对象是全局路由的实例,是router构造方法的实例。
    $route对象表示当前的路由信息,包含了当前 URL 解析得到的信息。包含当前的路径,参数,query对象等。
     
    vue-router实现路由懒加载( 动态加载路由 )
    const 组件名称 = () => import(/* webpackChunkName: "组名" */ '文件路径')
     
    vuex 是什么?
    vue框架中状态管理。在main.js引入store,注入。
     
    vuex有哪几种属性?
    有五种,分别是 State、 Getter、Mutation 、Action、 Module
    state => 基本数据(数据源存放地)
    getters => 从基本数据派生出来的数据
    mutations => 提交更改数据的方法,同步!
    actions => 像一个装饰器,包裹mutations,使之可以异步。
    modules => 模块化Vuex 
     
     如何获取dom?
    ref="domName" 用法:this.$refs.domName
     
     
     
     DOM的操作
    创建元素 document.createElement('标签')
    添加元素 父节点.appendChind(节点)
    删除元素 父节点.removeChind(节点)
    替换元素 父节点.replaceChild(新节点, 旧节点)
     
     什么是闭包?
      ①、闭包就是能够读取其他函数内部变量的函数。
      ②、将函数内部和函数外部连接起来的桥梁。  
     
     状态码
    2xx (成功)表示成功处理了请求的状态代码
    3xx (重定向) 表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。
    4xx(请求错误) 这些状态代码表示请求可能出错,妨碍了服务器的处理
    5xx(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错
     
    原生ajax请求有几个步骤?
    // ①创建XMLHTTPRequest对象//1. 创建XMLHttpRequest对象
    function getXhr () {
        var xmlhttp;
        if (window.XMLHttpRequest) {
            //IE7+ 和 非IE 中都有 XMLHttpRequest对象
            xmlhttp = new XMLHttpRequest();
        } else {
            xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
        }
        return xmlhttp;
    }
    var ajax = getXhr();
    // ④onreadystatechange事件:  readyState的值每次发生变化都会触发该事件。
    ajax.onreadystatechange = function(){
    if (ajax.readyState==4 && ajax.status === 200){ //如果等于4的话,说明已经完全接收到返回数据,并且可以在浏览器中使用了,
    //以字符串形式接收后端的返回值
    alert('ajax.responseText')//PHP程序最终会被解析为一段字符串,responseText接收的就是这段字符串
    }
    }
    // ②准备ajax请求
    ajax.open('get','路径');
    // ③发送ajax请求
    ajax.send(null);
     
     defer和async
     defer并行加载js文件,会按照页面上script标签的顺序执行
    async并行加载js文件,下载完成立即执行,不会按照页面上script标签的顺序执行
     
    闭包的三大特性:
    函数嵌套函数
    函数内部可以引用外部的参数和变量
    参数和变量不会被垃圾回收机制回收
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    vue指令
  • 相关阅读:
    SQL性能优化:如何定位网络性能问题
    ORACLE 10升级到10.2.0.5 Patch Set遇到的内核参数检测失败问题
    Linux 僵尸进程查杀
    Linux 虚拟机网络适配器从E1000改为VMXNET3
    v$session中server为none与shared值解析
    SQL SERVER导出特殊格式的平面文件
    XtraBackup出现 Can't connect to local MySQL server through socket '/tmp/mysql.sock'
    CentOS 6.6安装Xtrabackup RPM提示缺少libev.so.4()
    SQL Server Replication 中关于视图的点滴
    ORA-00988: missing or invalid password(s)
  • 原文地址:https://www.cnblogs.com/maxiag/p/13461071.html
Copyright © 2011-2022 走看看