0%

JavaScript 简介

前言

JavaScript是目前前端开发中最流行的语言,在学习的过程中会遇到各种JS有关的名词。本文章的主要目的是介绍ECMAScript(or ES)、CommonJSNode.jsVue.jsAngularJS等与JavaScript之间的联系。

ECMAScript

ECMAScriptJavaScript的关系是,前者是后者的规范,后者是前者的一种实现(另外的实现还有JscriptActionScript等)。

JavaScript的创造者Netscape公司,将JavaScript提交给国际标准化组织ECMA,希望这种语言能够成为国际标准,标准委员会最终决定,标准在每年的6月份正式发布一次,作为当年的正式版本。

目前的几乎所有的浏览器(不包括低版本的IE),都已经支持ES5了,而写代码时最好采用ES6语法(毕竟语法糖写起来更舒服,还添加了很多必要的新特性,而且浏览器全面支持ES6是迟早的事)。不用担心浏览器不能识别新语法,Bable就是用来解决这种问题的工具。

Babel是一个广泛使用的ES6转码器,可以将ES6代码转为ES5代码,从而在浏览器环境运行。

1
2
3
4
5
6
7
// 转码前
input.map(item => item + 1);

// 转码后
input.map(function (item) {
return item + 1;
});

Node.js

在介绍CommonJS之前有必要先介绍一下Node.js。首先明确一点,JavaScriptPython一样,是一种脚本语言,或者是解释型语言,和C、C++ 这种需要编译成可执行文件再运行的语言不同,它的运行只需要解释器能够解释执行即可,而不需要编译器。浏览器就包含了解释执行网页中的JavaScript代码的功能。

伴随着互联网和JavaScript语言的快速发展,人们不仅仅局限于拿JS来做前端开发,所以Node.js随之应运而生。Node.js作为一个后端的Javascript运行环境(解释器),这意味着你可以编写系统级或者服务器端的Javascript代码,交给Node.js来解释执行。

Node.js采用了Google Chrome浏览器的V8引擎(C++编写),性能很好,同时还提供了很多系统级的API,如文件操作、网络编程等。浏览器端的Javascript代码在运行时会受到各种安全性的限制,对客户系统的操作有限。相比之下,Node.js则是一个全面的后台运行时,基于Javascript提供了其他语言能够实现的许多功能。

CommonJS

可以说CommonJSNode.js的关系是,前者是后者的规范,后者是前者的一种实现

ECMAScript提供核心语言功能,浏览器端的JavaScript实现包括了ES核心DOM(or Document Object Model)和BOM(or Browser Object Model),所以你在浏览器的JS控制台可以使用document、window、alert...等有关DOMBOM的操作。

CommonJS主要为非浏览器的应用定义一套API(比如Node应用),从而填补了空白。它的终极目标是提供一个类似Python、RubyJava标准库

可以看到在Node环境中没有定义alertdocument,因为Node不关心DOMBOM操作。

1
2
3
4
5
➜ node
> alert('!!!')
ReferenceError: alert is not defined
> document
ReferenceError: document is not defined

但是它可以调用读取文件的函数,读取出了a.txt中的Hello!并打印,这是浏览器做不到也不应该去做的。

1
2
3
4
5
➜ node
> const fs = require('fs');
> const content = fs.readFileSync('./a.txt','utf-8');
> console.log(content);
hello!

Vue.js、AngularJS…

这些没什么好说的,之所以带上JS就是因为它们是用JavaScript语言开发的框架,实际上就是个JS库,用于简化我们前端代码的编写。

至于为什么使用Vue.js这些框架需要安装Node.js,原因也很简单,因为很多工具(比如Babel、webpack)都是用Node开发出来的,这也是你为什么可以用npm安装的原因。

参考