Node基础原理

环境变量

(windows系统中变量path)
    当我们在一个命令行窗口打开一个文件或程序时,
    系统首先会在当前目录下寻找文件程序,如果找到了则直接打开
    如果没有找到则会依次到环境变量path的路径中查找,直到找到为止
    如果没有找到则会报错 xxx不是内部或外部命令,也不是可运行的程序或批处理文件

下载安装完node之后,在控制台输入node -v 若提示以上红字信息,则需要配置环境变量

环境变量的配置过程:

计算器右键属性 》高级系统设置 》 环境变量 》将安装node的目录位置放置在 变量为path 的值中

注意用;分开

Node基础原理_第1张图片

Node基础原理_第2张图片 


进程和线程

进程

  •     ·进程负责为程序的运行提供必备的环境
  •     ·进程就相当与工厂中的中间

线程

  •     线程是计算机中的最小单位,线程负责执行进程中的程序
  •     线程就想当与工厂中的工人

node.js是一个能够运行在服务器端运行的代码,跨平台的javascript运行环境
node采用Google开发的V8引擎执行js代码,使用事件驱动、非组塞和异步I/O模型等技术来提高性能,可优化应用程序的传输量和规模

 

Node历史

Node基础原理_第3张图片

  1. node版本中偶数为开发稳定版(生产版本)4 6 8 10 12 。。。
  2. node版本中奇数为开发测试版(开发版本)5 7 9 11 13 。。。

Node精髓

  1. 在node中,一个js文件就是一个模块
  2. 在node中,每一个js文件中的js代码都是独立运行在一个函数中而不是全局作用域,所以一个模块中的变量和函数在其他模块中无法访问

  通过module.exports  导出 成员变量 ,通过 require ()  加载模块,进行访问

NodeJs是CommonJS规范的实现,webpack也是以CommonJs的形式来书写

通过require(" 模块名称 "); 进行加载

通过exports导出模块文件 

require()有两个作用

  1. 加载文件模块并执行里面的代码
  2. 拿到被加载文件模块导出的接口对象

exports

  1. 多个接口对象导出:module.exports.属性 = 值
  2. 单个接口对象导出:module.exports = 值

exports === module.exports  , 所以可以省略module

但是最终返回的是module.exports

启动node(在当前文件下执行)

node app.js(也就是文件名)

验证node中,js代码是否独立运行在一个函数中

验证方式1

Node基础原理_第4张图片Node基础原理_第5张图片

函数中 声明的变量 var 是 局部变量,而没有var则是隐士全局变量,即为全局变量 所以在var的情况下 报错 str is not defined

而在没有var的情况下正常输出了 node

验证方式2

js在浏览器端可以通过window对象找到全局属性,但是js在node中并没有window对象,而有global全局对象

Node基础原理_第6张图片Node基础原理_第7张图片

验证方式3

通过arguments.callee 用于引用该函数的函数体内当前正在执行的函数,看到真正的函数内部

Node基础原理_第8张图片

当node在执行模块中的代码时,它会首先在代码的最顶部,添加如下代码
    function (exports,require,module,__filename,__dirname){
在代码的最底部,添加如下代码
    }
实际上模块中的代码都是包装在一个函数中执行的,并且在函数执行时,同时传进了5个实参

  • exports:该对象用来将变量或函数暴露到外部
  • require:用来引入外部的模块
  • module:代表的是当前模块本身,exports就是module的属性
  • __filename:当前模块的完整路径
  • __dirname:当前模块所在文件夹的完整路径

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

node在使用模块名字来引入模块时,会首先在当前目录的node_modules中查找是否含有该模块,如果有,则直接使用,没有则向上一级目录的node_modules中查找,直到找到为止
直到找到磁盘的根目录,如果依然没有,则报错


包和NPM

包(package)

CommonJS包规范由包结构和包描述文件两个部分组成
包结构:用于组织包中各个文件
包描述文件(package.json):描述包的相关信息,以供外部读取分析  


NPM(Node Package Manager)包管理工具

CommonJS包规范是理论,NPM是其中一种实现、
对于Node而言,npm帮助其完成了第三方模块的发布、安装和依赖等。
借助npm,node与第三方模块之间形成了一个很好的生态系统

npm常用命令:

  • npm init   初始化 package.json 文件
  • npm version 查看版本(npm,node,v8引擎等)

  • npm search 包名 : 搜索包
  • npm install / i 包名: 下载包
  • npm remove / r 包名 :删除包
  • npm install 包名 --save : 安装包并添加到依赖中
  • npm install : 下载当前项目所依赖的包
  • npm install 包名 -g :全局安装的包,一般都是一些工具
  • npm config set registry 地址 : 设置npm下载地址

你可能感兴趣的:(node)