Node.js特点:
可以用Javascript来搞后端
速度很快
可以读文件

JS分为两块
1.客户端JS,执行在浏览器上
2.服务器端JS,执行在服务器

  • Node.js的包管理工具npm,是全球最大的开源库生态系统
  • Node.js是一个基于Chrome V8引擎

Node.js薪资高,人才少

主流模块规范
AMD 异步模块定义
CMD(Common Module Definition)
Commonjs:采用同步加载文件方式,适用于服务端

NodeJs模块基础

nodeJS中所有的功能都是以模块形式存在的,每一个文件就是一个模块
模块与模块之间相互独立,若在一个模块中使用另一个模块的内容,就要引入模块,这也会导致那个模块的数据暴露

exports.
exports是暴露对象,可以将模块内部的数据暴露到引用出

主模块

一个项目只允许有一个主模块,该项目通常命名为main.js index.js app.js package.json
是整个项目的启动模块,主模块对整个项目的其他模块进行统筹调度

所有用户编写的代码都自动封装在一个函数中
通过
console.log(arguments.callee.toString())
可以看出用户编写的代码都会封装成一个函数function

$ node 01
function (exports, require, module, __filename, __dirname) { // JavaScript Docu
ent
console.log(arguments.callee.toString())
var obj = require('./str.js');
console.log(obj);
obj.show();
}
{ str: 'asc', show: [Function] }
this is a show

同时可以发现该函数有五个参数
exports: 暴露对象,可将模块中的数据暴露给引入的地方
require: 引入模块的函数
module: 模块对象
_filename: 当前模块的文件名
_dirname: 当前模块所在的路径

require函数

作用:在当前模块里加载另外一个模块

引入模块分类:
1.自定义模块
2.第三方模块

require的默认路径不在当前目录
查找模块的默认路径在node_modules文件夹目录中
因此require('./str.js');
中的./不能省略

https://www.npmjs.com
上面包含大量第三方包,也可以在上面上传自己的包

当模块被多次执行时,模块只执行一次,但是返回值赋给每个执行的变量

exports函数

暴露,将模块中需要共享给其他模块的数据暴露到引入处
exports.属性名=值
exports.方法名=函数

exports是module.exports对象的一个引用,不能改指向,只能添加属性和方法

package 包
package.json是package的包描述文件s

如何创建package文件

在命令行中输入npm init
将会逐步引导创建
版本 x.y.z
x:大版本
y:中版本
z:小版本

package name包名称
version版本
description描述
entry point 入口文件(主文件)
dependencies依赖
devDependencies开发依赖(开发的时候依赖,使用的时候不依赖,比如某些打包工具)
scripts
author作者

npm i <包的名称> -g //全局安装

cnpm
是一个淘宝NPM镜像,只能下载,不能上传(只读),下载会更快
安装
npm install -g cnpm --registry=https://registry.npm.taobao.org
使用方法:
cnpm install <包名称>

Node.js作用域

模块中使用var 定义的变量为局部作用域,只能在该模块中使用,要在其他模块中使用就要用exports暴露
或者使用global
global.name=""
即global全局对象

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议