上一篇简单介绍了Web三要素中的层叠样式表,本篇主要介绍三要素中最后一个,也是最难掌握的一个-----JavaScript。

JavaScript

老规矩不能破,先简要交代 JavaScript 的历史。

我们知道,在Web诞生之初是没有JavaScript的,网页只是简单的文本。随着Web的发展和逐渐成熟,人们对Web的诉求越来越多,网页的大小和复杂性在不断的增加。在那个网速普遍只有一二十K的年代,用户填完一张表单之后提交到服务端,然后等待几十秒,才能获得服务端返回的验证信息。如果用户的输入有误,那就要不停的重复这个过程。对于用户来说,这是一个痛苦的折磨。于是人们对于表单本地校验的诉求越来越强烈,进而催生了JavaScript语言。
有趣的是,最初NetScape(网景)公司在开发JavaScript语言的时候(JavaScript诞生于1995年),并没有将其命名为JavaScript,而是叫做LiveScript。在NetScape Navigator 2发布前期,为了搭上当时被媒体热炒的Java语言的顺风车,NetScape公司临时将LiveScript改名为JavaScript。所以,实际上JavaScript与Java语言没有任何实质的关系。
由于Web的持续发展,用户关注度越来越高,微软公司也加大了对IE浏览器的投入。不久就在IE3中加入了JavaScript的实现,只不过叫做JScript而已。了解Web发展历史(参阅Web简史)的都知道,这个时期正处于第一次浏览器大战时期,各家都在拼命抢占市场份额。因此对于JavaScript,难免各个厂家都会加入不同的实现和特性,最明显的例子就是JavaScript和JScript两个版本并驾齐驱,缺乏一个统一的标准。
随着业界对这个问题的担心日益加剧,终于在1997年,通过NetScape、Sun、微软等公司的程序员的努力,终于完成了ECMA-262标准的制定。ECMA-262定义了一种叫做ECMAScript的新的脚本语言的标准。随后,各个浏览器厂商以ECMAScript作为各自JavaScript实现的基础,也就是说,目前我们使用的JavaScript,都是ECMAScript的一种具体实现。

通常我们把JavaScript就当成是ECMAScript,但实际上JavaScript比ECMA-262规定的要多得多。一个完整的JavaScript实现要包含下面三个组成部分。

  1. 核心(ECMAScript)
  2. 文档对象模型(DOM)
  3. 浏览器对象模型(BOM)

其中,ECMAScript就是我们通常认为的JavaScript语言,包括语法、类型语句、关键字、保留字、操作符、对象等基本的语言要素。
文档对象模型(Document Object Model),是针对XML但经过扩展用于HTML的API,既然是API,我们就可以通过DOM来操作文档。实际上,DOM把整个页面映射成一个多层节点机构,HTML或XML页面中的每个组成部分都是某种类型的节点,这些节点又包含着不同类型的数据。这里要多问一句,为什么要有dom存在呢,直接操作html文档不可以么?其实早期就是这么做的,IE4和Netscape Navigator 4分别支持不同形式的DHTML(动态HTML),开发人员在此基础上,无需重新加载网页就已经可以修改网页的外观和内容了。那为什么后来又出现了DOM呢?这还是要联想到当时的历史情景,当时正好处于第一次浏览器大战,NetScape和微软在开发DHTML方面各持己见,导致了当时的两大阵营之间的严重不兼容。长久这样下去,对Web的发展是非常不利的,所以此时,W3C才站出来开始着手规划DOM。
我们在日常的开发过程中要用到很多与浏览器相关的对象,接触最多的一个对象想必就是window对象了,那么window对象是怎么来的呢,它其实属于浏览器对象模型(Browser Object Model)的一部分。我们知道,JavaScript运行在浏览器中(先不说Nodejs),如果要使用浏览器的功能,比如新开一个标签页,就必须通过BOM,这也是BOM产生的原因。BOM提供了很多的对象,用于访问浏览器的功能,除了window对象,还有location对象、navigator对象、screen对象、history对象等。在开发过程中,我们经常要使用到这些对象,所以熟练掌握这些对象是很有必要的。

小结

本篇主要介绍了JavaScript的诞生,并介绍了JavaScript的基本组成部分,从整体上了解了JavaScript这门语言。后面会从一些基本的语言点和日常开发中使用频率较高的知识点介绍JavaScript语言的基本知识。

(Frontend Newbie)Web三要素(三)的更多相关文章

  1. (Frontend Newbie) Web三要素(一)

    上一篇简单了解了Web发展的简要历史,本篇简单介绍前端开发的基本三要素:HTML.CSS.JavaScript中的HTML以及一些在开发.学习过程中易被忽视的知识点. HTML HTML全称是超文本标 ...

  2. 【小白学PyTorch】4 构建模型三要素与权重初始化

    文章目录: 目录 1 模型三要素 2 参数初始化 3 完整运行代码 4 尺寸计算与参数计算 1 模型三要素 三要素其实很简单 必须要继承nn.Module这个类,要让PyTorch知道这个类是一个Mo ...

  3. (Frontend Newbie)Web三要素(二)

    上一篇简单介绍了HTML的基本知识以及一些在开发学习过程中容易忽视的知识点,本篇介绍Web三要素中另一个重要组成部分----层叠样式表(Cascading Style Sheets). CSS 按照一 ...

  4. 移动web开发之屏幕三要素

    × 目录 [1]屏幕尺寸 [2]分辨率 [3]像素密度 前面的话 实际上,并没有人提过屏幕三要素这个词,仅是我关于移动web开发屏幕相关部分总结归纳的术语.屏幕三要素包括屏幕尺寸.屏幕分辨率和屏幕像素 ...

  5. Web Service基础——规范及三要素

    1. Java中的Web Service规范 Java 中共有三种WebService 规范,分别是JAX-WS(JAX-RPC).JAX-RS.JAXM&SAAJ(废弃). 1.1 JAX- ...

  6. 【腾讯Bugly干货分享】彻底弄懂 Http 缓存机制 - 基于缓存策略三要素分解法

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/qOMO0LIdA47j3RjhbCWUEQ 作者:李 ...

  7. Http协议:彻底弄懂 Http 缓存机制 - 基于缓存策略三要素分解法

    转载:http://mp.weixin.qq.com/s/uWPls0qrqJKHkHfNLmaenQ 导语 Http 缓存机制作为 web 性能优化的重要手段,对从事 Web 开发的小伙伴们来说是必 ...

  8. WebService基础学习(二)—三要素

    一.Java中WebService规范      JAVA 中共有三种WebService 规范,分别是JAX-WS.JAX-RS.JAXM&SAAJ(废弃).   1.JAX-WS规范    ...

  9. webService 三要素

    WebService(jax-ws)三要素 SOAP: 基于HTTP协议,采用XML格式,用来传递信息的格式. WSDL: 用来描述如何访问具体的服务.(相当于说明书) UDDI: 用户自己可以按UD ...

随机推荐

  1. java多线程的基本介绍

    Java多线程 1.进程与线程 进程是程序的一次动态执行过程,它需要经历从代码加载,代码执行到执行完毕的一个完整的过程,这个过程也是进程本身从产生,发展到最终消亡的过程.多进程操作系统能同时达运行多个 ...

  2. PrintDocument or PrintPreviewDialog 打印

    /// <summary> /// /// </summary> /// <param name="sender"></param> ...

  3. C# Socket 发送&接收&返回

    因为工作比较忙,好久没有写过博客了,最近因项目需求,需要用到Socket来进行通信,简单写了几个例子,记录一下,代码很简单,无非就是接收与发送,以及接收到数据后返回一个自定义信息,也可以说是发送. 先 ...

  4. C#中如何向数组中动态添加元素

    转自:https://blog.csdn.net/qq_35938548/article/details/78325558 背景:现需要向数组中循环插入字符串,但C#中的数组是不支持动态添加元素的,只 ...

  5. Vue生命周期函数

    生命周期函数: 组件挂载,以及组件更新,组建销毁的时候出发的一系列方法. beforeCreate:实例创建之前 created:实例创建完成 beforeMount:模板编译之前 mounted:模 ...

  6. 分享一个利用HTML5制作的海浪效果代码

    在前面简单讲述了一下HTML里的Canvas,这次根据Canvas完成了“海浪效果”(水波上升). (O(∩_∩)O哈哈哈~作者我能看这个动画看一下午) 上升水波.gif 动画分析构成:贝塞尔曲线画布 ...

  7. ajax-2

    serialize()输出序列化表单值的结果: 如: <html> <head> <script type="text/javascript" src ...

  8. golang文件处理函数openfile与linux系统的文件函数的耦合

    golang运行最理想的环境是linux系统中,编译速度和执行速度都比较快,本文是关于golang中的文件操作函数 在golang标准库中os包提供了不依赖平台的借口,但是使用的风格是unix风格的. ...

  9. HDU6318-2018ACM暑假多校联合训练2-1010-Swaps and Inversions-树状数组

    本题题意是,给你一个长度为n的序列,使用最少的操作把序列转换为从小到大的顺序,并输出操作数*min(x,y) 实质上是算出该序列中有多少逆序对,有归并排序和树状数组两种算法,由于数据之间的差值有点大, ...

  10. The server of Apache (四)——配置防盗链和隐藏版本信息

    一.防盗链 防盗链就是防止别人的网站代码里面盗用我们服务器的图片.文件.视频等相关资源,比如我们的网页的图片有链接,别人把链接复制粘贴到他们的服务器页面里,图片不在他们自己的网站里,每次打开他们的网站 ...