欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

撩课-Web大前端每天5道面试题-Day22

程序员文章站 2022-06-21 22:00:52
1.mvvm和mvc区别?它和其它框架(jquery)的区别是什么?哪些场景适合? 2.vue的优点是什么? 3.vue.cli中怎样使用自定义的组件?有遇到过哪些问题吗? 4.请列举出3个Vue中常用的生命周期钩子函数? 5.vue如何自定义一个过滤器? ......

1.mvvm和mvc区别?它和其它框架(jquery)的区别是什么?哪些场景适合?

mvc和mvvm其实区别并不大。

都是一种设计思想。

主要就是mvc中controller演变成mvvm中的viewmodel。

mvvm主要解决了mvc中大量的dom 操作使页面渲染性能降低,

加载速度变慢,影响用户体验。

区别:

vue数据驱动,
通过数据来显示视图层而不是节点操作。

场景:
数据操作比较多的场景,更加便捷

 

2.vue的优点是什么?

低耦合。

视图(view)可以独立于model变化和修改,
一个viewmodel可以绑定到不同的"view"上,
当view变化的时候model可以不变,
当model变化的时候view也可以不变。
可重用性。

你可以把一些视图逻辑放在一个viewmodel里面,
让很多view重用这段视图逻辑。
独立开发。
开发人员可以专注于业务逻辑和数据的开发(viewmodel),
设计人员可以专注于页面设计。
可测试。

界面素来是比较难于测试的,
而现在测试可以针对viewmodel来写。

 

3.vue.cli中怎样使用自定义的组件?有遇到过哪些问题吗?

第一步:
在components目录新建你的组件文件(indexpage.vue),
script一定要export default {}

第二步:
在需要用的页面(组件)中导入:
import indexpage from '@/components/indexpage.vue'

第三步:
注入到vue的子组件的components属性上面,components:{indexpage}

第四步:
在template视图view中使用,
例如有indexpage命名,
使用的时候则index-page

 

4.请列举出3个vue中常用的生命周期钩子函数?

created: 

实例已经创建完成之后调用,
在这一步,实例已经完成数据观测, 
属性和方法的运算, watch/event事件回调. 
然而, 挂载阶段还没有开始, 
$el属性目前还不可见

mounted: 

el被新创建的 vm.$el 替换,
并挂载到实例上去之后调用该钩子。
如果 root 实例挂载了一个文档内元素,
当 mounted 被调用时 vm.$el 也在文档内。
activated: keep-alive组件激活时调用

 

5.vue如何自定义一个过滤器?

html代码:

<div id="app">
     <input type="text" v-model="msg" />
     {{msg| capitalize }}
</div>

js代码:

var vm=new vue({
    el:"#app",
    data:{
        msg:''
    },
    filters: {
      capitalize: function (value) {
        if (!value) return ''
        value = value.tostring()
        return value.charat(0).touppercase() + value.slice(1)
      }
    }
})

全局定义过滤器

vue.filter('capitalize', function (value) {
  if (!value) return ''
  value = value.tostring()
  return value.charat(0).touppercase() + value.slice(1)
})

过滤器接收表达式的值 (msg) 作为第一个参数。
capitalize 过滤器将会收到 msg的值作为第一个参数。