vue相关

490 阅读6分钟

一、构建的vue-cli用到的技术有哪些?

1.vue.js:vue-cli工程的核心,主要特点是双向数据绑定和组件系统。

2.vue-router:官方推荐的路由框架。

3.vuex:专为vue.js应用项目开发的状态管理器,维护vue组件间共同的一些变量和方法。

4.axios:用于发起http请求,基于Promise设计。

5.vux等:一个专为vue设计的移动端UI组件库。

6.webpack:模块加载和工程打包工具。

二、vue-cli常用的npm指令有哪些?

npm install       ---下载资源依赖包
npm run dev       ---启动开发环境
npm run build    
---打包 (自带webpack,生成dist文件夹)

三、vue-cli目录解析

1.build文件夹:

存放webpack相关配置和脚本。开发过程中会偶尔使用到webpack.base.conf.js,用于配置less、sass等css预编译库,或者配置UI库。

2.config文件夹:

存放配置文件,用于区分开发环境、线上环境的不同。常用到config.js配置开发环境端口号、是否开启热加载、设置生产环境的静态资源相对路径、npm run build命令打包生成静态资源的名称和路径。

3.dist文件夹:默认npm run build命令打包生成的静态资源文件,用于生产部署。

4.node_modules文件夹:存放npm命令下载的开发环境和生产环境的依赖包。

5.src文件夹:存放项目源代码及需要用到的资源文件。

5.1 src下的assets:存放项目中的静态资源文件,如images、css、fonts

5.2 src下的componets:存放vue开发中的公共组件,如header.vue、footer.vue

5.3 src下的router:vue路由的配置文件

5.4 src下的util:存放vue一些公共的js方法

5.5 src下的vuex:存放vuex为vue专门开发的状态管理器

5.6 src下的app.vue:使用标签< route-view> </ route-view >渲染整个项目的.vue组件

5.7 src下的main.js:vue-cli的入口文件

6.index.html:设置项目的一些meta头信息和挂载vue节点 < div id="app"> </ div>

7.package.json:用于node_modules资源部和启动、npm命令管理。

四、vue常见的指令有哪些?

v-text/v-html: 替换该指令的元素内容,text是纯文本输出,html是格式的输出。

v-if: 根据表达式的值的真假条件渲染元素,在切换时元素被销毁并重建。控制DOM节点存在与否,一次显示或隐藏v-if更合理

v-show: 控制元素的显示方式,display.block和none来回切换。经常切换用v-show

v-for: 循环指令,基于一个数组或者对象渲染列表,vue2.0以上必须配合key值使用。

v-on: 用于监听指定元素的DOM事件,比如点击事件,绑定事件监听器,简写为'@'。

v-once: 只能渲染一次。

v-cloak: 为了解决插值表达式的闪烁问题

v-bind: 动态绑定一个或多个特性,简写':'。

v-model: 实现表单输入和应用状态之间的双向绑定。

 语法糖(一种简洁的写法):原理通过v-bind绑定的input属性,监听input事件触发,获取input的值再去修改data中数据。

五、什么是vue生命周期

生命周期是vue实例从创建到销毁,也就是从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、卸载等一系列过程。在这个过程中也会运行一些叫做生命周期钩子的函数。

beforeCreate(创建前):Vue实例的data数据和methods方法还没有完成初始化。

created(创建后):data和methods已经初始化完毕,首屏数据的ajax请求需要在Created发送。

beforeMount(载入前):即将挂载页面,此时当前页面是假数据还没有真正带有数据的页面。

mounted(载入后):页面完成了首次渲染,数据为真数据,需要操作DOM元素初始化的操作可以在此操作。

beforeUpdate(更新前):数据是新数据,但是页面还是旧页面。

updated(更新后):data数据和页面都是最新的。

beforeDestroy(销毁前):此时的实例仍可以使用。

destroyed(销毁后):销毁完成,实例无法工作。

六、vue的两大特性

1.数据驱动

2.组件化

七、MVVM,MVC?

MVC是model,view,controller,model是模型,view是视图,controller控制器是页面业务逻辑,是单向通信,通过controller来承上启下。

MVVM就是将controller演变为viewmodel,是连接model和view的桥梁。 将模型转为视图也就是数据绑定,将视图转为模型,实现DOM事件监听。MVVM是数据的双向绑定。

双向绑定的弊端: 绑定的数据的bug比较难调试,页面异常不好判断是model还是view出现问题 不利于代码重用,长期不释放内存

八、vue的修饰符?

stop:阻止事件的冒泡

once:只触发一次

prevent:阻止事件的默认行为

self:只触发自己的事件时才会执行

九、组件间的通信

1.父组件与子组件传值

父组件给子组件:子组件通过props方法接受数据;

子组件给父组件:$emit方法传递参数

2.非父子组件间的数据传递

eventBus,创建一个事件中心,相当于中转站,用它来传递事件和接收事件。

十、methods方法、计算属性computed、侦听属性watch

methods是函数调用,需要有一定的触发条件才能执行,比如点击事件;

computed是dom加载完马上执行,比如赋值。有缓存功能,适用一个数据受多个数据影响,模糊查询使用。简化template里{{}}计算和处理父子之间的传值,存在依赖型数据,依赖型数据发生改变,computed才会重新计算;

watch观察vue实例上的数据变动适用一个数据影响多个数据,监听父子组件执行异步操作,没有缓存性

执行顺序:默认加载时先computed再watch,不执行methods。等触发事件就是先methods再watch

十一、vue和react的区别?

react是单向数据流,参数和状态需要通过参数传入纯组件,数据不可变。通过js操作一切,类式的组件写法;

vue更轻量,是响应式开发,基于数据可变,对每个属性建立watcher来监听,当属性发生变化,响应式的更新对应的虚拟dom。js,css,html模块是单文件组件。

十二、vue的性能优化?

不要在模板中写过多的表达式

循环调用子组件加上key作为唯一标识

频繁切换用v-show,反正用v-if

页面尽量不用float,用flex

按需加载组件,用require或者import()