JavaScript:
1. 是一种脚本编程语言,是一种解释型语言而不是编译型语言。
2. 需要运行在浏览器之中,实现一些动态交互(DOM文档型操作,BOM浏览器型操作)。
JavaScript = ECMAScript + DOM + BOM,但Node里只有ECMAScript没有DOM和BOM。
Node是什么:jQuery.js和Angular.js等都是对原本JS的一种封装(作为JS的库或框架),但Node.JS不是对原本JS的封装。NodeJs不是独立的语言,Node是一个JavaScript的运行环境,提供给JS除浏览器外的另外一种运行环境,可以让JS不用在浏览器运行也不用在浏览器解析而是用Node解析,Node实际上是JS的运行平台可以让JS运行在任何地方。
Node.js可以在命令行直接用 node xxx.js执行,不需要像别的把要JS放入html文件里再到浏览器里跑。
Node的特点:1.轻内核,这个平台本身不提供 任何方法,所以使用不了DOM和BOM的提供的对象,如document.getElementById()、alert()。所有的事情 和操作都需要自己动手,没有浏览器 那种封装好的操作直接指挥他去做。
2.事件驱动。 3.单线程。 4.非阻塞IO。
Node提供了多个内置的模块,官方常用的几种模块,一种是文件类操作模块,一种是网络类操作模块,一种是工具类模块,还有第三方模块可以用c++写,所以所有的功能都能实现。
写Node代码一般都是不断的载入别人的包,通过别人的包提供的api实现功能,用require()这个Node定义的全局函数来载入。
NodeJs相关信息:
Node.js官网地址:nodejs.org,在Docs里选择版本Globals里可查看所有Node定义的全局函数。
在命令行用node -v来查看node版本确认是否安装成功。
用visual studio code来阅读Node.js代码。
NodeJs的核心Module模块化和Require引用:
var v = function(array){return '一共有'+array.length+'个';}等于定义了一个v方法,array是传入参数。
用module把某个文件模块化,如module.exports=a;等于对引用自己的文件提供一个变量去接收自己。如module.exports.xxx = aaa;这个aaa可以是变量也可以是方法,引用自己的文件可以用一个变量接收,然后用接收的变量点变量或方法获得引用文件的变量或方法。
引用系统模块require('xxx')是直接引用,引用自定义模块是require('./xxx'),用require引用某个文件,如 var v = require('./utils.js');等于把utils.js文件里对外exports的东西赋值给v,然后直接使用v.xxx或v.xxx()就可以使用utils.js对外提供的变量或者方法了。
NodeJs的事件模块:
事件流程:
//1.引入事件模块
var events = require('events');
//2..创建EventEmitter对象
var myEmitter = new events.EventEmitter();
//3.注册事件
myEmitter.on('someEvent',function(msg){ console.log(msg); });
4.触发事件
myEmitter.emit('someEvent','传递此参数到注册事件的回调函数中,如上面的msg中');
如果想要异步事件使用setImmediate()在注册事件的on里面。
NodeJs语法:
1.箭头函数:等号左边是函数名字,等号右边是参数,箭头右边是函数体(如果返回值只有一个不需要些return和中括号,如果函数体是直接return x那箭头右边就只有一个x。如果返回值有多个则需要 =>{return ......})。