NodeJS基础知识之1

简介

  • Node.js是一个能够在服务器端运行JavaScript代码的跨平台JavaScript运行环境。
  • Node大部分模块都是用JavaScript编写。在Node出现之前,JS通常作为客户端程序设计语言使用,以JS写出的程序常在用户的浏览器上运行。
  • Node.js可以理解成一个已经实现好功能的服务器,它通过命令行的形式将程序员实现好功能的js代码导入服务器中运行进而得到结果。
  • 程序员也可以使用CoffeeScript、TypeScript、Dart语言,以及其他能够编译成JavaScript语言的编程语言编写功能代码,然后交给Node.js去执行。
  • Node处理请求时是单线程的(程序员使用node命令执行代码的时候),但是后台拥有一个I/O线程池。
  • Node是对CommonJS规范的一个实现。

CommonJS规范

  • CommonJS规范的提出,主要是为了弥补当前Js没有模块化标准的缺陷。
  • CommonJS对模块的定义十分简单,只有三个方面:
    模块引用
    模块定义
    模块标识
  • Nodejs对CommonJS规范的实现就是实现了上面这三个方面。

模块化

  • 在node中,程序员所写的每一个js文件就是一个模块。
  • 在Node中,每一个js文件中的js代码都是独立运行在一个函数中而不是全局作用域,所以一个模块的中的变量和函数在其他模块中无法访问。
var a = 10;//js中如果将var去掉,a是全局变量

/*
	在node中有一个全局对象 global,它的作用和网页中window类似
	js中全局变量都是window的属性,局部变量不是。window可以引该变量
		在全局中创建的变量都会作为global的属性保存
		在全局中创建的函数都会作为global的方法保存

	当node在执行模块中的代码时,它会首先在代码的最顶部,添加如下代码
 			function (exports, require, module, __filename, __dirname) {

 	在代码的最底部,添加如下代码
 			}

 	实际上模块中的代码都是包装在一个函数中执行的,并且在函数执行时,同时传递进了5个实参
		 exports
		 	- 该对象用来将变量或函数暴露到外部,只有使用该参数修饰的变量或方法才能被其他模块所引用
		 	- exports 和 module.exports
		          - 通过exports只能使用.的方式来向外暴露内部变量或方法
			         exports.xxx = xxx

		          - 而module.exports既可以通过.的形式,也可以直接赋值
			          module.exports.xxx = xxxx
			          module.exports = {}
			          
		 require
		 	- 函数,用来引入外部的模块

		 module
		 	- module代表的是当前模块本身
		 	- exports就是module的属性
		 	- 既可以使用 exports 导出,也可以使用module.exports导出

		 __filename
 			C:\Users\lilichao\WebstormProjects\class0705\01.node\04.module.js
 			- 当前模块的完整路径

	  	 __dirname
 			C:\Users\lilichao\WebstormProjects\class0705\01.node
 			- 当前模块所在文件夹的完整路径

* */
//console.log(global.a);

/*
	arguments.callee
		- 这个属性保存的是当前执行的函数对象
* */
//console.log(arguments.callee + "");
//console.log(arguments.length);

//console.log(exports);
//console.log(module.exports == exports);

console.log(__dirname);

引入其他模块

  • 在node中,都是通过require()函数来引入外部的模块的,该方法可以传递一个文件的路径作为参数,node将会自动根据该路径来引入外部模块。注意:如果使用相对路径,必须以".“或者”.."开头。
  • 使用require()引入模块以后,该函数会返回一个对象,这个对象代表的是引入的模块,通过该对象可以获取到引入的模块中被exports修饰的方法或者变量。
/*我们使用require()引入外部模块时,使用的就是模块标识,我们可以通过模块标识来找到指定的模块
	- 模块分成两大类
		核心模块
			- 由node引擎提供的模块
			- 核心模块的标识就是,模块的名字
		文件模块
			- 由用户自己创建的模块
			- 文件模块的标识就是文件的路径(绝对路径,相对路径)
				相对路径使用.或..开头

 */

var math = require("./math");//用户自定义的模块
var fs = require("fs");//核心模块

console.log(math.add(123,456));
console.log(fs);
  • 运行方式:在命令行窗口中输入命令" node index.js"即可,"index.js"是js文件的文件名。

猜你喜欢

转载自blog.csdn.net/qq_36828822/article/details/105880200