# 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) ```