node是一个运行的平台,支持JS语言,可以写后台的服务。
node的特点:基于win8引擎渲染,渲染速度快,效率高,性能好。
基于事件驱动的I/O(输入/输出)操作
单线程的,所以基本是异步的操作
遵循CommaonJS规范,提供模块机制,包管理(通过npm命令安装包(第三方模块)),模块的导入导出,内置模块(http,fs,url,path......)
每一个文件就是一个模块
推荐两本书:node深入浅出 node权威指南
运行node文件:右键 run a.js
命令行运行 node a.js(前提:进入a.js所在目录)
node 进入REPLl环境,相当于浏览器的控制台 ctrl+c退出
模块之间的导出和引入:
Module.exports = { } 一次性全部导出
exports.xxx = xxx 一个一个导出
模块只有导出后,其他模块才能用这个模块中封装的功能
模块的引入:
若想使用其他模块的内容 先通过require引入进来,a相当于a模块导出的对象
let a = require("./a"); //js,json文件后缀可不写
let sum = (...arg)=>{ return eval(arg.join('+'));}let fn = (a,b)=>{ return Math.sqrt(Math.pow(a,2) + Math.pow(b,2));}module.exports = { sum, fn}
/*拿到的是对象*/let a = require('./a');console.log(a.sum(1, 2, 3));console.log(a.fn(3, 4));/*对象解构赋值*/let {sum,fn} = require('./a');console.log(sum(10, 10, 10));console.log(fn(3, 4));
node模块分类:
node内置模块:
http,fs,url,path,queryString......不需要安装 直接使用
直接通过require(‘http’)引入内置模块,不需要安装
项目初始化:
告诉别人项目的相关(例如:名称 版本 入口文件 按照的第三方模块等) npm init 初始化package.js文件
一键生成 npm init -y
安装第三方模块:别人封装好的插件和库 放在npm平台
npm install 包名 安装到本地
npm install jquery 表示安装生产环境(项目上线时)所需要的包 dependencies
npm install less -D 表示安装开发环境所需要的包 devDependencies
使用第三方模块:let $ = require('mime');
从线上弄下的项目,是没有安装的第三方模块,但是package.js里会记录之前安装的模块===>npm install跑环境(安装package.js里所需要的模块)
模块查找机制:(node_modules)
全局下安装目录 npm install less -g
全局下安装的会设计到包版本冲突的问题,所以尽量少安装在全局下
安装在全局下是适合命令操作的,而不是引入操作 例如less
通过命令操作的包,本地找不到会去全局查找
全局下直接找到lessc index.less
安装在本地 需要再通过本地通过命令行配置使用 “build”:"lessc index.less" npm run build
自定义模块
是自己创建的js文件,引入时需要加'./'或者'../'. 不会往上级查找,当前目录找不到则会报错