node.js

目录

一、简介

(一)CommonJS规范

(二)Node的用途

二、模块化

三、包与npm

(一)包简介

1、包 package

2、包结构

3、包描述文件package.json

(二)npm

1、简介

2、常用命令

3、搜索包

四、文件

(一)Buffer缓冲区

1、简介

2、创建buffer

3、alloc与allocUnsafe

(二)文件系统(File System)

1、简介

2、同步&异步

3、文件的写入

4、文件读取


一、简介

Node.js是一个能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境。

单线程

由于ECMAScript标准存在没有模块系统的缺陷,导致代码耦合度高,复用率低,而CommonJS的模块功能可以帮助我们解决该问题。

(一)CommonJS规范

  • CommonJS规范的提出,主要是为了弥补当前JavaScript没有标准的缺陷。
  • CommonJS规范为JS指定了一个美好的愿景,希望JS能够在任何地方运行。
  • CommonJS对模块的定义十分简单:-模块引用   -模块定义   -模块标识

(二)Node的用途

  • Web服务API,比如REST
  • 实时多人游戏
  • 后端的Web服务,例如跨域、服务器端的请求
  • 基于Web的应用
  • 多客户端的通信,如即时通信

二、模块化

在Node中,一个js文件就是一个模块,我们可以通过require()函数来引入外部的模块

/**
 *  在Node中,每一个js文件中的js代码都是独立运行在一个函数中,而不是全局作用域,
 *    所以一个模块中的变量和函数在其他函数中无法访问
 * */
// 1.js
var x = 0;
var y = 0;
// 2.js
var module = require('./1');
console.log(module.x);    // not defind,因为x在1.js中被函数包住了,无法通过require返回的对象直接获取x的值


/**
 * 
 * 想要2.js获取到x需要向外部暴露x:
 */
//1.js
exports.x = "我是1.js中的x"
//2.js
var md = require("./1");
console.log(md.x)
/**
 *  在Node中有一个全局对象global,它的作用和网页中window类似
 *  在全局中创建的变量都会作为global的属性保存
 *  在全局中创建的函数都会作为global的方法保存
 *
 *  当Node在执行模块中的代码时,它首先会将所有代码包在一个函数内:
 *    function (exports, require, module, __filename, __dirname)
 *    从函数的参数可以看出,实现元素暴露与引用的exports和require都是在这个函数中声明的
 * */

// console.log(global);

console.log(arguments.callee + "")    //arguments.callee保存的时当前执行的函数对象

如果定义一个a:“var a = 1”,a实际是被包在函数内的,因此a实际上是不在全局作用域的,全局对象global的“global.a”方法也就无法获取a的实际值;想要将a写到全局作用域需要去掉var,直接“a = 1”,这样global才可以获取到a的值。

对于默认添加的function函数:

exports 该对象用来将变量或函数暴露到外部
require 函数,用来引入外部模块
module

代表的是当前模块本身

(exports就是module的属性:module.exports = exports)

__filename 当前模块的完整路径
__dirname 当前模块所在文件夹的完整路径

module.exports与exports的区别:

exports相当于module对象的一个属性,因此在平常使用时二者是无差别的,但是如果想要暴露多条数据,可以使用&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值