Node.js是什么
Node.js是一个能在服务器端运行的javaScript的开放源代码,跨平台的javaScript运行环境。
Node.js在项目中的作用
小项目可以直接用作web服务器 。
前后端分离项目则用于页面的渲染工作,架构方式如下图:
1.模块化定义
在Node中一个.js文件就是个模块,类似于java的类,可以定义变量,常量以及函数,构造方法。
CommonJS对模块化的定义:
- 模块引用
- 模块定义
- 模块标识
通过require()来引用模块 , 例如:
var hello = require("./Hello.js");每个模块中的函数以及变量都是独立的,被其他模块引用时,该模块无法直接访问被引用模块的函数以及方法,只能通过被引用模块通过 .exports 修饰才能进行外部的访问,例如:
exports.x = "我是模块中的X"; exports.fn = function(a , b){ console.log('我是函数fn'); return a + b ; }- 模块的类型:
1. 核心模块
- 由node引擎提供的模块
- 核心模块的表示就是,模块的名字
引入核心模块的时候只需要直接写名字就行了:
var fs = require("fs");
2. 文件模块
- 由用户自己创建的模块
引入文件模块则需要加上模块的路径,相对路径要以 . 或者 .. 开头:
var hello = require("./Hello.js")
注:核心模块类似于Java本身提供的类,例如:java.lang , java.io , java.util。
文件模块类似于Java用户自己写的类。
- 模块的属性:
所有模块的内容都默认封装在一个全局函数里面,该函数具有5个参数,其默认结构如下:
function ( exports , require , module , __filename , __dirname ) {
//这里是模块的具体类的具体内容
var a;
var setA = function (a){
this.a = a;
}
} - 五大参数的作用:
exports
- 该对象用于将模块的变量或函数暴露到外部
//单个定义
module.exports.name = "孙悟空";
module.exports.sayName = function(){
console.log("我是孙悟空");
}
//多个定义
module.exports = {
name : "孙悟空";
sayName : function(){
console.log("我是孙悟空");
}
}
注:exports 和 module.exports
exports只能通过 . 的方式向外暴露
exports.hello = "hello";而module.exports 既可以 . 也可以直接赋值
module.exports.hello = "hello";
module.exports = {};require
- 函数,用于引用外部的模块
module
- 代表当前模块的本身
- 注:exports就是module的属性
- 既可以使用exports导出,也可以使用 module.exports 导出到外部
__filename
- 返回当前模块文件的绝对路径
__dianame
- 返回当前模块所在文件夹的绝对路径
课后杂记:
- 全局对象global
在node中有一个全局对象 gkobal,作用类似于网页中的window
在全局中创建的变量都会作为global的属性保存。
在全局中创建的函数都会作为global的方法保存。
//查看全局里的函数以及变量
console.log(global)- 类(伪)数组对象arguments
封装了函数所有实参的对象。
//查看函数的所有实参,直接在函数里输出
console.log(arguments)
//查看当前正在执行的函数对象
console.log(arguments.callee)
//查看当前正在执行函数对象的结构
console.log(arguments.callee + "") //加 +"" 等于你默认调用了toString方法