1.node是单线程的
但是可以做一个分布式,在idea/webstorm中,我们可以引入node的插件,
然后idea会默认配置node服务器的可执行程序的位置,然后我们可以通过该插件直接在idea中运行js文件。
2.在es5之后,前端有了模块化开发的思想
一个js文件就是一个模块,通过 require()函数来引入外部模块我们使用require引入
一个模块之后,对于我们自己定义的模块,当前目录必须加上 ./ 不然运行会抛出异常。
假如在module2.js的内容如下
var a=1;var b=2;
module1.js的内容如下
var md=require('./module2.js');
如果执行console.log(md.a);会显示未定义,这是因为node中,每一个文件中的js代码都是独立运行
通过该方式引入另外一个模块,引入的模块相当于一个自调用函数,所以他找不到a变量。即闭包
但是我们可以通过exports来导出该变量
let a=1;
exports.a=a;
模块分为两大类
1:核心模块,由node引擎提供的模块,npm中的模块
2:文件模块,由用户自己创建的
3.在node中,我们没有window这个全局变量,但是有global
4.导出module.exports与exports的区别
在我们导出一个对象时
let a=1;
exports.a=a;
module.exports={
name:'猪猪侠',
age:5,
getName:function() {
console.log(this.name);
}
}
在另外一个对象用引用调用,发现a为undefined ,把其中的module.exports换成exports
发现导入对象未定义,a变量定义
原因: 栈内存和堆内存的概念
exports指向的是module.exports对象,在其他模块引入的对象为module.exports对象
所以exports={}的方式导出的对象在堆内存中并不是同一个对象
exports的方式导出,只能以exports.的方式
5.npm命令
npm -v 查看npm版本
npm init 帮助我们创建package.json文件
npm install/i 包名 下载包
npm remove/r 包名 删除包
npm install 包名 --save 安装包并添加依赖搭配package.json
npm install 下载当前package.json中所有的依赖中的包
6.搜索包
npm下载的命令都在node_modules中,通过require引用包的时候,
会在当前目录中寻找node_modules的文件夹下的包,如果不存在则去
上一级的node_modules包中寻找,一直到磁盘的根目录。