Node.js初学小记(上)

什么是Node.js?

Node.js是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O模型,让JavaScript 运行在服务端的开发平台。(Node.js处理时是单线程,但是在后台拥有一个I/O线程池)

Node.js的用途

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

COMMONJS规范

ECMAScript标准的缺陷
  • 没有模块化系统(es6有模块化)
  • 标准库较少
  • 没有标准接口
  • 缺乏管理系统
COMMONJS规范对于模块的定义
  • 模块引用

    在node中,通过require()函数来引入外部的模块,require()可以传递一个文件的路径作为参数,node将会自动根据该路径引入外部模块。使用require()引入模块后,该函数会返回一个对象,这个对象代表的是引入的模块,需要定义变量来进行读取。
    这里的路径,如果使用的是相对路径,必须以...开头,如果不写点的话,是在node_modules中寻找相应的包。
    在这里插入图片描述

  • 模块定义

    在node中,一个js文件就是一个模块
    在node中,每一个js文件中的js代码都是独立运行在一个函数中,而不是全局作用域,所以一个模块中的变量和函数在其他模块中无法访问。
    我们可以通过exports函数来向外部暴露变量或方法,只需要将需要暴露给外部的变量或方法设置为exports的属性即可。

exports.x=5;
exports.fn=function(){};
  • 模块标识

    使用require()引入外部模块时,使用的就是模块标识,我们可以通过模块标识来找到指定的模块
    模块分为两大类:
    核心模块:由node引擎提供的模块;核心模块的标识就是模块的名字
    eg:var fs = require(“fs”);
    文件模块:由用户自己创建的模块;文件模块的标识就是文件的路径(绝对路径、相对路径)
    在这里插入图片描述

全局变量&局部变量的验证

在node中有一个全局变量global,它的作用和网页中windows类似,在全局中创建的变量都会作为global的属性保存,在全局中创建的函数都会作为global的方法保存。
在这里插入图片描述
在这里插入图片描述
var a=111 是局部变量,是在函数里执行的。可以通过arguments来进行验证。
arguments是个类似数组但不是数组的对象。
arguments.callee:保存当前执行的函数对象
在这里插入图片描述

在这里插入图片描述
node在执行模块中的代码时,它会首先在代码的最顶部,添加如下代码:
function (exports, require, module, __filename, __dirname) {
在代码的最底部添加如下代码:
}
实际上模块中的代码都是包装在一个函数中执行的,并且在函数执行时,同时传递进了5个实参:
exports:该对象用来将变量或函数暴露到外部
require:函数,用来引入外部的模块
module:代表的是module的属性,exports是module的属性,即exports=module.exports
__filename:当前模块的完整路径
__dirname:当前模块所在文件夹的完整路径当前

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

module.exports与exports的区别

module.exports = {
    name:"杨洋",
    age:30,
    sayName:function(){
        console.log("我是杨洋^_^");
    }
};

在这里插入图片描述

exports = {
    name:"杨洋",
    age:30,
    sayName:function(){
        console.log("我是杨洋^_^");
    }
};

在这里插入图片描述
举例描述:
在这里插入图片描述

  • 通过exports只能使用.的方式来向外暴露内部变量
  • module.exports既可以通过.的形式,也可以直接赋值

package(包)

CommonJS的包规范

CommonJS的包规范由包结构和包描述文件两个部分组成

  • 包结构:用于组织包中的各种文件
  • 包描述文件:描述包的相关信息,以供外部读取分析

包实际上就是一个压缩文件,解压以后还原为目录。符合规范的目录,应该包含如下文件:

  • package.json 描述文件
  • bin 可执行二进制文件
  • lib js代码
  • doc 文档
  • test 单元测试

包描述文件用于表达非代码相关的信息,它是一个JSON格式的文件——package.json,位于包的根目录下,是包的重要组成部分。package.json中不能出现注释。

NPM(Node Package Manager)

对于Node而言,NPM帮助其完成了第三方模块的发布、安装和依赖等。借助NPM,Node与第三方模块之间形成了很好的一个生态系统。
NPM命令:

  • npm version //查看所有模块版本

  • npm search 包名 //搜索模块包

  • npm install 包名 //在当前目录安装包,i是install的简写

  • npm install 包名 --save //安装包并添加到依赖中(常用!,新版本不需要save即可添加依赖)
    在这里插入图片描述

  • npm install //下载当前项目所依赖的包

  • npm install 包名 -g //全局安装包(全局安装的包一般都是一些工具)

  • npm init //在当前目录下创建package.json

  • npm remove 包名 //删除包,r是remove的简写

注:学习参考来源b站【尚硅谷】最经典Node.js全套完整版教程(超哥yyds!!!!)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值