js------es6--------node.js-----express框架----搭建http服务?
前沿
是由ES(ECMAScript)、DOM(浏览器文档对象)、BOM(浏览器对象模型)组成。
其中Node.Js就只有ES,目前浏览器比较流行的版本就是ES6(ES2015),老浏览器的版本基本上都是ES5。所以alert和document不能在Node运行(因为Node没有dom和bom)。
----------------------------------------------------------------------------------------------------------
1js---弱类型客户端脚本语言
js组成部分-----ecmascript(规定语言的语法/类型/关键字)/ dom(文档对象类型)/ bom(浏览器对象类型)
JavaScript由三部分组成:
ECMAScript(核心)+DOM(文档对象模型)+BOM(浏览器对象模型)
ECMAScript作为核心,规定了语言的组成部分:语法、类型、语句、关键字、保留字、操作符、对象
DOM把整个页面映射为一个多层节点结果,开发人员可借助DOM提供的API,轻松地删除、添加、替换或修改任何节点。
BOM支持可以访问和操作浏览器窗口的浏览器对象模型,开发人员可以控制浏览器显示的页面以外的部分
ecmascript版本更新1-6,目前最新es6,学习下es6关于js的新特性?
2es6---规定js的语法/类型/关键字
ES6既是一个历史名词,也是一个泛指,含义是5.1版以后的JavaScript的下一代标准,涵盖了ES2015、ES2016、ES2017等等,而ES2015则是正式名称,特指该年发布的正式版本的语言标准。本书中提到“ES6”的地方,一般是指ES2015标准,但有时也是泛指“下一代JavaScript语言”。
3node.js---支支持es,Node.js是一个Javascript运行环境(runtime)。对dom及bom不支持,
因此我们的学习路线是
java--------java8-----jvm(jre)------java的框架spring-----用spring做?
js(es+dom+bom)-----es6----node.js(服务器端js的运行环境)-----node的框架express---用express搭http服务
嗯,类似于v8是执行javascript这种高级语言的虚拟机,jvm是执行java的虚拟机,任何的高级语言都是需要特定平台的虚拟机进行执行的,最终由底层机器进行二进制执行,js这门语言也不例外,他的虚拟机是v8,以前js只能做前端的时候,v8这种虚拟机只是封装在浏览器内,但是现在,javascrit这种语言呢,用于做服务端,那么我们就产生了这样一种需求,使得js可以运行于服务端 ,运行在客户端使用的是浏览器,运行在服务端不能再使用浏览器,因此我们说就要产生另外一种技术,使得js再服务器端也可以运行,那么我们直接将js的v8直接拿来用就好了,再客户端v8依赖的是浏览器,再服务器端v8依赖的是node.js。。
那么有了可以在服务器端执行js的工具,我们其实还可以向下哦,就是那基本上呢,所有的服务器端语言,甚至是所有的语言,他都有自己的封装库,想php,有自己的函数库,类库,想java,有自己的类库,亦或是c++都会有着自己的库函数,因此我们明白一点,弱项方便开发,是吧那就需要前辈留给我们一些封装好的库,这样我们开发的时候难度大大降低,因此js也一样,他也有许多的库,他叫库为模块,用这种封装好的模块进行快速开发,想java的库一样,js的 常用的标准库也是安装在node.js中,java也是安装在jdk中,基本上可以说node.js就是开发js服务端的工具,类似于java的jdk,因此我们学,js/es6/nodejs/各种js的框架。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
java运行环境jre,java的虚拟机jvm,用于执行java的字节码,jre=jvm+java api库
javascript运行环境node.js,js的虚拟机v8,用于执行js,v8内置于浏览器中,现在也内置于node.js中 node.js=v8+js的api库
node.js不是一门语言,也不是一种特殊的JavaScript方言 - 它仅仅就是用于运行普通JavaScript代码的东西
- 所有浏览器都有运行网页上JavaScript的JavaScript引擎。Firefox有叫做Spidermonkey的引擎,Safari有JavaScriptCore,Chrome有V8
- node.js就是带有能操作I/O和网络库的V8引擎,因此你能够在浏览器之外使用JavaScript创建shell脚本和后台服务或者运行在硬件上
分析:很容易看出,前端和后端的js
相同点就是,他们的语言基础都是ECMAScript
,只是他们所扩展的东西不同,前端需要操作页面元素,于是扩展了DOM
,也需要操作浏览器,于是就扩展了BOM
。而服务端的js
则也是基于ECMAScript
扩展出了服务端所需要的一些API
,稍微了解后台的童鞋肯定知道,后台语言有操作系统的能力,于是扩展os
,需要有操作文件的能力,于是扩展出file
文件系统、需要操作网络,于是扩展出net
网络系统,需要操作数据,于是要扩展出database
的能力。
这么一对比,相信很多小伙伴对nodejs
更加了解了,原来前端和服务端的js
如此相似,他们的基础是相同的,只是环境不同,导致他们扩展出来的东西不同而已。
本质:
Javascript是一种web前端语言,主要用于web开发中,由浏览器解析执行
Node.js是一个可以快速构建网络服务及应用的平台,是用Javascript语言构建的服务平台,可用于后端建立服务器
区别:
Javascript 主要应用前端 是编程语言 客户端编程语言(需要浏览器的javascript解释器进行解释执行)
node.js 主要应用后端 1个平台 运行环境(一个基于Chrome JavaScript运行时建立的平台,它是对Google V8引擎进行了封装的运行环境)
简单的说node.js就是把浏览器的解释器封装起来作为服务器运行平台,用类似javascript的结构语法进行编程,在node.js上运行。
Node.js适用场景?Node.js不适用的场景?
适用场景:
1.JSON APIL ——构建一个Rest/JSON API服务,node.js可以充分发挥其非堵塞IO模型以及javascript对JSON的功能支持
2.单页面、多Ajax请求应用——前端有大量的异步请求,需要服务器后端有极高的响应速度
3.基于node.js开发Unix命令行工具——node.js可以大量产生子进程,并以流的方式输出
4.流式数据——传统的web应用,通常会将HTTP 请求喝响应看成是原子事件。而node.js会充分利用流式数据这个特点,构建非常酷的应用
不适用场景:
cpu使用率较重、io使用率较轻的应用