题外话
为什么HTML5是跨平台的?
很简单,因为HTML5想要运行,依赖于支持HTML5浏览器。只要不同平台上有支持HTML5的浏览器,那么HTML5就可以在不同平台上实现。比如说,移动端、PC端、Linux、Unix等系统都有支持运行HTML5的浏览器,所以说HTML5是跨平台的。
前言
学习nodeJS可以了解前后台交互过程。
nodejs是JavaScript的运行环境,允许js在服务器上运行。这样一来,nodejs就把js变成了服务器端语言。
而在没有nodejs之前,js不能脱离浏览器平台等运行;但nodejs可以让js脱离浏览器单独运行。
服务器端语言和客户端语言的区别在哪里呢?— 安全性。
客户端语言不能读取本地硬盘上的东西(为了信息安全);但服务器语言可以,比如可以读取本地数据库。
JavaScript的定义是什么?
JavaScript是具有高安全性的解释型脚本语言。而这个高安全性指的就是js不能读取本地硬盘。
所以js本身不是服务端语言,但nodejs扩展了js的运行范围,让js能运行在服务器端,让js脱离浏览器运行,让js能读取本地硬盘数据,从而操作数据库。
NodeJS 实现静态服务器
1.1、nodeJS的定义
Node.js是一个基于Chrome V8引擎(编译成原生机器码)的,让JavaScript运行在服务器端的运行环境,它让JavaScript的触角伸到了服务器端。
1.2、nodeJS特性
node是单线程的,擅长高并发处理,适合高IO的操作,擅长I/O密集型处理。
1.2.1、单线程
NodeJS不会为每个连接客户创造一个新的线程,而是仅用一个线程。也就是说,Node.js是单线程。
多线程:
单线程:
1.2.2、非阻塞式IO
NodeJS在访问高IO操作后不会等待其完成,而是立即去执行其他代码,操作完成后会使用回调函数返回。
能高效的利用当前线程,不造成硬件浪费。
1.2.3、事件驱动
NodeJS通过事件来驱动整个程序的进行。
由于是单线程,所以把高IO的操作移动到事件队列中等待完成,完成后通过回调函数的方式返回给线程来进行处理。
把这个循环处理的过程称之为:事件环。
1.3、nodeJS运行环境—REPL交互式解释器
Shell一般会被叫做:Node.js REPL(交互式解释器) 。
我们可以在终端中输入命令,并接收系统的响应。Node Shell是快速运行测试Node的方式之一。可以进行简单的内容测试。
使用:
进入DOS命令行,输入node,执行后就能开启node解释器,帮助我们翻译JavaScript。就是说,这一直接写js代码,然后回车自动执行得出结果。
我突然发现这个功能跟谷歌的Chrome浏览器的“检查”有点像。
所以,轻量级的简单的操作,都可以直接在node解释器里面写。
这种方式,一般做轻量级测试时会用。
1.4、nodeJS—魔术变量
注意:__filename 双底杠
2.1、nodeJS模块
node中以模块来划分功能,一个js是一个模块,多个模块相互引用形成一个模块化式项目。
Node应用由模块组成,采用 CommonJS 模块规范。
2.2、nodeJS Comment.js模块书写
js文件因为作用域的问题,变量和函数只能在当前文件中进行使用。如果想在当前模块外引用,必须导出使用。
Comment.js模块导出常用两种方式:exports/module.exports。
exports返回的是模块函数,module.exports返回的是模块本身。目的是让这些内容进行暴露,然后在使用的时候用require来引入。这就跟ES6中的有区别了,ES6用export导出,然后import导入,视情况看是否用解构。这两种规范要弄清。
通常情况下都是用module.exports导出。
2.3、nodeJS模块—优点
减少代码重复,提高利用率;划分功能,方便管理;方便使用第三方模块。
NodeJS优缺点:
模块化,复用性高,但是文件多;但模块化编程思想是未来的一种发展趋势,而且就目前看来呈不可逆的态势。