023-随笔-nodejs初探


nodejs初探

2021年8月11日

17:22

从cmd理解文件调用

  • 命令

dir打开

cd改变目录

md、rd创建、删除文件

  • 目录

. /当前目录(可以省略)

../上级目录

  • path环境变量

变量中有许多路径,命令(1)先在当前目录寻找对象,如果没有(2)再在path中的路径依次寻找,如果没有再报错。【作用域链】

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//``

var a = 100

 

function fn(){

 

var a = 200;

 

function fn2(){

 

var a = 300;

 

console.log(a);

}

 

fn2();

 

}

 

fn();

//

将要经常使用的程序或者文件加入环境变量。

2.进程和线程

进程

  • 负责为程序运行提供必备的环境。
  • 进程相当于工厂车间

线程

  • 最小计算单位,负责执行程序
  • 相当于工厂里面的工人

单线程

  • js是单线程

多线程

node.js

服务器端JavaScript运行环境。node.js扩大了js的适用范围,从前端到系统。

I/O操作阻塞线程问题。

用node执行

文件夹下node hello.js

创建一个js文件

/创建日期/

console.log(“HELLO”);

模块化

引入模块(一个js文件)

必须按照先后顺序(缺乏模块系统)

CommonJS具有模块功能

  • 一个js文件就是一个模块。

定义一个模块就是创建一个模块。

  • 每个js文件的js代码都是独立运行在函数中不是以全局变量。

别的模块无法访问。模块间是封闭的,需要暴露属性。

  • exports来暴露变量和方法。

exports.x = “晚上上一个文件的x”;

exports.fn = function(){}

模块引入

在一个js文件引入其他外部模块使用:

require(“传递文件的路径”);

路径以.或者..开头

”./文件.js“

使用require();引入后,该函数会返回一个对象

var md = require("./文件.JS");

对象【md】中包含了引入模块中export过的变量和函数。

例子:引入math模块进行运算

/文件1math.js/

exports.add=function(a,b){return a+b;}

exports.mul = function(a,b){return a*b;}

引用模块是,路径就是模块的标识。模块分为核心模块和文件模块。

核心模块由node.js提供,标识就是名字。

var fs= require(“fs”);

文件模块使用局对或者相对路径,相对路径需要./或许../

var math =require("./math.js");

math.add(1,2);

全局变量

global全局变量对象,所有的全局变量都是他的属性。

var a=2;局部变量

a=1;全局变量

console.log(global.a);

console.log(arguments);在函数里面运行

console.log(arguments.callee + “”);保存了单钱函数执行的对象

exports

  • 该对象用来将变量或者函数暴露到外部

requie

  • 函数,用来引入外部模块

module

  • 代表当前模块本身
  • exports就是module的属性
  • exports==module.exports

__filename

  • 当前模块的完整路径

__dirname

  • 当前模块所在文件夹的路径

module.exports和exports

module.exports:改对象(堆 )

exports:改变量(栈)

浅拷贝和深拷贝

新建对象只有一个内存地址