node特征

node是一门后台js技术,也叫nodejs;和它相对的是JavaScript前台js。他们的共同特性是都使用的是ECMAScript语法。

nodejs和JavaScript的区别:

1、nodejs由于是后台js,它不会运行在浏览器上,所以它没有兼容问题;它是运行在谷歌V8引擎(JS引擎)上的。运行环境不同。
2、它们的顶层对象不同,JavaScript是运行在浏览器环境下的,它的顶层对象是window,nodejs的顶层对象是global;所以不能在nodejs中操作window和DOM
3、nodejs是基于commonjs规范来实现的,内部实现了诸如:文件操作,服务器操作,路径模块,url模块等;这些操作在前端JavaScript都不存在。nodejs是后台的语言设计思路,JavaScript是前台的设计思路,这区别很大。

nodejs的特点:

1、nodejs不同于java或php等传统语言,它既是平台又是语言;java或php是语言和服务器(软件)分开的;比如要运行java程序,需要tomcat或apache,nginx等服务器的支持,nodejs就不需要,它自身就是一个平台。
2、nodejs一种异步的、非阻塞的设计,传统的后台语言多数都是同步的。
3、nodejs是一种单线程操作,就决定它不是很健壮(事实上也有多线程fork);也无法有效利用cpu
4、nodejs还是事件驱动机制(不要把事件理解为是click或mouse等事件)
5、nodejs适合io密集操作,不适合cpu密集操作;适合做聊天室,及时通信的应用。

nodejs的使用场景,常见于做中间层。

node中的全局变量

1)在vscode中打开终端的办法:
i.使用快捷键:ctrl + ~
ii.在需要运行的终端上右键,点击在终端中打开(新手推荐)
2)单独的.js文件该怎么运行
i.在终端中输入:node 要运行的.js文件名
ii.!!!注意,目录是否对应
常见的全局变量:
// __dirname和__filename都是返回路径的;返回的都是绝对路径
console.log(__dirname); //当前文件的所在目录,不包括文件名
console.log(__filename); //当前文件的路径,包括文件名
定时器:setInterval,setTimeout

node中的模块

在nodejs中最常用的模块有两类:核心模块和文件模块
核心模块:由nodejs内置,导入的时候不需要任何相对或绝对路径,只需要名字即可,比如:require(‘events’)
文件模块:一个文件(.js)就是模块.一般认为一个模块中应该包含同一类的代码;文件常常是一个.js文件,也就说一个.js文件中的代码应该是处理同一类问题的;导入文件模块需要一个相对路径,比如:require(‘./animal.js’)

模块操作:

导出:module.exports 或 exports
导入:require

忠告:在你没有弄清楚module.exports和exports区别的时候,你就应该使用module.exports

两者的区别:最终导出的是module.exports;exports只是module.exports的一个引用;不能对exports赋值;否则它会改变指向,不再是module.exports的引用。

常用的npm指令

npm是随着node的安装自动被安装的;需要注意的是node的版本和npm的版本是不同的,这是两个东西,不是一回事。
npm有一个镜像市场,类似于咱们手机上的”华为市场“,”安智市场“等。npm市场里面充满了各种各样的类库和安装包,主要用来解决开发中的问题,比如,我们熟悉的jquery,bootstrap,swiper等类库或包在npm里面都有。
以前我们在html中使用script src属性引用这些类库,为什么现在需要在npm中下载使用呢?
原因是因为我们现在的操作是模块化的,没有html文件,都是在js文件之间发生的模块引用和依赖;所以这些类库都已模块的形式存在,发布到了npm镜像市场。

npm指令需要在终端(cmd+R)中输入

查看当前npm镜像:
npm config get registry , 默认是 https://registry.npmjs.org/

设置镜像:
npm config set registry https://registry.cnpmjs.org/

安装cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org

npm init 或 npm init -y //初始化指令,初始化完毕后会得到一个package.json的文件;该文件是关于项目的配置说明文件
注意:package.json的包名字不要有中文,不要和需要安装的类库冲突;否则报错

npm install 模块 [模块 模块] … --save
注释:–save在npm高版本中是可以省略不写的,但是cnpm还是需要写的。
–save表示安装到本地的项目依赖中,也就是说不管程序是上线还是开发阶段,该类库始终需要。
范例:npm install jquery bootstrap --save

–save-dev表示安装到本地的开发依赖中,该类库仅仅在开发阶段使用,项目打包上线后不会包含该类库。–save-dev也可以简写为 -D
范例:npm install less --save-dev

install表示安装的意思,也可以简写为小写 i
范例:npm i less-load -D
全局安装:
-g 表示全局安装(不要再写–save或–save-dev)

全局安装一般用来安装工具性的内容,不用做具体的项目需求,比如我们安装的脚手架,或者cnpm指令等,都属于工具性的内容,与具体的项目无关。

范例:npm i express-generator -g

卸载包:
npm uninstall jquery 或 npm rm jquery;
如果需要卸载所有的,那么可以直接删除node_modules文件夹;如果删除后需要全部重新安装,只需要运行 npm install 命令即可(注意不能删除package.json)

安装指定版本:(默认安装的是最新版)

npm install 包名@版本号
范例:npm install jquery@1.12.4

查看包的所有版本

npm view 包名 versions
范例:npm view jquery versions

查看最新版:

npm view 包名 version
范例:npm view jquery version