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 的值作为第一个参数.
来源: http://www.jianshu.com/p/d5dd3c56a862