1.关于js

js 是前端最核心的语言,甚至有外行叫我们’js工程师’

js最厉害的是可以动态的操作html进行增删改查

都是在js基础上增加了很多js的附带方法,把这些附带方法抽象提取出一个门类, 例如:
css3 和css2类似,在c2的基础上添加了一些属性,变的非常强大,自己可以做动画,但是css3最强大的地方是能够和js配合,做一些高难度的东西

html5.0 是在之前html4.01的基础上增加了一些标签,h5的高级功能都是和js语法相关的

jq 是js的封装版本,原来写一个功能用js写20行,jq封装完后1行就够了,是一个简化版工具

zepto也是一个工具

bootstrap 是css3 css的一个简化工具

react、redux 都是基于js开始 模块化编程 ,如何多人协作, 如何效率更高 ,如何更加好维护

node.js 是后端语言, 注意是’.js’,使用的引擎是chrome的v8引擎 和js的语法是一致的,思想不一致,语法一致

js 难度系数是倒序的

1、浏览器组成有两大部分:shell 和 内核部分

shell(翻译过来叫 贝壳),浏览器中用户能看到、能操作的部分叫做shell部分;比如浏览器中的工具栏,状态栏等;
我们看不到的,能够处理代码,并能把代码完整显示处理的部分 叫内核部分;(浏览器的核心是怎么运行的)

中国浏览器不出名就是因为我们没有自己独立的内核

2、内核部分分为2大部分:渲染引擎、js引擎 和其他模块

渲染引擎(渲染也就是绘制,绘制网页是从上到下一层一层绘制,浏览器是一条一条,而且浏览器帧屏是16毫秒切一次-16毫秒闪一次,更新一次状态,我们根本反应不过来)
渲染引擎主要负责html css 基础语法的识别 以及 浏览器如何高效的绘制页面;

js引擎

其他模块:负责异步等等

引擎,类似汽车的发动机,真正让汽车动起来的东西,马达

3、js引擎

2001 ie6问世,首次实现从内核里剥离出了js引擎,拿js引擎单独处理js代码,强大到瞬间让js的执行代码提升到了万行以上,直到现在银行和政府用的还是ie6
因为2001年 除了ie6问世 还有 Microsoft 的XP系统,xp系统的御用浏览器就是ie,因为银行等没还系统 所以用的还是ie
到现在ie浏览器很多版本:7 8 9 10 11 edge

2008年 google 联合apple 开发了一款内核webkit,发布了最新的浏览器chrome
chrome浏览器的内核就是webkit, webkit的js引擎就是v8引擎,(原来js引擎翻译js代码,先从js代码翻译为底层的汇编代码,再翻译成机械码,然后机器才能运行)

该V8引擎能直接把js代码翻译成机械码(010101。。。)来执行,不用经过多次翻译,进而以速度快而闻名

v8 引擎 和 js都是用c语言写的;

后来firefox 也推出了具备强大功能的js引擎

4、js 特点 -重要(解释性语言、单线程)

4.1 js是解释性语言,
我们写的代码,机器不认识,机器只认识010101,所以要经过翻译,翻译的过程分为2种:编译 和 解释;

	编译性语言 和 解释性语言 只是因为他翻译的方式不一样:
	编译性语言 先 通遍 翻译,翻译完后生产一个翻译文件,最后程序执行这个翻译文件;比如java,把 .java文件翻译成。class文件,最后执行。class文件
	解释性语言 读一行 翻译一样 执行一行,然后翻译第二行,一直这样翻译一行执行一行,不生成特定的文件;

 优缺点:
 编译性语言:快  但是 移植性不好,不跨平台  
 // c 和c++ 不能跨平台,在windows上编译完的文件(.exe),拿到linux上不能用(.erp),移植性不好;
 // 家用版本都是windows,但是服务器多数都是linux 或者 unix 因为他稳定;(由黑客和编程者共同开发的编程系统);

 // 服务器 和电脑一样,只不过这个电脑的ip是供大家访问的,通过访问ip 设定一个服务器的功能,把网站推送到大家手里;
 // 我们用电脑是索取东西的, 服务器是用来发东西的;我们的电脑也可以当服务器来用,最简单的服务器就是买个机箱;
c c++ 是编译性语言

 解释性语言:稍微慢    但好处可以跨平台

解释性语言根本都不翻译成文件,所以不存在跨平台问题。直接是二进制(010101)
凡是脚本带<>的都是解释性语言,php  js phython 都是解释性语言

java 都不是这两种语言,是oak语言,Java有个jvm虚拟机, .Java文件  先通过javac  编译成  .class文件, 再通过java虚拟机jvm解释执行
所以jvm虚拟机成全了java,java才能跨平台

4.2单线程(js引擎是单线程的,因为js引擎是执行js的地方)

单线程就是一个执行体同一时间只能做一件事;多线程就是可以同一时间做多件事;
同步和异步:计算机里和生活中不同,同时做多件事叫异步asyc; 先做一件事,停下或完成才能做另一间事是同步;

所以在计算机里,什么是异步的,说明是同时执行的,例如css中的link标签的加载,就是异步的;
//
// 比如浏览器输入网址后访问html页面,html页面是加载一行执行一行,当加载到 link标签那行的时候,执行的结果是加载另一个文件lesson.css
// 这个时候lesson.css 文件是边下载html 边下载html,这种一起的下载 我们叫做异步的加载;

4.3 js的语言标准:ECMA -欧洲计算机联盟

javascript 我们更喜欢叫他ECMAScript(ES),因为标准是ECMA定的;

现在的js 除了有开始的功能(原生的部分叫ecmascript), 后来推出了浏览器提供的DOM部分 和 BOM 部分;
DOM是操作文档的,操作html\css的;BOM是操作浏览器的;

统称js3大部分:ECMAScript 、 DOM 、 BOM

5、js执行队列
js 是单线程(同一时间只能动一个); 但是可以单线程模拟多线程;使用 轮转时间片

轮转时间片类似吃饭,
js引擎要执行task1 和 task2 ,不是把任务1执行完再执行任务2,而是把任务1 和任务2 以微秒或毫秒切成无数个片段,
然后把这无数个片段排成一个队列,谁排前面谁排后面完全随机(这叫做 争抢时间片),可能第一个是任务1,,第二个第三个还是任务1,,都不一定,概率问题
把片段排成队列后,一个片段一个片段的往js引擎里送,js引擎以一个时间片为基准单位去执行时间片段,
最后把任务1 和 任务2 按照片段执行完

发布了26 篇原创文章 · 获赞 3 · 访问量 7933

猜你喜欢

转载自blog.csdn.net/Eva3288/article/details/102887409