JS-1 前端的三大核心;编程语言发展历史;机器语言;汇编语言;高级语言;JavaScript起源、组成、运行;JavaScript引擎;浏览器内核和JS引擎的关系;JavaScript的广泛应用

1_前端的三大核心

  • HTML:简单易学,掌握常用的标签即可;
  • CSS:CSS属性规则较多,多做练习和项目;
  • JavaScript:上手容易,但是精通很难。学会它需要几分钟,掌握它需要很多年。

HTML是一种标记语言, CSS也是一种样式语言,包括JavaScript,三者都是属于计算机语言, 因为都在和计算机沟通交流(计算机语言就是我们人和计算机进行交流要学习的语言)。


2_编程语言发展历史

更精确说法:JavaScript是一种编程语言

编程语言:是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令,一种能够让程序员准确地定义计算机所需要使用数据的计算机语言,并精确地定义在不同情况下所应当采取的行动

编程语言的特点: 数据和数据结构; 指令及流程控制; 引用机制和重用机制; 设计哲学。

在这里插入图片描述


2.1_机器语言

计算机的存储单元只有0和1两种状态,因此一串代码要让计算机“读懂”,这串代码只能由数字0和1组成。

像这种由数字0和1按照一定的规律组成的代码就叫机器码,也叫二进制编码。

一定长度的机器码组成了机器指令,用这些机器指令所编写的程序就称为机器语言。

优点:

代码能被计算机直接识别,不需要经过编译解析;

直接对硬件产生作用,程序的执行效率非常高;

缺点:

程序全是些0和1的指令代码,可读性差,还容易出错;

不易编写(目前没有人这样开发);

2.2_汇编语言

为了解决机器语言的缺陷,人们发明了另外一种语言——汇编语言。

这种语言用符号来代替冗长的、难以记忆的0、1代码。(mov/push指令,经过汇编器,汇编代码再进一步转成0101)

优点

像机器语言一样,可以直接访问、控制计算机的各种硬件设备;

占用内存少,执行速度快;

缺点

第一,不同的机器有不同的汇编语言语法和编译器,代码缺乏可移植性。也就是说,一个程序只能在一种机器上运行,换到其他机器上可能就不能运行;

第二,符号非常多、难记。 即使是完成简单的功能也需要大量的汇编语言代码,很容易产生BUG,难于调试;

应用场景: 操作系统内核、驱动程序、单片机程序;

2.3_高级语言

最好的编程语言应该是 自然语言;

高级语言, 接近自然语言, 更符合人类的思维方式;

跟和人交流的方式很相似, 但是大多数编程语言都是国外发明的, 接近于英文的交流方式.

优点

简单、易用、易于理解,语法和结构类似于普通英文;

远离对硬件的直接操作,使得一般人经过学习之后都可以编程,而不用熟悉硬件知识;

一个程序还可以在不同的机器上运行,具有可移植性;

缺点

程序不能直接被计算机识别,需要经编译器翻译成二进制指令后,才能运行到计算机上;

种类繁多:JavaScript 、 C语言、C++、C#、Java、Objective-C 、Python……

2.4_三种语言的转化

在这里插入图片描述

前端的高级语言就是JavaScript,要学好!


3_JavaScript

3.1_起源

1994年,网景公司(Netscape)发布了Navigator浏览器0.9版

  • 这是历史上第一个比较成熟的网络浏览器,轰动一时。
  • 但是,这个版本的浏览器只能浏览,不具备与访问者互动的能力。
  • 急需一种网页脚本语言,使得浏览器可以与网页互动。

网景公司想选择一种语言来嵌入到浏览器中:

  • 采用现有的语言,比如Perl、Python、Tcl、Scheme等等, 允许它们直接嵌入网页;
  • 1995年网景公司招募了程序员Brendan Eich,希望将Scheme语言作为网页脚本语言的可能性;

1995年Sun公司将Oak语言改名Java,正式向市场推出;

  • Java推出之后立马在市场上引起了轰动,Java当初有一个口号:“write once run anywhere”;
  • 网景公司决定与Sun公司结成联盟,希望将Java嵌入到网页中来运行;
  • 程序员Brendan Eich非常热衷于Scheme,但是管理层党史有点倾向于Java,希望可以简化Java来适应网页脚本的需求

Brendan Eich对此并不感兴趣,他用10天时间设计出来了JavaScript;

  • 最初这门语言的名字是Mocha(摩卡);
  • 在Navigator2.0 beta版本更名为LiveScript;
  • 在Navigator2.0 beta 3版本正式重命名为JavaScript,当时是为了给这门语言搭上Java这个热词;

Brendan Eich短时间设计一门语言,很聪明,但这门语言当时更像是多种语言的大杂烩

  • 借鉴C语言的基本语法;
  • 借鉴Java语言的数据类型和内存管理;
  • 借鉴Scheme语言,将函数提升到"第一等公民"(first class)的地位;
  • 借鉴Self语言,使用基于原型(prototype)的继承机制。

微软公司于1995年首次推出Internet Explorer,从而引发了与Netscape的浏览器大战。

  • 微软对Netscape Navigator解释器进行了逆向工程,创建了JScript,以与处于市场领导地位的网景产品同台竞争;
  • 这个时候对于开发者来说是一场噩耗,因为需要针对不同的浏览器进行不同的适配;

1996年11月,网景正式向ECMA(欧洲计算机制造商协会)提交语言标准。

  • 1997年6月,ECMA以JavaScript语言为基础制定了ECMAScript标准规范ECMA-262;
  • ECMA-262是一份标准,定义了ECMAScript;
  • JavaScript成为了ECMAScript最著名的实现之一;
  • 除此之外,ActionScript和JScript也都是ECMAScript规范的实现语言

3.2_JavaScript的组成

ECMAScript是JavaScript的标准,描述了该语言的语法和基本对象。

  • ECMAScript:定义语言规范
  • DOM操作:用于操作文档的API
  • BOM操作:用于操作浏览器的API

3.3_JavaScript由JavaScript引擎来运行

不同的浏览器有不同的内核组成

  • Gecko:早期被Netscape和Mozilla Firefox浏览器浏览器使用;
  • Trident:微软开发,被IE4~IE11浏览器使用,但是Edge浏览器已经转向Blink;
  • Webkit:苹果基于KHTML开发、开源的,用于Safari,Google Chrome之前也在使用;
  • Blink:是Webkit的一个分支,Google开发,目前应用于Google Chrome、Edge、Opera等;

浏览器内核指的是浏览器的排版引擎(layout engine),也称为浏览器引擎(browser engine)、页面渲染引擎(rendering engine)或样版引擎。

3.4_JavaScript引擎

JavaScript引擎的重要性

  • 高级的编程语言都是需要转成最终的机器指令来执行的;
  • 编写的JavaScript无论交给浏览器或者Node执行,最后被CPU执行的;
  • 但是CPU只认识并执行 机器语言, 所以需要JavaScript引擎帮助,把JavaScript代码翻译成机器语言,即CPU指令;

比较常见的JavaScript引擎

  • SpiderMonkey:第一款JavaScript引擎,由Brendan Eich开发(也就是JavaScript作者);
  • Chakra:微软开发,用于IT浏览器;
  • JavaScriptCore:WebKit中的JavaScript引擎,Apple公司开发;
  • V8:Geogle开发的强大JavaScript引擎,也帮助Chrome从众多浏览器中脱颖而出;

3.5_浏览器内核和JS引擎的关系

以WebKit为例,WebKit由两部分组成的:

  • WebCore**:**负责HTML解析、布局、渲染等等相关的工作;
  • JavaScriptCore**:**解析、执行JavaScript代码;

小程序: 在小程序中编写的JavaScript代码就是被JSCore执行的;

在这里插入图片描述

3.6_JavaScript应用越来越广泛

Web开发:原生JavaScript;React开发;Vue开发;Angular开发;

移动端开发;ReactNative;Weex

小程序端开发:支付宝小程序;uniapp;taro;

桌面应用开发:Electron;比如VSCode

后端开发:Node框架;比如express、koa、egg.js

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值