nodejs

目录

目录

Node.js

一、Node.js基础

1. 认识Node.js

01 nodejs的特性

02 浏览器环境vs node环境

2. 模块、包、commonJS

3. Npm&Yarn

01 npm的使用

02 package.json和package-lock.json

02 全局安装 nrm

03 yarn使用

5. 内置模块

01 http模块:作为服务器

(1)server对象

(2)server的事件

(3)server的request事件的参数req

(4)server的request事件的参数res

02 http模块:作为客户端

(1)http.request(options,callback)

(2)http.get(options,callback)

(3)http.ClientRequest

(4)http.ClientReponse

03 url模块

04 querystring模块,已被弃用,但仍然可用。

05 http模块补充

(1)接口:jsonp

(2) 跨域:CORS

(3) 模拟get

(4) 模拟post:服务器提交(攻击)

(5) 爬虫

05 event模块

06 fs文件操作模块

07 stream流模块

09 crypto

6. 路由

01 基础

02 获取参数

03 静态资源处理

二、Express

1.安装   npm install express --save

2.路由

(1)路由路径

(2)回调函数

4.中间件

(1)应用级中间件

(2)路由级中间件

(3)错误处理中间件

(4)内置的中间件

(5)第三方中间件

5. 获取请求参数

6.利用 Express 托管静态文件

7.服务端渲染(模板引擎)和服务端渲染

(1)服务端渲染模板

(2)客户端渲染

(3)node中间层

(4)服务端渲染(ssr)

(5)服务端渲染的实现方式

8.生成器

三、MongoDB

nodejs连接操作数据库

四、接口规范与业务分层

五、登录鉴权

1. Cookie&Session

2. JSON Web Token (JWT)

六、文件上传管理

七、APIDOC - API 文档生成工具

八、Koa2

九、Socket编程


Node.js

一、Node.js基础

1. 认识Node.js

Node.js是一个javascript运行环境。它让javascript可以开发后端程序,实现几乎其他后端语言实现的所有功能,可以与PHP、Java、Python、.NET、Ruby等后端语言平起平坐。

Nodejs是基于V8引擎,V8是Google发布的开源JavaScript引擎,本身就是用于Chrome浏览器的js解释部分,但是Ryan Dahl 这哥们,鬼才般的,把这个V8搬到了服务器上,用于做服务器的软件。

01 nodejs的特性

  • Nodejs语法完全是js语法,只要你懂js基础就可以学会Nodejs后端开发

  • NodeJs超强的高并发能力,实现高性能服务器

  • 开发周期短、开发成本低、学习成本低

02 浏览器环境vs node环境

Node.js 可以解析JS代码(没有浏览器安全级别的限制)提供很多系统级别的API,如:

  • 文件的读写 (File System)

    const fs = require('fs')
    
    fs.readFile('./ajax.png', 'utf-8', (err, content) => {
      console.log(content)
    })
  • 进程的管理 (Process)

    function main(argv) {
      console.log(argv)
    }
    
    main(process.argv.slice(2))
    
  • 网络通信 (HTTP/HTTPS)

    const http = require("http")
    
    http.createServer((req,res) => {
      res.writeHead(200, {
        "content-type": "text/plain"
      })
      res.write("hello nodejs")
      res.end()
    }).listen(3000)
    

2. 模块、包、commonJS

模块化简介

在node中,一个js文件就是一个模块。

每一个js文件中的js代码都是独立运行在一个函数中,而不是在全局作用域,所以一个模块中的变量和函数在其他模块中是不能访问的。

如果要让外部可以访问模块里面的方法或者属性,就必须在模块里面通过 exports 或者 module.exports 暴露属性或者方法。使用require引入。

exports:对象,该对象用来将变量和函数暴露到外部
require:函数,用来引入外部的模块
module:模块,代表我们当前的模块

通过exports只能用.的方式向外暴露自身变量和函数
module.exports既可以通过.的方式,也可以通过直接赋值的方式
    module.exports.xxx = xxx
    module.exports = {}
注意点:exports就是module的一个属性,即module.exports==exports 为true,但是exports不能通过对象的方式向外暴露属性

// m1.js
const name = 'gp19'
const sayName = () => {
  console.log(name)
}
// 接口暴露方法一:使用exports.xxx一个一个向外暴露
exports.name = name
exports.sayName = sayName
// 接口暴露方法二:使用module.exports把要暴露的内容放到一个对象中,批量向外暴露
module.exports = {
  name:name
  sayName: sayName
}
// 错误方法,不能exports一个对象
exports = {
  name:name
  sayName: sayName
}

// 其他文件通过require引入即可
// m2.js
 const m1 = require('./m1')
m1.say()

如果需要使用es6的模块化规范,需要在package.json中添加"type"="module"

3. Npm&Yarn

01 npm的使用

npm   init        //构建项目说明,生成 package.json文件
npm install 包名 –g  //或者uninstall,update,表示全局安装,卸载或者更新
npm install 包名 --save-dev //uninstall,update 表示全局安装,卸载或者更新 
//而参数--save 的作用是在项目下的package.json文件记录安装过的依赖包名称,当复制项目到另外的电脑上,只需运行命令: npm i 就能自动安装项目用到的依赖包
npm list -g //(不加-g,列举当前目录下的安装包)
npm info 包名 //(详细信息) npm info 包名 version(获取最新版本)
npm install md5@1//(安装指定版本)
npm outdated  //( 检查包是否已经过时)

02 package.json和package-lock.json

package.json 是在运行 “ npm init ”时生成的,主要记录项目依赖,有以下结构

  • name:项目名,也就是在使用npm init 初始化时取的名字,但是如果使用的是npm init -y 快速初始化的话,那这里的名字就是默认存放这个文件的文件名;
  • version:版本号;
  • private:希不希望授权别人以任何形式使用私有包或未发布的;
  • scripts-serve:是vue的项目启动简写配置;
  • scripts-build:是vue的打包操作简写配置;
  • dependencies:指定了项目运行时所依赖的模块;
  • devDependencies:指定项目开发时所需要的模块,也就是在项目开发时才用得上,一旦项目打包上线了,就将移除这里的第三方模块;

package-lock.json是在运行“npm install”时生成的一个文件,用于记录当前状态下项目中实际安装的各个package的版本号、模块下载地址、及这个模块又依赖了哪些依赖。

区别:

为什么有了package.json,还需要package-lock.json文件呢?

当项目中已有 package-lock.json 文件,在安装项目依赖时,将以该文件为主进行解析安装指定版本依赖包,而不是使用 package.json 来解析和安装模块。因为 package 只是指定的版本不够具体,而package-lock 为每个模块及其每个依赖项指定了版本,位置和完整性哈希,所以它每次创建的安装都是相同的。无论你使用什么设备,或者将来安装它都无关紧要,每次都应该给你相同的结果。

dependencies字段的说明:

"dependencies": { "md5": "^2.1.0"  } ^ 表示 如果 直接npm install 将会安md5的2.*.* 的最新版本
"dependencies": { "md5": "~2.1.0"  } ~ 表示 如果 直接npm install 将会安装md5 2.1.* 的最新版本
"dependencies": {    "md5": "*"  }  * 表示 如果 直接npm install 将会安装 md5的最新版本

02 全局安装 nrm

NRM (npm registry manager)是npm的镜像源管理工具,有时候国外资源太慢,使用这个就可以快速地在 npm 源间切换。

手动切换方法

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值