带你3分钟了解Node.JS

命令行窗口

(小黑屏)、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引擎

特点

  1. 非阻塞、异步的I/O
  2. 事件和回调函数
  3. 单线程(主线程单线程,后台I/O线程池)
  4. 跨平台

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, 位于包的根目录下,是包的重要组成部分。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章