当前位置: 首页 > Web前端 > HTML

Vue.js笔试题解决业务中的常见问题

时间:2023-04-03 00:15:04 HTML

body{font:12pxMicrosoftYahei;边距:0px;文本对齐:居中;背景:#fff;}//页面层容器#container{width:100%;}#header{宽度:800px;保证金:0自动;高度:100px;背景:#FFCC99;}#main{宽度:800px;保证金:0自动;高度:400px;}#side{浮动:左;宽度:20em;背景:红色;填充:15px0;}#foot{宽度:800px;保证金:0自动;高度:50px;背景:#00ffff;MVVM框架是一个Model-View-ViewModel框架,其中ViewModel连接模型Model和视图View。vue.js中的MVVM模式:vue.js是由数据驱动的。Vue.js实例化对象来绑定dom和数据。一旦绑定,dom和数据将保持同步。每当数据发生变化时,dom也会发生变化;ViewModel是Vue.js的核心,它是Vue.js的一个实例。Vue.js会实例化一个HTML元素,它可以是body也可以是css选择器引用的元素。DOMListeners和DataBindings是实现双向绑定的关键。DOM监听器监视页面所有视图层中的DOM元素。当发生变化时,Model层中的数据也会随之变化。DataBindings会监听Model层的数据,当数据发生变化时,View层的DOM元素也会随之变化。6.active-class是哪个组件的属性它是vue-router模块的router-link组件的属性7.vue-router的动态路由如何定义静态路由名称前加一个冒号,比如设置id动态路由参数,对于路由对象的path属性是set/:id8.如何获取传入的动态参数在组件中,使用$router对象的params.id,比如$路线.params.id9。vue-router有哪些导航钩子?分为三种,第一种是全局导航钩子,router.beforeEach(to,from,next),用于跳转前的判断拦截;第二个是组件内的钩子;三是单独的路由独占组件。导航钩子也称为导航守卫,分为全局钩子、个别路由独占钩子和组件级钩子。全局钩子包括beforeEach、beforeResolve和afterEach,单个路由的专属钩子包括:beforeEnter组件级钩子包括:beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave:它们有如下参数:进入;from表示当前导航即将离开的路线;next表示到达下一条路由必须使用该函数,如果不使用则阻塞。10.什么是mint-ui?mint-ui是一个基于Vue.js的前端组件库,用npm安装,然后通过import导入样式和JavaScript代码,vue.use(mintUi)用于实现全局导入,import{Toast}from'mint-ui'可用于本地介绍11.什么是v-modelv-model是vue.js实现数据双向绑定的一条指令双向数据绑定的原理:vue.js使用es5的属性提供的feature函数,结合publisher-subscriber模型,通过Object.defineProperty()定义每个属性的get和setfeature方法,当数据传输发生变化时,向订阅者发布消息,触发相应的监听回调。过程:递归遍历需要观察的数据对象,包括子属性对象的属性,设置set和get特征方法;当给这个对象赋值时,会触发绑定的setcharacteristic方法,可以监听数据变化。b.使用compile解析模板指令,将模板中的变量替换为数据,然后初始化渲染的页面视图,为每条指令对应的节点绑定一个update函数,添加监听数据的订阅者。一旦数据发生变化,它会收到通知,并更新视图。C。Watchersubscriber是Observer和Compile之间的沟通桥梁:在实例化自己的时候将自己添加到属性subscriberdep中;它必须有一个update()方法;dep.notice()发布通知时,可以调用自己的update()方法,触发Compile中绑定的回调函数。d、MVVM是数据绑定的入口,集成了Observer、Compile和Wathcher,通过Observer监听自身模型数据的变化,通过Compile解析编译模板指令,最后使用Watcher建立Observer和Compile的关系通讯桥实现数据变化通知视图更新的效果,利用视图交互更新数据模型变化的双向绑定效果。12、vue.js中如何给标签绑定事件第一种方式是使用v-on;第二种方式是使用@语法糖13.什么是vuex?Vuex是由vue.js框架实现的状态管理系统。使用vuex,需要引入store,注入到vue.js组件中。在组件内部,可以通过$store访问store对象;使用场景,在单页应用中,用于组件之间的通信,比如音乐播放和登录状态管理,添加购物车等。Vuex可以说是一种开发模型或者框架。它是vue.js框架数据层面的扩展。它通过集中状态管理来管理驱动组件的变化。应用的状态集中放在store中,改变状态的方式是提交mutation,这是一个同步事务,异步逻辑应该封装在action中。14.vue中,说说你知道的自定义指令自定义指令有两种:一种是全局自定义指令,vue.js对象提供了一个指令方法,可以用来自定义指令,指令方法接收两个参数,一个是指令名,另一个是函数;第二个是本地自定义指令,它是通过组件的指令属性定义的。15、vue.jsv-if判断对象是否隐藏的四种常用指令;v-for循环渲染;v-bind绑定一个属性;v-model实现双向数据绑定,在v-if循环中实现v-模型数据的双向绑定:有时候需要创建一个输入,使用v-model实现数据的双向绑定。这时候可以给v-model绑定一个成语selected[$index]数组,这样就可以给不同的input绑定不同的v-model:

{{arrDa[index]}}

16.什么是vue-routervue-router是vue.js路由插件,(常用router-link和router-view)17.vue.js的生命周期分为8个阶段:beforeCreate在实例初始化后调用,数据观察器前调用dataobserver和event/watcher事件配置在实例中创建,创建完成后立即调用。至此,实例已经完成:观察者、属性和方法操作、watch/event事件回调,mount阶段还没有开始,$el属性目前是不可见的。beforeMount在挂载开始前被调用,相关的render函数被第一次调用。mountel被新创建的vm.$el替换,挂载到实例上后调用钩子。如果根实例挂载文档内元素,则vm.$el在调用mounted时也在文档内。beforeUpdate在数据更新时被调用,在虚拟dom被重新渲染和修补之前。updated该钩子将在虚拟dom由于数据变化而重新渲染和打补丁后被调用。beforeDestroyed在实例被销毁之前被调用。在这一步,实例仍然完全可用。destroyed在vue.js实例销毁后调用,vue.js实例指示的所有内容将被解除绑定,所有事件监听器将被移除,所有子实例将被销毁。如果使用了组件的保活功能,则增加两个循环:激活保活组件时调用activated;deactivated在keep-alive组件被停用时被调用。,在包装动态组件时,缓存不活跃的组件实例,而不是销毁它们。是一个抽象组件,它本身不会渲染DOM元素,也不会出现在父组件链中。当组件在中切换时,会执行其激活和去激活的生命周期钩子函数。添加一个循环钩子:ErrorCaptured表示当捕获到后代组件的错误时调用它。18.描述封装vue组件的功能过程。组件可以提高整个项目的开发效率,可以将页面抽象成多个相对独立的模块,解决了传统项目开发效率低、维护难、复用性差的问题。使用Vue.extend方法创建组件,使用Vue.component方法注册组件。子组件需要数据,可以在props中接收数据。子组件修改数据后,如果想将数据传递给父组件,可以使用emit方法。使用自定义组件:在components目录新建一个组件文件,脚本必须导出暴露的接口;导入需要使用的页面;将导入的组件注入到vue.js子组件的components属性中;在模板自定义组件的视图中使用它。创建组件

{{msg}}

19.vueWhat是-loader?vue-loader是一个loader,可以解析.vue文件,将template/js/style转为javascript模块;通过这个vue-loader,javascript可以写EMAScript6语法,style样式可以应用到scss或less,可以添加templateJade语法。..20、vue.cli项目中src目录表示assets文件夹存放静态资源;components存储组件;router定义了路由相关的配置;视图是视图;app.vue是一个应用程序主组件;main.js是一个入口文件。21.vue.js模板编译的理解首先转化为AST抽象语法树,AbstractSyntaxTree,将源码语法结构抽象为树状表示,然后通过render函数渲染返回给VNode(Vue.js虚拟dom节点)。通过compile编译器将模板编译成AST,compile是createCompiler的返回值,createCompiler用于创建编译器,compile也负责合并options;AST会经过generate——将AST转换为render函数字符串的过程——得到render函数,render的返回值是VNode,也就是Vue.js的虚拟DOM节点,包含标签名,子节点,text等22.v-show指令和v-if指令的区别它们都是条件渲染指令。不同之处在于,无论v-show的值为true或false,该元素都会存在于html页面中,而v-if的值为true时,该元素将存在于html页面中。v-show指令是通过修改元素的style属性值来实现的。23.让css只作用于当前组件,只需要在style标签中添加scoped属性,//页面层容器//页面头部
//页面主体>//侧边栏
//页面底部