赞
踩
1、European Computer Manufacturers Association(欧洲计算机制造商协会),这个协会在瑞士的日内瓦
这个协会的主要职责是:评估、开发、认可电信、计算机标准
ECMA-262就是脚本语言的规范,ECMAScript ES5和ES6就是一个规范。
2、编程语言:编译型和解释型
编译过程:源码->编译器->机器语言->可执行的文件
解释型:源码->解释器->解释一行就执行一行
编译型语言:需要根据不同系统编译成不同的可执行文件,运行速度快
解释型语言:不需要根据不同的系统平台进行移植,运行速度慢
脚本语言:脚本引擎->解释器(前端脚本语言js和后端脚本语言php)
JavaScript的3大块:
1、 ECMAScript;
2、DOM(Docunment Object Model),
3、BOM(Browser Object Mode )
JS引擎是单线程的,通过轮转时间片模拟多线程,轮转时间片:短时间内轮流执行多个任务片段,
模拟过程步骤:
1、假如有任务A、任务B;
2、切分任务A、切分任务2;
3、随机将这些任务片断组成队列
4、按照这个队列顺序将任务片段送进JS 进程
5、JS线程执行一个又一个的任务片段。
编程语言4要素:变量,数据结构、函数、运算能力
链式调用
键值对
圣杯模式
立即执行函数表达式:
(IIFE)immediately [ɪˈmiːdiətli] Invoked Function Expression
模块化的2种执行方式:立即执行,等待执行
原始值:primitive [ˈprɪmətɪv]
无效:Invalid [ɪnˈvælɪd]
语法:Syntax [ˈsɪntæks]
匿名:anonymous [əˈnɒnɪməs]
标志符:identifier [aɪˈdentɪfaɪə(r)]
防抖:debounce
节流:throttle[ˈθrɒtl]
属性:property
表达式
语句
点运算符
方括号运算符
可配置:configurabl [kənˈfɪgərəbl]
可枚举:enumerable [iˈnærəbl]
包装类:wrapper [ˈræpə(r)]
正无穷:infinity
意外:unexpected [ˌʌnɪkˈspektɪd]
标记:token
分配:assignment [əˈsaɪnmənt]
完全一样:duplicate [ˈdjuːplɪkeɪt , ˈdjuːplɪkət]
// URI:uniform Resource identifier 统一资源标识符
// URL:uniform Resource Location 统一资源定位符
// URN:uniform Resource Name 统一资源名称
ACII:美国信息交换标准代码(American Standard Code for Information Interchange)
耦合:代码的重复度太高
解耦合:基于函数进行封装供其他方法调用,然而到解耦合的效果
高内聚:内部的相关代码相关性太强,也就是具有职责单一模块,去完成独立的功能
高内聚,低耦合
分支匹配机制
build-in Object 内置对象
internal Object 内部对象
对象属性后绑定
ECMAScript JavaScript的语法规范隶属版本
97 1.0
98 2.0
99 3.0 JS通行标准
07 4.0 草案
08 4.0 终止 改善3 .1
09 ECMA 发布5 .0
11 EMCA 5.1 发布
13 EMAC 6.0 草案发布
15 ES6 6.0 正式发布
错误的类型:
SyntaxError 语法错误 unexpected(意外) 变量命名、关键字
ReferenceError 引用错误
RangeError:范围错误
TypeErro:类型错误
URIError:URI错误
自定义错误:
URI:uniform Resource identifier 统一资源标识符
URL:uniform Resource Location 统一资源定位符
URN: uniform Resource Name 统一资源名称
URI:包含URL和URN
JS 垃圾回收机制:
1、找出不再使用的变量
2、释放内存
标记清除:进入环境,离开环境(排除全局变量、闭包变量)
事件源 :触发事件的的元素
事件对象:封装事件源的对象
事件流:事件的广播方向,有2种。
冒泡事件:由事件源往外父元素广播
捕获事件:由父元素向里子元素广播直到事件源
事件代理/事件委托:子元素的的事件统一由父元素代理处理,父元素根据事件对象,可以判断数据源是哪一个子元素
单点登录:基础域名相同的站点,都登录。
//惰性求值:每一次都重新计算
// 模式匹配(结构化赋值)
// 解构失败:变量多,值少
// 不完全解构:变量少,值多
静默失败:给不可写的属性,重新赋值
vue重要版本发布
2013年,在 Google 工作的尤雨溪,受到 Angular 的启发,开发出了一款轻量框架,最初命名为 Seed 。
2013年12月,更名为 Vue,图标颜色是代表勃勃生机的绿色,版本号是 0.6.0。
2014.01.24,Vue 正式对外发布,版本号是 0.8.0。
2014.02.25,0.9.0 发布,有了自己的代号:Animatrix,此后,重要的版本都会有自己的代号。
2015.06.13,0.12.0,代号Dragon Ball,Laravel 社区(一款流行的 PHP 框架的社区)首次使用 Vue,Vue 在 JS 社区也打响了知名度。
2015.10.26,1.0.0 Evangelion 是 Vue 历史上的第一个里程碑。同年,vue-router、vuex、vue-cli 相继发布,标志着 Vue从一个视图层库发展为一个渐进式框架。
2016.10.01,2.0.0 是第二个重要的里程碑,它吸收了 React 的虚拟 Dom 方案,还支持服务端渲染。自从Vue 2.0 发布之后,Vue 就成了前端领域的热门话题。
2019.02.05,Vue 发布了 2.6.0 ,这是一个承前启后的版本,在它之后,将推出 3.0.0。
2019.12.05,在万众期待中,尤雨溪公布了 Vue 3 源代码,目前 Vue 3 处于 Alpha 版本
MVC的缺点:驱动被MVC分离成3部分,M,V和逻辑混淆在一起,导致逻辑分散,在横向分离是没有问题,但是在纵向就比较混乱。
数据的流向:
controller->mode->view
view->controller->mode
MVVM:解决了MVC的缺点:把逻辑处理全部集中在viewMode层。
数据的流向:
view更新通知 ->viewMode处理好,通知 ->mode数据更新
mode数据更新 ->viewMode处理好,通知 ->view更新
vue框架的机制:
1、数据劫持
2、模板编译
3、依赖收集:模板依赖、watch依赖、compute依赖
4、虚拟dom的算法
组件树、
组件化设计:扁平化原则;
单文件组件
kebab-case:中横线
单向数据流:子组件是不能修改父组件的数据。
组件之间的数据流:
父->子 props;
子->父(事件传递)到数据源的目标组件中修改:
自定义事件:this.$emit('eventName',params)
Vue提供的2个框架
1、Nuxt框架:快速实现vue的服务端渲染
2、Week框架:使用vue的语法实现原生app
vue不支持IE8及以下版本,由于vue时由于ES5的Object.definedProperty做数据劫持
作用域屏蔽:在一个嵌套作用域里引入一个新名字的行为称做屏蔽:
- function sumMatrix(matrix: number[][]) {
- let sum = 0;
- for (let i = 0; i < matrix.length; i++) {
- var currentRow = matrix[i];
- for (let i = 0; i < currentRow.length; i++) {
- sum += currentRow[i];
- }
- }
-
- return sum;
- }
我们应该避免使用屏蔽,因为我们需要写出清晰的代码。
属性遮蔽 (property shadowing):对象自身有属性b,原型上也有属性b,但是原型的b属性不会被访问, 这种情况被称为到"属性遮蔽"
const app = createApp(App);
app.config.globalProperties.$http = httpClient;
组合函数(饲养函数)compose
左倾:fn(fn2())
结合律:fn(1,2,3,4)=fn(1,2)(3,4);
柯里化函数:fn(1,2,3,4)=curry(1)(2)(3)(4)
偏函数(partial Function):先执函数的已知参数部分,返回一个函数再执行函数的动态参数;
惰性函数:函数内部改变自身,不需要每一次都执行初始分支语句;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。