一:npm
npm 是世界上最大的软件注册中心,各大洲的开源开发人员都使用 npm 来共享和借用包,许多组织也使用 npm 来管理私有开发。
npm init //初始化packege.json
npm i xxx //安装
npm un xxx //卸载
find ./ -type d -name 'node_modules' -print -exec rm -rf {} \; //删除node_modules
npm install cnpm -g --registry=https://registry.npm.taobao.org //安装cnpm
二:Node
Node下载地址:https://nodejs.org/zh-cn/
1.说明
1.Node.js简单的说就是运行在服务端的JS,可以脱落浏览器运行JS
2.Node.js使用一个事件驱动、非阻塞式I/O模型,使其轻量又高效,处理高并发事件,实现百万流量同时处理。
3.Node.js的异步操作都是以回调函数的形式进行的。
4.Node.js是commonjs规范的实现。
2.Nodemon
npm i nodemon -g //nodemon可以自动检测文件的修改并重启程序进行调试。
"scripts": {
"dev": "nodemon ./bin/www"
},
三:CommonJS
Node.js应用由模块组成,采用的commonjs模块规范。每一个文件就是一个模块,拥有自己独立的作用域,变量,以及方法等,对其他的模块都不可见。CommonJS规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。require方法用于加载模块。
//CommonJS模块的特点如下:
1.所有代码都运行在模块作用域,不会污染全局作用域.
2.模块可以多次加载,但是第一次加载后就被浏览器缓存了,要再次加载必须清除缓存.
3.模块加载的顺序,按照其在代码中出现的顺序
1.定义模块:module.exports
2.引用模块:require()
3.执行模块:node [文件名]
四:全局模块
定义:无需引入,全局通用
proess.env //环境变量
__filename //当前正在执行的脚本的文件名
__dirname //当前执行脚本所在的目录
五:系统模块
定义:需要require(),但不需要单独下载。
let path = require('path');
let fs = require('fs');
var events = require('events'); //事件对象
var eventEmitter = new events.EventEmitter();
六:自定义模块
1.CommonJS模块化:
module.exports = {
name:'zhangsan',
showname:function(){
console.log('我是函数的返回值');
},
runnum:function (min, max) {
return Math.round(Math.random() * (max - min)) + min;
}
}
const myName = require('./myName.js');
2.ES6模块化:
export default {
myName:"zhangsan"
}
import myName from './index.js'