MVVM,是Model-View-ViewModel的缩写,即模型-视图-视图模型. 本质上是MVC(模型-视图-控制器)的改进版,它最重要的特性就是数据绑定,很多js框架都是基于MVVM框架.Vuejs就是其中之一.
- M(模型) 实体数据
- V(视图) 页面
- VM(视图模型) mvvm的核心,连接Model和View的桥梁

ViewModel在其中处于承上启下的作用
- 承上: 将模型转为视图,也就是将实体模型,转化成我们可以直接看到的页面数据,实现原理是:数据绑定
- 启下: 将视图转为模型,也就是将页面数据转为数据实体. 实现原理是:dom事件的监听
这种模式,我们称之为数据的双向绑定
所以呢,我们可以得出结论,View和Model之间是不可以直接通信的,他们之间是通过ViewModel通信,然后ViewModel要实现一个观察者模式(ObServer),当数据发生变化,ViewModel能够监听到这种变化,再通知对应的视图,做自动更新.
MVC 是Model-View-Controller的缩写,即模型-视图-控制器 Model和View的意思与MVVM中的意思一样,不同的是Controller,也就是控制器.
- M(模型) 实体数据
- V(视图) 页面
- C(控制器) 业务处理层

MVC模式实现了M和V的代码分离,M专注于数据,V专注于视图.MVC是单向通信的,也就是VIew和Model必须通过Controller来承上启下.
MVC和MVVM的区别并不是VM完全取代了C,ViewModel只是抽离了Controller中展示业务逻辑.而不是替代了Controller,其它视图操作业务还是应该放在Controller中实现.也就是说MVVM实现的是业务逻辑组件的重用
其实mvc和mvvm的区别并不大.都是一种设计思想.主要就是mvc中的Controller演变成了mvvm中的ViewModel.
要就是mvc中的Controller演变成了mvvm中的ViewModel.
mvvm主要解决了mvc中大量的dom操作,使页面渲染性能降低,加载速度变慢,影响用户体验
(1)console简介
(2)显示信息的命令
(3)占位符
(4)分组显示
(5)输出属性与方法
(6)输出节点代码
(7)清空控制台
(8)计时器
(9)计数器
(10)表格化
(11)广告推广/招聘
(12)控制台快捷键
- 控制台(Console)是JS开发里最重要的面板,主要作用是显示网页加载过程中产生各类信息。
之前的开发经常用Firebug进行JS代码调试,Firebug是firefox下的一个扩展,能够调试所有网站语言,如Html,Css等,最吸引人的就是javascript调试功能,使用起来非常方便,而且在各种浏览器下正常使用,但是目前为止Firebug 官网宣布已停止开发更新。
但目前的浏览器自带的开发者工具类似于FireBug,一样可以使用。
- console对象,提供5种方法,用来显示信息
- 日志信息console.log()
- 一般信息console.info()
- 除错信息console.debug()
- 警告提示console.warn()
- 错误提示console.error()



- 解析:
(1)console.log()、console.info()、console.debug()的作用都是在浏览器控制台打印信息的。在Firefox里console.info()打印出的信息,在控制显示的时候信息前面会出现一个小图标
,而且谷歌浏览器和opera不支持console.debug()。
(2)不同性质的信息前面有不同的图标,并且每条信息后面都有超级链接,点击后跳转到网页源码的相应行。
(3)console.log方法和console.debug()与console.info(),几乎用法完全一样,唯一不同的就是显示时候的表现形式了。
- console.log,前端常用它来调试分析代码,你可以在任何的js代码中调用console.log(),然后你就可以在浏览器控制台看到你刚才打印的常量,变量,数组,对象,表达式等的值

可以通过上面的方式进行单个变量(表达式)、多个变量以及换行输出。而这对于日常开发的大多数情况算是够用了。
- console对象的上面5种方法,都可以使用printf(格式化输出)风格的占位符。不过,占位符的种类比较少,只支持字符(%s)、整数(%d或%i)、浮点数(%f)和对象(%o)、CSS格式化样式(%c)五种。


- %o占位符,可以用来查看一个对象内部情况。比如,有这样一个对象,对它使用o%占位符:

- 这种写法在复杂的输出时,能保证模板和数据分离,结构更清晰。
.


- 可以使用%c进行css样式格式化输出。常见的富样式输出有两种:文字样式、图片输出。
- (1)文字样式

- (2)%c可以写在任何地方,不限于开头,然后%c后面所有的输出会应用我们指定的样式。如果想单独对中间某几个字进行样式处理呢?


(3)图片输出(注意:背景图时,%c后面加空格占位)

严格来讲,console.log不支持直接图片输出,但可以用背景图曲线救国。但去试了才发现没那么简单,没法像平时那样输出背景图,原因呢,就是没法直接设置width和height样式。
(3)图片输出(高度用line-height+padding,宽度用padding)

(4)注意:console.log输出的超链接会被自动识别并加上灰色字体颜色和下划线的样式,而这个无法用%c覆盖。

- 如果信息太多,可以分组显示,用到的方法是console.group()和console.groupEnd()


注意:点击组标题,该组信息会折叠或展开;可以用console.groupEnd()引起来,也可以不引起来或者最后引起
- console.dir()可以显示一个对象所有的属性和方法。


- console.dirxml()用来显示网页的某个节点(node)所包含的html/xml代码


- console.time(),console.timeEnd()方法计算一个操作的执行的时间console.time()是开始,console.timeEnd()是结束。
- 可以传一个参数,参数为计时器的名称。


- 接下来结合具体案例测试下代码性能
- 常问面试题:jQuery和JS运行时哪个更快、效率更高?
- 首先要明白一点,jQuery是JS封装好的代码库,本质上来说是对代码的二次封装编写,中间需要转换过程,执行效率不如原生JS。但开发效率高,应用方便。
- 接下来利用console.time和console.timeEnd测试下


-
注意:尽量在body结束前引入jquery库文档,因为在使用DOM时需要使用页面的元素,页面元素未实例之前是不能调用。
- console.count()方法用于计数,输出它被调用了多少次。



- console.table()方法可以将传入的对象或数组这些复合数据以表格形式输出



-
1、方向键盘的上下键,一用就知晓。比如用上键就相当于使用上次在控制台的输入符号。
-
2、$_命令返回最近一次表达式执行的结果,功能跟按向上的方向键再回车是一样的
-
3、Chrome 控制台中原生支持类jQuery的选择器,也就是说你可以用加上熟悉的css选择器来选择DOM节点。例如加上熟悉的css选择器来选择DOM节点。例如加上熟悉的css选择器来选择DOM节点。例如(‘body’)
-
4、$ 简单理解就是 document.querySelector 。
-
5、$$ 简单理解就是 document.querySelectorAll 。
-
6、$_ 是上一个表达式的值
-
7、dir 就是 console.dir
(1)console简介
(2)显示信息的命令
(3)占位符
(4)分组显示
(5)输出属性与方法
(6)输出节点代码
(7)清空控制台
(8)计时器
(9)计数器
(10)表格化
(11)广告推广/招聘
(12)控制台快捷键
- 控制台(Console)是JS开发里最重要的面板,主要作用是显示网页加载过程中产生各类信息。
之前的开发经常用Firebug进行JS代码调试,Firebug是firefox下的一个扩展,能够调试所有网站语言,如Html,Css等,最吸引人的就是javascript调试功能,使用起来非常方便,而且在各种浏览器下正常使用,但是目前为止Firebug 官网宣布已停止开发更新。
但目前的浏览器自带的开发者工具类似于FireBug,一样可以使用。
- console对象,提供5种方法,用来显示信息
- 日志信息console.log()
- 一般信息console.info()
- 除错信息console.debug()
- 警告提示console.warn()
- 错误提示console.error()



- 解析:
(1)console.log()、console.info()、console.debug()的作用都是在浏览器控制台打印信息的。在Firefox里console.info()打印出的信息,在控制显示的时候信息前面会出现一个小图标
,而且谷歌浏览器和opera不支持console.debug()。
(2)不同性质的信息前面有不同的图标,并且每条信息后面都有超级链接,点击后跳转到网页源码的相应行。
(3)console.log方法和console.debug()与console.info(),几乎用法完全一样,唯一不同的就是显示时候的表现形式了。
- console.log,前端常用它来调试分析代码,你可以在任何的js代码中调用console.log(),然后你就可以在浏览器控制台看到你刚才打印的常量,变量,数组,对象,表达式等的值

可以通过上面的方式进行单个变量(表达式)、多个变量以及换行输出。而这对于日常开发的大多数情况算是够用了。
- console对象的上面5种方法,都可以使用printf(格式化输出)风格的占位符。不过,占位符的种类比较少,只支持字符(%s)、整数(%d或%i)、浮点数(%f)和对象(%o)、CSS格式化样式(%c)五种。


- %o占位符,可以用来查看一个对象内部情况。比如,有这样一个对象,对它使用o%占位符:

- 这种写法在复杂的输出时,能保证模板和数据分离,结构更清晰。
.


- 可以使用%c进行css样式格式化输出。常见的富样式输出有两种:文字样式、图片输出。
- (1)文字样式

- (2)%c可以写在任何地方,不限于开头,然后%c后面所有的输出会应用我们指定的样式。如果想单独对中间某几个字进行样式处理呢?


(3)图片输出(注意:背景图时,%c后面加空格占位)

严格来讲,console.log不支持直接图片输出,但可以用背景图曲线救国。但去试了才发现没那么简单,没法像平时那样输出背景图,原因呢,就是没法直接设置width和height样式。
(3)图片输出(高度用line-height+padding,宽度用padding)

(4)注意:console.log输出的超链接会被自动识别并加上灰色字体颜色和下划线的样式,而这个无法用%c覆盖。

- 如果信息太多,可以分组显示,用到的方法是console.group()和console.groupEnd()


注意:点击组标题,该组信息会折叠或展开;可以用console.groupEnd()引起来,也可以不引起来或者最后引起
- console.dir()可以显示一个对象所有的属性和方法。


- console.dirxml()用来显示网页的某个节点(node)所包含的html/xml代码


- console.time(),console.timeEnd()方法计算一个操作的执行的时间console.time()是开始,console.timeEnd()是结束。
- 可以传一个参数,参数为计时器的名称。


- 接下来结合具体案例测试下代码性能
- 常问面试题:jQuery和JS运行时哪个更快、效率更高?
- 首先要明白一点,jQuery是JS封装好的代码库,本质上来说是对代码的二次封装编写,中间需要转换过程,执行效率不如原生JS。但开发效率高,应用方便。
- 接下来利用console.time和console.timeEnd测试下


-
注意:尽量在body结束前引入jquery库文档,因为在使用DOM时需要使用页面的元素,页面元素未实例之前是不能调用。
- console.count()方法用于计数,输出它被调用了多少次。



- console.table()方法可以将传入的对象或数组这些复合数据以表格形式输出



-
1、方向键盘的上下键,一用就知晓。比如用上键就相当于使用上次在控制台的输入符号。
-
2、$_命令返回最近一次表达式执行的结果,功能跟按向上的方向键再回车是一样的
-
3、Chrome 控制台中原生支持类jQuery的选择器,也就是说你可以用加上熟悉的css选择器来选择DOM节点。例如加上熟悉的css选择器来选择DOM节点。例如加上熟悉的css选择器来选择DOM节点。例如(‘body’)
-
4、$ 简单理解就是 document.querySelector 。
-
5、$$ 简单理解就是 document.querySelectorAll 。
-
6、$_ 是上一个表达式的值
-
7、dir 就是 console.dir
(1)console简介
(2)显示信息的命令
(3)占位符
(4)分组显示
(5)输出属性与方法
(6)输出节点代码
(7)清空控制台
(8)计时器
(9)计数器
(10)表格化
(11)广告推广/招聘
(12)控制台快捷键
- 控制台(Console)是JS开发里最重要的面板,主要作用是显示网页加载过程中产生各类信息。
之前的开发经常用Firebug进行JS代码调试,Firebug是firefox下的一个扩展,能够调试所有网站语言,如Html,Css等,最吸引人的就是javascript调试功能,使用起来非常方便,而且在各种浏览器下正常使用,但是目前为止Firebug 官网宣布已停止开发更新。
但目前的浏览器自带的开发者工具类似于FireBug,一样可以使用。
- console对象,提供5种方法,用来显示信息
- 日志信息console.log()
- 一般信息console.info()
- 除错信息console.debug()
- 警告提示console.warn()
- 错误提示console.error()



- 解析:
(1)console.log()、console.info()、console.debug()的作用都是在浏览器控制台打印信息的。在Firefox里console.info()打印出的信息,在控制显示的时候信息前面会出现一个小图标
,而且谷歌浏览器和opera不支持console.debug()。
(2)不同性质的信息前面有不同的图标,并且每条信息后面都有超级链接,点击后跳转到网页源码的相应行。
(3)console.log方法和console.debug()与console.info(),几乎用法完全一样,唯一不同的就是显示时候的表现形式了。
- console.log,前端常用它来调试分析代码,你可以在任何的js代码中调用console.log(),然后你就可以在浏览器控制台看到你刚才打印的常量,变量,数组,对象,表达式等的值

可以通过上面的方式进行单个变量(表达式)、多个变量以及换行输出。而这对于日常开发的大多数情况算是够用了。
- console对象的上面5种方法,都可以使用printf(格式化输出)风格的占位符。不过,占位符的种类比较少,只支持字符(%s)、整数(%d或%i)、浮点数(%f)和对象(%o)、CSS格式化样式(%c)五种。


- %o占位符,可以用来查看一个对象内部情况。比如,有这样一个对象,对它使用o%占位符:

- 这种写法在复杂的输出时,能保证模板和数据分离,结构更清晰。
.


- 可以使用%c进行css样式格式化输出。常见的富样式输出有两种:文字样式、图片输出。
- (1)文字样式

- (2)%c可以写在任何地方,不限于开头,然后%c后面所有的输出会应用我们指定的样式。如果想单独对中间某几个字进行样式处理呢?


(3)图片输出(注意:背景图时,%c后面加空格占位)

严格来讲,console.log不支持直接图片输出,但可以用背景图曲线救国。但去试了才发现没那么简单,没法像平时那样输出背景图,原因呢,就是没法直接设置width和height样式。
(3)图片输出(高度用line-height+padding,宽度用padding)

(4)注意:console.log输出的超链接会被自动识别并加上灰色字体颜色和下划线的样式,而这个无法用%c覆盖。

- 如果信息太多,可以分组显示,用到的方法是console.group()和console.groupEnd()


注意:点击组标题,该组信息会折叠或展开;可以用console.groupEnd()引起来,也可以不引起来或者最后引起
- console.dir()可以显示一个对象所有的属性和方法。


- console.dirxml()用来显示网页的某个节点(node)所包含的html/xml代码


- console.time(),console.timeEnd()方法计算一个操作的执行的时间console.time()是开始,console.timeEnd()是结束。
- 可以传一个参数,参数为计时器的名称。


- 接下来结合具体案例测试下代码性能
- 常问面试题:jQuery和JS运行时哪个更快、效率更高?
- 首先要明白一点,jQuery是JS封装好的代码库,本质上来说是对代码的二次封装编写,中间需要转换过程,执行效率不如原生JS。但开发效率高,应用方便。
- 接下来利用console.time和console.timeEnd测试下


-
注意:尽量在body结束前引入jquery库文档,因为在使用DOM时需要使用页面的元素,页面元素未实例之前是不能调用。
- console.count()方法用于计数,输出它被调用了多少次。



- console.table()方法可以将传入的对象或数组这些复合数据以表格形式输出



-
1、方向键盘的上下键,一用就知晓。比如用上键就相当于使用上次在控制台的输入符号。
-
2、$_命令返回最近一次表达式执行的结果,功能跟按向上的方向键再回车是一样的
-
3、Chrome 控制台中原生支持类jQuery的选择器,也就是说你可以用加上熟悉的css选择器来选择DOM节点。例如加上熟悉的css选择器来选择DOM节点。例如加上熟悉的css选择器来选择DOM节点。例如(‘body’)
-
4、$ 简单理解就是 document.querySelector 。
-
5、$$ 简单理解就是 document.querySelectorAll 。
-
6、$_ 是上一个表达式的值
-
7、dir 就是 console.dir
vue踩坑-This dependency was not found
今天用Vue-cli局部引入一个css,但是一直提示Module not found 或者 This dependency was not found 以为是自己依赖未安装好,装好了Loader也没用,才发现Vue的路径不是从入口文件开始算的,而是从当前组件位置,我一直以为是从main.js开始,才浪费了好多时间

vue踩坑-This dependency was not found
今天用Vue-cli局部引入一个css,但是一直提示Module not found 或者 This dependency was not found 以为是自己依赖未安装好,装好了Loader也没用,才发现Vue的路径不是从入口文件开始算的,而是从当前组件位置,我一直以为是从main.js开始,才浪费了好多时间
