介绍
- nodejs 是基于 chrome V8 引擎的 javascript 运行环境( runtime )
-
与传统后端的关系
为什么选择node
nodejs 是服务器端语言与传统后端语言 PHP、 JAVA、ASP.NET有什么差异
多加了一层通讯,肯定会有一定的性能损耗。但分层带来的损失,一定能在其他方面的收益弥补回来,而且合理的分层能让职责清晰、方便协作,大大提升开发效率。也可以通过优化通讯方式和协议,尽可能把损耗降到最低。特性
nodejs 运行速度快,性能非常好
v8 是用c++实现,编译速度媲美二进制语言,能够让计算机快速编译识别
异步 I/O
- I 指代 input 输入
- O 指代 output 输出
- I 指代 input 输入
同步代码执行,会按照文档流的执行顺序,自上而下去执行代码
异步代码执行,可以同时去执行某些操作
::: warning 举例: 如何提升工作效率? 比如清洁工同时扫地与拖地 :::
- 单线程
默认是单线程,代码按照文档流自上而下执行,以通过process来开启多进程
- 非阻塞
nodejs提供了一套同步、一套异步的API, 建议我们使用异步编程,事件与回调
单线程容易阻塞服务器,通过异步操作(process)开启多线程,充分利用服务器的性能
//同步 1,2,3
console.log(1);
console.log(2);
console.log(3);
//异步 1,3,2
console.log(1);
setTimeout(()=>{
console.log(2);
},0)
console.log(3);
安装
验证
通过 cmd命令窗口中输入下面命令,来检查是否安装成功:
C:\Users\Nan> node -v
C:\Users\Nan> npm -v
为什么要配置环境变量?
- 因为我们想访问一个包或者一个文件,只能在它的存放路径去访问
如果想在其他路径访问,会报错,提示找不到文件或者命令
C:\Users\Nan>gulp -v
> ‘gulp’ 不是内部或外部命令,也不是可运行的程序或批处理文件。
ps: 修改好环境变量,需要重开cmd.exe命令提示符环境变量
添加环境变量 path:
nodejs 的安装路径
- npm 包的下载路径
自定义路径
npm config set prefix <指定npm 全局安装包的存放路径>
> npm config set cache <指定npm 下包的缓存路径>
如果目录不存在,nodejs会自动创建全局包的引用
淘宝镜像
由于npm服务器在美国,国内由于“墙”的原因,国内访问缓慢
这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。
cnpm具备除了 publish及unpublish npm的所有功能
安装:
> npm install cnpm -g
> npm config set registry https://registry.npm.taobao.orgyarn 包管理器
快速、可靠、安全的依赖管理工具。
npm install -g yarnmiddleware 中间件
进入一个路由页面或者一个接口之前,执行某一些特殊的操作,通过中间件来完成。
中间件特点 形参具备三个参数 request response next
错误处理中间件特点 形参具备四个参数 request response error next内置中间件
第三方中间件
// axios jquery body-parser redux react
// es5
const jquery = require("jquery")
// es6
import jquery from "jquery"
全局挂载的中间件
// 结合 express
var app = require("express")();
app.use(funciton(req,res,next){
//do something
})
错误处理中间件
app.get("/login",(req,res,error,next)=>{
do something...
},(req,res)=>{
})
路由中间件
app.get("/login",(req,res,next)=>{
do something...
},(req,res)=>{
})
包管理器
npm 是 nodejs 的包管理器,可以用来下载第三方包(模块)
常用命令
npm adduser 登陆
npm clear cache 清除缓存
npm clean cache 清除缓存
npm config set <key> <value>
npm config get <key>
npm -h
npm --help 查看帮助
package代表包的名称
-g 全局安装
-d 当前路径安装
--save 向包管理文件添加 生产环境依赖
--save-dev 向包管理文件添加 开发环境依赖
npm install <package> -g 安装
npm uninstall <package> -g 卸载
npm publish 发布
npm unpublish 取消发布
npm owner 一个包的作者
npm whoami 用户名
npm -v 查看版本号
npm run <> 执行包管理文件的某条命令
npm start 启动默认命令 简写, npm run start
npm init 生成一个包管理文件
npm i 等同于 npm install
包管理文件
package.json 是一个项目的包管理文件(非常重要)
完整的包管理文件 package.json
{
//项目名称
"name": "nodejs",
//项目版本号
"version": "1.0.0",
//项目描述
"description": "my first nodejs project",
//入口文件
"main": "index.js",
//快捷启动命令
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
//项目的关键字,用于seo优化
"keywords": [
"nodejs",
"express",
"mysql"
],
//作者
"author": "heinan",
//版权信息
"license": "ISC",
"dependencies":{}
"devDependencies":{}
}
dependencies 生产环境依赖模块
devDependencies 开发环境依赖模块
npm install —save-dev
整理 CMDER 的使用和安装
安装我们的CMDER一些要点
1、安装我们的CMDER可以去官网查询一些安装
2、安装成功后我们要放到我们的指定位置盘符D://
3、随后需要在我们的环境变量中的PATH位置的系统环境变量 放入我们盘符的路径
4、需要我们CMDER右键显示出需要以管理员身份运行我们的CMD放入Cmder.exe /REGISTER ALL
5、就可以右击运行我们COMER
NPM
NPM的官方地址
npmjs.org
https://www.npmjs.com/
NPM默认地址
https://registry.npmjs.org
如果需要在npm里进行发包的话,如果是淘宝镜像源,需要切换官方的镜像源
npm config set registry https://registry.npmjs.org
在控制命令版中 输入 npm login ——出现你的npm账号和密码 如果没有去官网注册一个 随后出现一个你的邮箱 488937163@qq.com 随后即可 可以使——-npm whoami 查看您的作者名
NPM常用命令
获取配置
npm config get
设置配置
npm config set
获取全局包的安装路径
npm root -g
获取当前路径的node_modules目录
npm root
通过用户密码登录 https://www.npmjs.org;
adduser
process 进程及npm 映射
进程
- process.stdout.write(val.trim()) —— 封装一个console.log的方法
- process.stderr.write(val.trim()) —— 封装一个打印Error的方法
- process.stderr.write(val.trim() + “\n”) —— Nodejs输出换行符
- process.stdin 标准输入
process.stdin.on('data', (input) => {
console.log(input.toString().trim(), '这里时输入的代码')
})
- process.stdout 标准输出
process.stdout.write('输入你的内容');
process.stdin.on('data', (input) => {
console.log(input.toString().trim(), '接受stdout输入的内容')
})
- process.stderr 标准输出错误
process.stderr.write('data', '输出标准的错误方法')
- process.version 版本号
- process.versions
- v8
- node
- zlib
- process.arch 获取系统类型 (x64 | x86|32位)
- platfrom 获取系统平台 (win32-windows|os - 苹果系统)
- process.cwd() 获取命令行执行所在的路径
- process.CpuUsage Cpu使用情况
- process.memoryUsage 内存使用情况
- process.exit 退出进程
- env 获取环境变量
- title 管理员
- argv 获取命令行参数
- execPath node.js 程序的路径
inquirer | commander 发布脚手架
- 添加bin字段 并给脚手架的起名字 --vue-cli|
- 添加脚本解释程序 #:/usv/bin/env/node
- npm link 进行映射
- npm login
- 检查管理文件及包名
1、创建 包管理文件 Init
2、程序解释器 bin 文件
3、在json文件 创建bin目录 “copy-cli”:’./bin.index.js”
4、#!/usr/bin/env node 需要node环境进行使用
5、映射 npm link