# vue gogogo
**Repository Path**: senranxiexie/vue-gogogo
## Basic Information
- **Project Name**: vue gogogo
- **Description**: 渐进式
JavaScript 框架
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-09-13
- **Last Updated**: 2022-10-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## MVVM:
**$\textcolor{RED}{{MVVM}} $ **,(Model-View-ViewModel)是一种软件架构设计模式,,是M-V-VM三部分组成。
- MVVM分为三个部分:分别是M(Model,模型层 ),V(View,视图层),VM(ViewModel,视图数据层,V与M连接的桥梁,也可以看作为控制器)
- M:模型层,值得是数据模型,主要负责业务数据相关;
- V:视图层,顾名思义,负责视图相关,细分下来就是html+css层,为了更方便的展示Model层的数据;
- VM:V与M沟通的桥梁,负责监听M或者V的修改,是实现MVVM双向绑定的要点
- **ViewModel是Vue.js的核心,它是一个Vue实例**,MVVM支持双向绑定,意思就是当M层数据进行修改时,VM层会监测到变化,并且通知V层进行相应的修改,反之修改V层则会通知M层数据进行修改
- MVVM采用双向数据绑定,view中数据变化将自动反映到viewmodel上,反之,model中数据变化也将会自动展示在页面上。把Model和View关联起来的就是ViewModel。ViewModel负责把Model的数据同步到View显示出来,还负责把View的修改同步回Model。
MVVM核心思想,是关注model的变化,让MVVM框架利用自己的机制自动更新DOM,也就是所谓的数据-视图分离,数据不会影响视图。
## CDN:
#### 什么是CDN
CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的**$\textcolor{RED}{{负载均衡、内容分发、调度}} $ **等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要包括了**$\textcolor{RED}{{节点调度、节点负载均衡和内容存储、分发、管理技术}} $ **。
## 水平垂直居中(三种方式):
###**方法一:利用定位(常用方法,推荐)**
```html
Document
```
**方法二:利用 margin:auto;**
```html
Document
```
**方法三:利用 transform**
```html
Document
```
**方法四:利用 display:flex;设置垂直水平都居中**
```html
Document
```
## 与或非返回值:
#### 一、&& 与(并且,只要有一个不成立就返回false)
注意:在有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回值,此时它遵循下列规则:
1.如果第一个操作数隐式类型转换后为true,则返回最后一个操作数。
2.如果第一个操作数隐式类型转换后为false,则返回第一个操作数。
3.如果有一个操作数是null,则返回null。
4.如果有一个操作数是NaN,则返回NaN。
5.如果有一个操作数是undefined,则返回undefined。
#### 二、|| 与(或者,只要有一个成立就返回true)
注意:在有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回值,此时它遵循下列规则:
1.如果第一个操作数隐式类型转换后为true,则返回第一个一个操作数。
2.如果第一个操作数隐式类型转换后为false,则依次往后判断。
3.如果两个数都是null,则返回null。
4.如果两个数都是NaN,则返回NaN。
5.如果两个数都是undefined,则返回undefined。
#### 三、!非(相反,返回值为布尔型)
隐式类型转换为false的值,只有以下六种:空字符串(""),数字0(0),undefined,null,false本身,NaN!!
## truthy(真值)和 falsy(虚值:)
在 JavaScript中,**truthy**(真值)指的是在布尔值上下文中,转换后的值为真的值。所有值都是真值,除非它们被定义为 假值(虚值)(即除**$\textcolor{RED}{{false、0、”“、null、udefined和NaN}} $ **以外皆为真值)。
JavaScript 在布尔值上下文中使用强制类型转换coercion。
JavaScript 中的真值示例如下(将被转换为 true,if 后的代码段将被执行):
```lisp
if (true)
if ({})
if ([])
if (42)
if ("foo")
if (new Date())
if (-42)
if (3.14)
if (-3.14)
if (Infinity)
if (-Infinity)
```
**falsy** 值 (虚值) 是在Boolean 上下文中认定为 false 的值。
JavaScript 在需要用到布尔类型值的上下文中使用强制类型转换(Type Conversion )将值转换为布尔值,例如条件语句和循环语句。
在 JavaScript 中只有 **6 个** **falsy** 值。
这意味着当 JavaScript 期望一个布尔值,并被给与下面值中的一个时,它总是会被当做 false。
| `false` | false关键字 |
| ---------- | ------------------------------------------------------------ |
| 0 | 数值 zero当 BigInt作为布尔值使用时, 遵从其作为数值的规则. 0n是 *falsy* 值. |
| "", '', `` | 这是一个空字符串 (字符串的长度为零). JavaScript 中的字符串可用双引号**” “**, 单引号'', 或 模板字面量**``** 定义。 |
| null | null- 缺少值 |
| undefined | undefined- 原始值 |
| NaN | NaN- 非数值 |
## 例子
JavaScript 中 *falsy* 值的例子 (在布尔值上下文中被转换为 false,从而*绕过*了 if 代码块):
```erlang
if (false)
if (null)
if (undefined)
if (0)
if (0n)
if (NaN)
if ('')
if ("")
if (``)
if (document.all)
```