带你3分钟了解Node.JS
程序员文章站
2022-06-12 13:39:05
...
命令行窗口
(小黑屏)、CMD窗口、终端、shell
使用
开始菜单 --> 运行 --> CMD --> 回车
常用指令
- dir 列出当前目录下的所有文件
- cd 目录名 进入到指定的目录
- md 目录名 创建一个文件夹
- rd 目录名 删除一个文件夹
-
目录
.
表示当前目录..
表示上一级目录 -
环境变量(windows系统中变量)
path
C:\work\jdk\jdk1.7.0_75/bin;
%CATALINA_HOME%/bin;
C:\work\soft\tools\AppServ\Apache24\bin;
C:\work\soft\tools\AppServ\php5;
C:\Users\lilichao\AppData\Local\Programs\Fiddler;
C:\work\environment\Egret\Egret Wing 3\bin;
C:\Users\lilichao\AppData\Roaming\npm;
C:\Program Files\MongoDB\Server\3.2\bin;
C:\Users\lilichao\Desktop\hello
- 当我们在命令行窗口打开一个文件,或调用一个程序时,
系统会首先在当前目录下寻找文件程序,如果找到了则直接打开
如果没有找到则会依次到环境变量path的路径中寻找,直到找到为止
如果没找到则报错- 所以我们可以将一些经常需要访问的程序和文件的路径添加到path中,
这样我们就可以在任意位置来访问这些文件和程序了
Node.JS
- Node.js是一个能够在服务器端运行JavaScript的开放源代码、 跨平台JavaScript运行环境。
- Node采用Google开发的V8引擎运行js代码,使用事件驱动、 非阻塞和异步I/O模型等技术来提高性能,可优化应用程序的传 输量和规模。
- Node大部分基本模块都用JavaScript编写。在Node出现之前, JS通常作为客户端程序设计语言使用,以JS写出的程序常在用 户的浏览器上运行。
- 目前,Node已被IBM、Microsoft、Yahoo!、Walmart、 Groupon、SAP、 LinkedIn、Rakuten、PayPal、Voxer和 GoDaddy等企业采用。
简介
- node是一款对ES标准实现的JS引擎
- 通过node可以使js在服务器中运行
- node就是一款使用js编写的web服务器
- node底层是使用c++的编写的
- node的中js引擎使用的chrome的v8引擎
特点
- 非阻塞、异步的I/O
- 事件和回调函数
- 单线程(主线程单线程,后台I/O线程池)
- 跨平台
Node的用途
Web服务API,比如REST
实时多人游戏
后端的Web服务,例如跨域、服务器端的请求
基于Web的应用
多客户端的通信,如即时通信
安装
模块化
- ES5中没有原生支持模块化,我们只能通过script标签引入js文件来实现模块化
一个js文件就是一个模块
- 在Node中,每一个js文件中的js代码都是独立运行在一个函数中,而不是全局作用域,所以一个模块的中的变量和函数在其他模块中无法访问
- 在node中为了对模块管理,引入了CommonJS规范
模块的暴露
我们可以通过
exports
来向外部暴露变量和方法
- 只需要将需要暴露给外部的变量或方法设置为
exports
的属性即可- 也可以使用
module.exports
暴露exports.x = "我是module.js中的x"; exports.y = "我是y"; exports.fn = function () { }; module.exports = { name:"猪八戒", age:28, sayName:function () { console.log("我是猪八戒"); } };
在Node中,每一个js文件中的js代码都是独立运行在一个函数中,而不是全局作用域,所以一个模块的中的变量和函数在其他模块中无法访问
exports 和 module.exports
- 通过exports只能使用.的方式来向外暴露内部变量
exports.xxx = 值
- 而module.exports既可以通过.的形式,也可以直接赋值
module.exports.xxx = 值 module.exports = {}
模块的引用
在node中,通过
require()
函数来引入外部的模块
require()
可以传递一个文件的路径作为参数,node将会自动根据该路径来引入外部模块这里路径,如果使用相对路径,必须以
.
或..
开头
require("./module");
require("../module");
我们使用
require()
引入外部模块时,使用的就是模块标识,我们可以通过模块标识来找到指定的模块
模块分成两大类
核心模块
- 由node引擎提供的模块
- 核心模块的标识就是,模块的名字
文件模块
- 由用户自己创建的模块
- 文件模块的标识就是文件的路径(绝对路径,相对路径)
相对路径使用
.
或..
开头// 引入文件模块 var md = require("./module"); // 引入核心模块 var fs = require("fs"); console.log(md); console.log(fs);
在node中有一个全局对象 global,它的作用和网页中window类似
- 在全局中创建的变量都会作为global的属性保存
- 在全局中创建的函数都会作为global的方法保存
模块结构
当node在执行模块中的代码时,它会首先在代码的最顶部,添加如下代码
function (exports, require, module, __filename, __dirname) {
其次会在代码的最底部,添加如下代码
}
实际上模块中的代码都是包装在一个函数中执行的,并且在函数执行时,同时传递进了5个实参
exports
- 该对象用来将变量或函数暴露到外部
require
- 函数,用来引入外部的模块
module
- module代表的是当前模块本身
- exports就是module的属性
- 既可以使用 exports 导出,也可以使用module.exports导出
__filename
- g:\BaiduYunDownload\(5)NodeJS\source\01.node\module.js
__dirname
- g:\BaiduYunDownload\(5)NodeJS\source\01.node
包
- CommonJS的包规范允许我们将一组相关 的模块组合到一起,形成一组完整的工具。
- CommonJS的包规范由
包结构
和包描述文件
两个部分组成。
包结构
- 用于组织包中的各种文件
- 包实际上就是一个压缩文件,解压以后还 原为目录。符合规范的目录,应该包含如下文件:
- package.json 描述文件
- bin 可执行二进制文件
- lib js代码
- doc 文档
- test 单元测试
包描述文件
- 包描述文件用于表达非代码相关的信息, 它是一个JSON格式的文件
package.json
, 位于包的根目录下,是包的重要组成部分。