介绍

  • nodejs 是基于 chrome V8 引擎的 javascript 运行环境( runtime )
  • npm nodejs的包管理工具

    与传统后端的关系

    node_middleware.png

    为什么选择node

    nodejs 是服务器端语言与传统后端语言 PHP、 JAVA、ASP.NET有什么差异
    多加了一层通讯,肯定会有一定的性能损耗。但分层带来的损失,一定能在其他方面的收益弥补回来,而且合理的分层能让职责清晰、方便协作,大大提升开发效率。也可以通过优化通讯方式和协议,尽可能把损耗降到最低。

    特性

  • nodejs 运行速度快,性能非常好

    v8 是用c++实现,编译速度媲美二进制语言,能够让计算机快速编译识别

  • 异步 I/O

    • I 指代 input 输入
      - O 指代 output 输出
  • 同步代码执行,会按照文档流的执行顺序,自上而下去执行代码
    异步代码执行,可以同时去执行某些操作

::: warning 举例: 如何提升工作效率? 比如清洁工同时扫地与拖地 :::

  • 单线程

默认是单线程,代码按照文档流自上而下执行,以通过process来开启多进程

  • 非阻塞

nodejs提供了一套同步、一套异步的API, 建议我们使用异步编程,事件与回调
单线程容易阻塞服务器,通过异步操作(process)开启多线程,充分利用服务器的性能

  1. //同步 1,2,3
  2. console.log(1);
  3. console.log(2);
  4. console.log(3);
  5. //异步 1,3,2
  6. console.log(1);
  7. setTimeout(()=>{
  8. console.log(2);
  9. },0)
  10. 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 包的下载路径

node_path.png

自定义路径

npm config set prefix <指定npm 全局安装包的存放路径>
> npm config set cache <指定npm 下包的缓存路径>
如果目录不存在,nodejs会自动创建

全局包的引用

添加系统变量 NODE_PATH,来获取全局包的存放路径
nodepath.png

淘宝镜像

由于npm服务器在美国,国内由于“墙”的原因,国内访问缓慢
这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。
cnpm具备除了 publish及unpublish npm的所有功能
安装:
> npm install cnpm -g
> npm config set registry https://registry.npm.taobao.org

yarn 包管理器

快速、可靠、安全的依赖管理工具。
npm install -g yarn

middleware 中间件

进入一个路由页面或者一个接口之前,执行某一些特殊的操作,通过中间件来完成。
中间件特点 形参具备三个参数 request response next
错误处理中间件特点 形参具备四个参数 request response error next

内置中间件

fs path url http scoket

第三方中间件

  1. // axios jquery body-parser redux react
  2. // es5
  3. const jquery = require("jquery")
  4. // es6
  5. import jquery from "jquery"

全局挂载的中间件

  1. // 结合 express
  2. var app = require("express")();
  3. app.use(funciton(req,res,next){
  4. //do something
  5. })

错误处理中间件

  1. app.get("/login",(req,res,error,next)=>{
  2. do something...
  3. },(req,res)=>{
  4. })

路由中间件

  1. app.get("/login",(req,res,next)=>{
  2. do something...
  3. },(req,res)=>{
  4. })

包管理器

npm 是 nodejs 的包管理器,可以用来下载第三方包(模块)

常用命令

  1. npm adduser 登陆
  2. npm clear cache 清除缓存
  3. npm clean cache 清除缓存
  4. npm config set <key> <value>
  5. npm config get <key>
  6. npm -h
  7. npm --help 查看帮助
  8. package代表包的名称
  9. -g 全局安装
  10. -d 当前路径安装
  11. --save 向包管理文件添加 生产环境依赖
  12. --save-dev 向包管理文件添加 开发环境依赖
  13. npm install <package> -g 安装
  14. npm uninstall <package> -g 卸载
  15. npm publish 发布
  16. npm unpublish 取消发布
  17. npm owner 一个包的作者
  18. npm whoami 用户名
  19. npm -v 查看版本号
  20. npm run <> 执行包管理文件的某条命令
  21. npm start 启动默认命令 简写, npm run start
  22. npm init 生成一个包管理文件
  23. npm i 等同于 npm install

包管理文件

package.json 是一个项目的包管理文件(非常重要)
完整的包管理文件 package.json

  1. {
  2. //项目名称
  3. "name": "nodejs",
  4. //项目版本号
  5. "version": "1.0.0",
  6. //项目描述
  7. "description": "my first nodejs project",
  8. //入口文件
  9. "main": "index.js",
  10. //快捷启动命令
  11. "scripts": {
  12. "test": "echo \"Error: no test specified\" && exit 1"
  13. },
  14. //项目的关键字,用于seo优化
  15. "keywords": [
  16. "nodejs",
  17. "express",
  18. "mysql"
  19. ],
  20. //作者
  21. "author": "heinan",
  22. //版权信息
  23. "license": "ISC",
  24. "dependencies":{}
  25. "devDependencies":{}
  26. }

dependencies 生产环境依赖模块

npm install —save

devDependencies 开发环境依赖模块

npm install —save-dev

整理 CMDER 的使用和安装

安装我们的CMDER一些要点

1、安装我们的CMDER可以去官网查询一些安装
2、安装成功后我们要放到我们的指定位置盘符D://
3、随后需要在我们的环境变量中的PATH位置的系统环境变量 放入我们盘符的路径
4、需要我们CMDER右键显示出需要以管理员身份运行我们的CMD放入Cmder.exe /REGISTER ALL
5、就可以右击运行我们COMER

NPM

npm是一个node的包管理工具

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 标准输入

  1. process.stdin.on('data', (input) => {
  2. console.log(input.toString().trim(), '这里时输入的代码')
  3. })

- process.stdout 标准输出

  1. process.stdout.write('输入你的内容');
  2. process.stdin.on('data', (input) => {
  3. console.log(input.toString().trim(), '接受stdout输入的内容')
  4. })

- process.stderr 标准输出错误

  1. 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 发布脚手架

  1. - 添加bin字段 并给脚手架的起名字 --vue-cli|
  2. - 添加脚本解释程序 #:/usv/bin/env/node
  3. - npm link 进行映射
  4. - npm login
  5. - 检查管理文件及包名

1、创建 包管理文件 Init
2、程序解释器 bin 文件
3、在json文件 创建bin目录 “copy-cli”:’./bin.index.js”
4、#!/usr/bin/env node 需要node环境进行使用
5、映射 npm link