前言:做一名Web设计师是一件令人兴奋的事。在Web技术中,JavaScript是一个经历从被人误解到万众瞩目的巨大转变,在历史的冲击中被留存下来的个体。因为JavaScript的引导,Web开发也从混乱无序的状态转变为需要经过严格训练才能胜任的工作。当大家谈论起Web开发时,自然会提到Web标准中的三门语言:①HTML(超文本标记语言)②CSS(层叠样式表)③JavaScript(没法翻译)。通常来说HTML和CSS总是占据着核心地位,但它们三者之间不存在对抗关系,反而是交融、互助的关系(尽管现在大家都在提倡各种分离的概念)。网页的重要意义是与用户进行交互。其中,JavaScript就是充当着使网页具备交互能力的程序设计语言。

  1. JavaScript的出现

    JavaScript是由Netscape(网景)和Sun(Java语言的起源,后被Oracle收购)两家公司合作开发的。在JavaScript出现前,尽管我们拥有“HTML(超文本标记语言)”这个工具,起初我们使用它来规范科研文献,但我们可以想象当时的HTML其实只是简单的超文本文档,只能完成基本的内容显示与跳转等功能。但JavaScript出现后,HTML瞬间从单一的文本升级为了具有强大交互性的工具。1995年,JavaScript出现在了Netscape Navigator 2浏览器中。

    当时Netscape Navigator毋庸置疑地主宰了浏览器市场,微软推出的IE浏览器在他面前只是一个弟弟。在IE3出现时,微软发布了VBScript,同时以JScript为名发布了JavaScript的一个版本,跟上了Netscape的步伐。在竞争面前,Netscape和Sun公司联合ECMA(欧洲计算机制造商协会)对JavaScript制定了标准,终于出现了ECMAScript语言。而我们常说的ES5,ES6中的ES,其实就是ECMAScript的简写,而JavaScript实际上也就是ECMAScript。

    梗:我们常说的雷锋与雷峰塔的关系,跟Java与JavaScript的关系非常类似,后来大家以此调侃JavaScript。

     JavaScript是一种脚本语言,它在一般情况下只能应用在Web浏览器去完成操作而很少像Java、C++这种编译型语言一样独立运行。因此,JavaScript具有与编译型语言的两种对立的特性:局限性和简单性。

    最后要提出的是两个概念:

    ① 由于JavaScript提供了一些操控Web浏览器的手段,可以调整浏览器的窗口高度、位置等属性,这种办法被称为BOM(Browser Object Model),例如window对象就是BOM中的一 个较为核心的对象;

    ② HTML本身是树形的结构,JavaScript同样提供了许多操纵HTML树的方法,同样可以对它们进行属性的调整,这种办法被称为DOM(Document Object Model),例如document对象就是DOM中的一个较为核心的对象。

  2. DOM

    在JavaScript编程中,有一个重要的概念叫作DOM(文档对象模型)。所谓的DOM,就是一种将文档内容进行抽象,以及赋予意义的方法。你也可以用我们程序设计中“类”里面的“方法”来理解DOM,因为本质上DOM就是一种API,JavaScript可以通过这些API更方便地操控标记语言中的元素。在现实世界中,我们人类对世界的认识也可以总结为一套类似的方法,称为WOM(该概念源自《JavaScriptDOM编程艺术》一书,个人认为非常地贴切),中文叫做“世界对象模型”。我们用“车”、“房子”、“树”云云来定义我们身边的事物,以此来称呼这些事物,我们身边的人也一定会在一瞬间内反应过来,“哦你讲的是这一个物品”。类比到HTML5中,我们用

  3. 浏览器战争

    时间来到了1997年,Netscape公司在6月发布了Netscape Navigator 4,对应的,微软也在10月发布了IE 4。两格浏览器都对早期的版本进行了改进,扩展了DOM,这意味着通过JavaScript可以完成更多的功能了。我们迎来了“DHTML(Dynamic HTML,动态的超文本标记语言)”的概念。区别于像HTML、JavaScript这些技术,DHTML只是一种概念。这个概念的意思就是:

    ① 使用HTML编写网页的元素;

    ② 使用CSS设置这些元素的样式;

    ③ 使用JavaScript操控页面、改变样式,以及实现动态的交互。

    尽管技术一直在发展,我们却迎来了噩耗:为了竞争,两种浏览器分别使用了两种不相容的DOM。虽然大家的目标都是相同的——实现美观动态交互性强的网页,但实现的方式却大相径庭。这使得开发网页的成本变得十分高,为了让使用不同浏览器的用户都可以浏览网页的内容,我们必须编写不同规范的代码。DHTML本来是绝对好的,它符合人类对科技发展的憧憬,但在实现的路上却因为某些商业原因遭遇了空前的困境。很快,DHTML被大家认定为“宣传的噱头”与“难以实现”。

  4. 标准化解决问题

    浏览器制造商在以DOM为武器对抗时,浏览器开发工作十分困难。此时W3C(World Wide Web Consortium,万维网联盟)小组站出来了,他们制定了一个标准的DOM。而值得庆幸的是,浏览器制造商也肯放下敌意协作制定标准。1998年,我们迎来了“第1级DOM(DOM Level 1)”:

    var pdisplay = document.getElementById('p').style.display

    乍一看似乎并没有什么区别,事实上第1级DOM已经可以让任何一种程序设计语言对任何一种标记语言进行操控了,这是对未来HTML和XML发展的巨大推动(我们现在一般使用的是DOM Level 3)。

  5. 浏览器战争结局以及后续发展

    以前我们用的是windows 98 或者是windows XP之类的操作系统,里面通常会在桌面就有一个IE浏览器的快捷方式。我们通过这个缩影可以联想到,微软在浏览器市场份额上战胜了Netscape。时至今日,大家提到IE浏览器时,总是说它是罪恶的,微软后来自己也推出了Microsoft Edge浏览器。其中的原因就是IE浏览器在许多方式上不遵循W3C的标准,导致增大了许多开发上的负担。从2003年到现在,许多浏览器诞生了。苹果公司发布了它基于Webkit的Safari浏览器,从一开始就坚定不移地遵循W3C的标准;Firefox、Chrome、Opera这些被大家推荐使用的,以及其他浏览器们都对DOM有良好的支持,包括很多手机浏览器。2014年,HTML5诞生了,它与DOM、AJAX等等技术的配合,使互联网产生了巨大的飞跃,现代浏览器对于DOM特性的覆盖率高达95%,虽未到100%,但我们基本可以过上编写一个脚本可以在多处兼容运行的幸福生活了。

  6. 最后

    之所以花这么大篇幅在介绍JavaScript的历史时介绍了DOM和浏览器的发展,是因为它们是JavaScript的载体,我们必须也要重视DOM和浏览器兼容等知识的学习。以及我们需要感恩这些制定标准,效忠于科技发展的伟人们。多亏了标准化的DOM,我们才能在不同浏览器中实现一致的梦想。

林大妈的JavaScript基础知识(一):JavaScript简史的更多相关文章

  1. 【javascript基础知识】javascript中的转义序列和特殊数值常量

    javascript的转义序列 \0 NUL字符(\u0000) \b 退格符(\u0008) \t 水平制表符(\u0009) \n 换行符(\u000A) \v 垂直制表符(\u000B) \f ...

  2. Javascript 基础知识学习--javascript中的参数传递都是按值传递的

    ECMAScript中所有函数的参数传递都是按值传递的,无论参数是值类型还是引用类型的.过去我跟大多数人一样觉得跟传值类型相关. 自己写了一个测试的例子,确实如此 function add(a) { ...

  3. Javascript基础知识总结一

    Javascript基础知识总结一 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...

  4. 学习javascript基础知识系列第二节 - this用法

    通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...

  5. 学习javascript基础知识系列第三节 - ()()用法

    总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...

  6. javascript 基础知识学习1

    JavaScript 是脚本语言.浏览器会在读取代码时,逐行地执行脚本代码.而对于传统编程来说,会在执行前对所有代码进行编译.基础知识:1).JavaScript 对大小写敏感.JavaScript ...

  7. JavaScript 基础知识 - BOM篇

    前言 本篇文章是JavaScript基础知识的BOM篇,如果前面的<JavaScript基础知识-DOM篇>看完了,现在就可以学习BOM了. 注意: 所有的案例都在这里链接: 提取密码密码 ...

  8. JavaScript基础知识(一)

    一.JavaScript基础 1.JavaScript用法: HTML 中的脚本必须位于 <script> 与 </script> 标签之间. 脚本可被放置在 HTML 页面的 ...

  9. 林大妈的JavaScript基础知识(三):JavaScript编程(3)原型

    在一般的编程语言中,我们使用继承来复用代码,做成良好的数据结构.而在JavaScript中,我们使用原型来实现以上的需求.由于JavaScript专注于对象而摒弃了类,我们要明白原型和继承的确是有差异 ...

  10. 林大妈的JavaScript基础知识(三):JavaScript编程(2)函数

    JavaScript是一门函数式的面向对象编程语言.了解函数将会是了解对象创建和操作.原型及原型方法.模块化编程等的重要基础.函数包含一组语句,它的主要功能是代码复用.隐藏信息和组合调用.我们编程就是 ...

随机推荐

  1. java关键字-final

    final特点: 1:这个关键字是一个修饰符,可以修饰类,方法,变量. 2:被final修饰的类是一个最终类,不可以被继承. 3:被final修饰的方法是一个最终方法,不可以被覆盖. 4:被final ...

  2. Ubuntu --- Xshell 连接 VirtualBox下安装的Ubuntu

    1.桥接模式 打开VirtualBox管理器---设置---网络---连接方式选择桥接网卡 2.安装ssh服务 安装: sudo apt-get install openssh-server 启动: ...

  3. webapi使用autofac

    注意:您的项目中如果使用的是webapi2,此处必须为webapi2而不是webapi,否则在运行时将出现“重写成员“Autofac.Integration.WebApi.AutofacWebApiD ...

  4. Kafka —— 基于 ZooKeeper 搭建 Kafka 高可用集群

    一.Zookeeper集群搭建 为保证集群高可用,Zookeeper集群的节点数最好是奇数,最少有三个节点,所以这里搭建一个三个节点的集群. 1.1 下载 & 解压 下载对应版本Zookeep ...

  5. Nginx部署多个站点

    Nginx部署多个站点 一,介绍与需求 1.1,介绍 详细介绍请看nginx代理部署Vue与React项目,在这儿主要介绍多个站点的配置 1.2,需求 有时候想在一台服务器上为不同的域名/不同的二级域 ...

  6. 并发编程-Future+callable+FutureTask 闭锁机制

    项目中经常有些任务需要异步(提交到线程池中)去执行,而主线程往往需要知道异步执行产生的结果,这时我们要怎么做呢?用runnable是无法实现的,我们需要用callable实现. FutureTask ...

  7. POJ 1651:Multiplication Puzzle(区间DP)

    http://poj.org/problem?id=1651 题意:给出n个数字,每取中间一个数,就会使得权值加上中间这个数和两边的乘积,求取剩两个数最少的权值是多少. 思路:区间dp. 一开始想了挺 ...

  8. 基础数据类型,格式化输出,以及for循环的使用

    基础数据类型总览 int :数字类型,可以+-*/等等操作 str:字符串类型,存储少量的数据,+*int 切片等 bool :里面包含True,False这两种值,用来判断真假. list :列表 ...

  9. scrapy基础知识之将item 通过pipeline保存数据到mysql mongoDB:

    pipelines.py class xxPipeline(object): def process_item(self, item, spider): con=pymysql.connect(hos ...

  10. 微信开发:微信js_sdk 分享,前端部分(二)

    微信开发:微信js-sdk前端分享,代码如下: <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"> ...