目錄
提高了程式碼的可維護性可以實作按需載入" >#提高了程式碼的複用性提高了程式碼的可維護性可以實作按需載入
" >注意點
./ " >(一文帶你深入了解Node.js(圖文詳解))路徑問題./
一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) http内置模块" >一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) http内置模块
(一文帶你深入了解Node.js(圖文詳解)) 初始化" >(一文帶你深入了解Node.js(圖文詳解)) 初始化
(一文帶你深入了解Node.js(圖文詳解)) web服务器" >(一文帶你深入了解Node.js(圖文詳解)) web服务器
监听nodemon" >监听nodemon
4.4.一文帶你深入了解Node.js(圖文詳解) 简单挂载
4.4.一文帶你深入了解Node.js(圖文詳解) 模块化路由
4.5.一文帶你深入了解Node.js(圖文詳解) 基本使用" >4.5.一文帶你深入了解Node.js(圖文詳解) 基本使用
4.5.一文帶你深入了解Node.js(圖文詳解) 中间件分类" >4.5.一文帶你深入了解Node.js(圖文詳解) 中间件分类
(一文帶你深入了解Node.js(圖文詳解))应用" >(一文帶你深入了解Node.js(圖文詳解))应用
(一文帶你深入了解Node.js(圖文詳解))路由" >(一文帶你深入了解Node.js(圖文詳解))路由
(一文帶你深入了解Node.js(圖文詳解))错误" >(一文帶你深入了解Node.js(圖文詳解))错误
(4)Express 内置" >(4)Express 内置
(5)第三方" >(5)第三方
4.7.一文帶你深入了解Node.js(圖文詳解) GET接口" >4.7.一文帶你深入了解Node.js(圖文詳解) GET接口
4.7.一文帶你深入了解Node.js(圖文詳解) POST接口" >4.7.一文帶你深入了解Node.js(圖文詳解) POST接口
4.7.一文帶你深入了解Node.js(圖文詳解) PUT接口" >4.7.一文帶你深入了解Node.js(圖文詳解) PUT接口
4.7.4 DELETE接口
4.7.5 区别
5.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 原理
5.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 响应头" >5.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 响应头
5.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 分类" >5.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 分类
(一文帶你深入了解Node.js(圖文詳解))简单请求" >(一文帶你深入了解Node.js(圖文詳解))简单请求
(一文帶你深入了解Node.js(圖文詳解))预检请求" >(一文帶你深入了解Node.js(圖文詳解))预检请求
6.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 查询
6.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 插入" >6.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 插入
6.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 更新" >6.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 更新
6.一文帶你深入了解Node.js(圖文詳解).4 删除" >6.一文帶你深入了解Node.js(圖文詳解).4 删除
6.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 初始化
6.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 查询" >6.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 查询
6.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 插入" >6.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 插入
6.一文帶你深入了解Node.js(圖文詳解).4 更新" >6.一文帶你深入了解Node.js(圖文詳解).4 更新
6.一文帶你深入了解Node.js(圖文詳解).5 删除" >6.一文帶你深入了解Node.js(圖文詳解).5 删除
(一文帶你深入了解Node.js(圖文詳解)) 一般删除
(一文帶你深入了解Node.js(圖文詳解)) 标记删除" >(一文帶你深入了解Node.js(圖文詳解)) 标记删除
7.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 基于服务端渲染的传统 Web 开发模式
網域獨立過期時限" >自動發送網域獨立過期時限
首頁 web前端 js教程 一文帶你深入了解Node.js(圖文詳解)

一文帶你深入了解Node.js(圖文詳解)

Jan 12, 2023 pm 08:28 PM
nodejs

本篇文章透過超多程式碼和圖解來帶大家深入解析Node.js,主要內容包括模組化處理、套件的基本應用、Express、跨域、操作Mysql資料庫等,希望對大家有幫助!

一文帶你深入了解Node.js(圖文詳解)

一、Node.js簡介一文帶你深入了解Node.js(圖文詳解)>一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解)什麼是Node.js一文帶你深入了解Node.js(圖文詳解)>

Node.js是一個呼叫內建#ApI並且基於Chrome V8引擎的js運行環境,之前自己在本地總結了一些零散的只知識點,今天整合一下發出來。

官網位址: https://nodejs.org/zh-cn/

一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) Node.js可以做什麼一文帶你深入了解Node.js(圖文詳解)>

①是基於Express 框架(http://www.expressjs.com.cn/),可以快速建立Web 應用。 【相關教學推薦:nodejs影片教學程式設計教學

#②基於 Electron 框架(https://electronjs.org/) ,可以建立跨平台的桌面應用程式

③基於restify框架(http://restify.com/),可以快速建立API 介面項目

④讀寫和操作資料庫、建立實用的命令列工具輔助前端開發、etc…

#一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) Node.js的安裝一文帶你深入了解Node.js(圖文詳解)>

下載連結:https://nodejs.org/en/

一文帶你深入了解Node.js(圖文詳解)

  • #LTS:長期穩定版
  • Current:嚐鮮版

看版本號:node –v

一文帶你深入了解Node.js(圖文詳解)

一文帶你深入了解Node.js(圖文詳解)>

一文帶你深入了解Node.js(圖文詳解)

學習路線:JavaScript 基礎語法Node.js 內建API 模組(fs、path、http等) 第三方API 模組(express、mysql 等)

一文帶你深入了解Node.js(圖文詳解).4 Node.js的使用

指令:node js檔名一文帶你深入了解Node.js(圖文詳解)>終端快速鍵一文帶你深入了解Node.js(圖文詳解)>①使用↑ 鍵,可以快速定位到上一次執行的指令

一文帶你深入了解Node.js(圖文詳解)②使用tab 鍵,能夠快速補全路徑

③使用esc 鍵,能夠快速清空目前已輸入的命令④輸入cls 指令,可以清空終端機二、模組化處理

一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 什麼是模組化

  • # 定義
  • :把複雜問題簡化,分成個小問題。程式設計領域中的
  • 模組化
,就是遵守固定的規則,把一個大檔案拆成獨立並互相依賴的多個小模組一文帶你深入了解Node.js(圖文詳解)>

把程式碼進行模組化分割的好處

#提高了程式碼的複用性提高了程式碼的可維護性可以實作按需載入

#一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 內建模組

  • :由Node.js官方提供,如fs、http、path
  • #一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) fs檔案系統模組
  • (一文帶你深入了解Node.js(圖文詳解))基本用法
  • // 引用内部模块
    const fs = require(&#一文帶你深入了解Node.js(圖文詳解)9;fs&#一文帶你深入了解Node.js(圖文詳解)9;);
    
    // 文件读取
    fs.readFile(&#一文帶你深入了解Node.js(圖文詳解)9;../files/test-fs.txt&#一文帶你深入了解Node.js(圖文詳解)9;, &#一文帶你深入了解Node.js(圖文詳解)9;utf-8&#一文帶你深入了解Node.js(圖文詳解)9;, (err, results) => {
        if (err) return console.log(err.message);// 错误信息err null
        console.log(results);
    })
    
    // 文件写入
    fs.writeFile(&#一文帶你深入了解Node.js(圖文詳解)9;../files/test-fs.txt&#一文帶你深入了解Node.js(圖文詳解)9;, &#一文帶你深入了解Node.js(圖文詳解)9;Node.js&#一文帶你深入了解Node.js(圖文詳解)9;, &#一文帶你深入了解Node.js(圖文詳解)9;utf-8&#一文帶你深入了解Node.js(圖文詳解)9;, (err) => {
        if (err) return console.log(err.message);
        console.log(&#一文帶你深入了解Node.js(圖文詳解)9;写入文件成功!&#一文帶你深入了解Node.js(圖文詳解)9;);
    })
    登入後複製
注意點

一文帶你深入了解Node.js(圖文詳解)#readFile

只能讀取已經存在的文件
  • writeFile寫入內容已經有文件,則建立同名文件,再寫入文件readFile需要在
  • writeFile
  • 後面讀取,不然出錯

(一文帶你深入了解Node.js(圖文詳解))防止動態拼接一文帶你深入了解Node.js(圖文詳解)

    node
  • 指令會自動將目前路徑和js腳本檔路徑拼接,而不管.\day總複習這個路徑##我們可以使用絕對路徑
  • 改善

(一文帶你深入了解Node.js(圖文詳解))路徑問題./

表示目前目錄

../ 表示父級目錄../..表示祖父目錄

動態拼接,首部不能出現###./ . ./###,否則###拼接失敗### /…/###################一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) path內建模組######## ####定義###:拼接###絕對路徑######
  • path.join()
  • path.basename()
  • path.extname()
const fs = require(&#一文帶你深入了解Node.js(圖文詳解)9;fs&#一文帶你深入了解Node.js(圖文詳解)9;);

const path = require(&#一文帶你深入了解Node.js(圖文詳解)9;path&#一文帶你深入了解Node.js(圖文詳解)9;);

const fpath = path.join(__dirname, &#一文帶你深入了解Node.js(圖文詳解)9;/../files/test-fs.txt&#一文帶你深入了解Node.js(圖文詳解)9;);

fs.readFile(fpath, &#一文帶你深入了解Node.js(圖文詳解)9;utf-8&#一文帶你深入了解Node.js(圖文詳解)9;, (err, results) => {
    console.log(__dirname);
    console.log(path.basename(fpath, &#一文帶你深入了解Node.js(圖文詳解)9;.txt&#一文帶你深入了解Node.js(圖文詳解)9;));
    console.log(path.extname(fpath));

    if (err) return console.log(err.message);
    console.log(results);
})
// test-fs
// .txt
// Node.js
登入後複製

一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) http内置模块

定义Node.js提供创建web服务器

一文帶你深入了解Node.js(圖文詳解)

(一文帶你深入了解Node.js(圖文詳解)) 初始化
// 导入http模块
const http = require(&#一文帶你深入了解Node.js(圖文詳解)9;http&#一文帶你深入了解Node.js(圖文詳解)9;);

//创建web服务器实例
const server = http.createServer();

//绑定request事件,监听客户端请求
server.on(&#一文帶你深入了解Node.js(圖文詳解)9;request&#一文帶你深入了解Node.js(圖文詳解)9;, (req, res) => {
    let str = `路径 ${req.url} 方法 ${req.method}`;
    console.log(str);
    // 向客户端发送中文前,设置响应头
    res.setHeader(&#一文帶你深入了解Node.js(圖文詳解)9;Content-Type&#一文帶你深入了解Node.js(圖文詳解)9;, &#一文帶你深入了解Node.js(圖文詳解)9;text/html;charset=utf-8&#一文帶你深入了解Node.js(圖文詳解)9;);
    res.end(str);
})


//启动服务器
server.listen(80, () => {
    console.log(&#一文帶你深入了解Node.js(圖文詳解)9;http://一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)7.0.0.一文帶你深入了解Node.js(圖文詳解)&#一文帶你深入了解Node.js(圖文詳解)9;);
})
登入後複製
(一文帶你深入了解Node.js(圖文詳解)) web服务器

一文帶你深入了解Node.js(圖文詳解)

  • 根据浏览器访问的url地址不同,返回相应的绝对路径
const fs = require(&#一文帶你深入了解Node.js(圖文詳解)9;fs&#一文帶你深入了解Node.js(圖文詳解)9;);
const http = require(&#一文帶你深入了解Node.js(圖文詳解)9;http&#一文帶你深入了解Node.js(圖文詳解)9;);
const path = require(&#一文帶你深入了解Node.js(圖文詳解)9;path&#一文帶你深入了解Node.js(圖文詳解)9;);
const server = http.createServer();

let fpath = &#一文帶你深入了解Node.js(圖文詳解)9;&#一文帶你深入了解Node.js(圖文詳解)9;;
server.on(&#一文帶你深入了解Node.js(圖文詳解)9;request&#一文帶你深入了解Node.js(圖文詳解)9;, (req, res) => {
    if (req.url === &#一文帶你深入了解Node.js(圖文詳解)9;/&#一文帶你深入了解Node.js(圖文詳解)9;) {
        fpath = path.join(__dirname + &#一文帶你深入了解Node.js(圖文詳解)9;/../files/clock/index.html&#一文帶你深入了解Node.js(圖文詳解)9;);
        console.log(__dirname);
        console.log(fpath);
    }
    else {
        fpath = path.join(__dirname + &#一文帶你深入了解Node.js(圖文詳解)9;/../files/clock&#一文帶你深入了解Node.js(圖文詳解)9; + req.url);
    }
    fs.readFile(fpath, &#一文帶你深入了解Node.js(圖文詳解)9;utf-8&#一文帶你深入了解Node.js(圖文詳解)9;, (err, results) => {
        if (err) res.end(&#一文帶你深入了解Node.js(圖文詳解)9;404 not find&#一文帶你深入了解Node.js(圖文詳解)9;);
        res.end(results);
    })
})

server.listen(80, () => {
    console.log(&#一文帶你深入了解Node.js(圖文詳解)9;http://一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)7.0.0.一文帶你深入了解Node.js(圖文詳解)&#一文帶你深入了解Node.js(圖文詳解)9;);
})
登入後複製
一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 自定义模块

定义:用户自定义的js模块

//引入本地文件
const custom = require(&#一文帶你深入了解Node.js(圖文詳解)9;./0一文帶你深入了解Node.js(圖文詳解)-node.js的使用&#一文帶你深入了解Node.js(圖文詳解)9;);
登入後複製

一文帶你深入了解Node.js(圖文詳解)

注意:自定义模块开头必须有./ …/

一文帶你深入了解Node.js(圖文詳解).4 外部模块

定义:由第三方提供,使用前需要下载

//下载外部导入
const moment = require(&#一文帶你深入了解Node.js(圖文詳解)9;moment&#一文帶你深入了解Node.js(圖文詳解)9;);
登入後複製

一文帶你深入了解Node.js(圖文詳解)

监听nodemon

npm i nodemon -g
登入後複製

代替node使用nodedmon每次修改内容不需要重启服务器,自动监听

一文帶你深入了解Node.js(圖文詳解).5 模块化处理

模块作用域定义:和函数一致,当前模块定义的方法、变量,只能在当前模块访问,防止变量污染

一文帶你深入了解Node.js(圖文詳解)

暴露:通过module.exports或者exports暴露出去,使用 require() 方法导入模块时,导入的结果,永远以module.exports 指向的对象为准

一文帶你深入了解Node.js(圖文詳解).6 加载机制

定义一次加载缓存,从缓存加载 内置模块加载优先级MAX

三、包的基本应用

:概念像node.js的第三方模块,包是基于内置模块封装出来的,提供了更高级、更方便的 API,极大的提高了开发效率

npm: 包管理工具

一文帶你深入了解Node.js(圖文詳解)

一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 使用流程
  • npm安装包
  • js导入包
  • 根据开发文档使用包
// npm i moment
const moment = require(&#一文帶你深入了解Node.js(圖文詳解)9;moment&#一文帶你深入了解Node.js(圖文詳解)9;);
const date = moment().format(&#一文帶你深入了解Node.js(圖文詳解)9;YYYY-MM-DD HH:mm:ss&#一文帶你深入了解Node.js(圖文詳解)9;);
console.log(date);//一文帶你深入了解Node.js(圖文詳解)0一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)-09-一文帶你深入了解Node.js(圖文詳解)0 一文帶你深入了解Node.js(圖文詳解)0:4一文帶你深入了解Node.js(圖文詳解):一文帶你深入了解Node.js(圖文詳解)4
登入後複製
一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 版本问题

包的版本号是以“点分十进制”形式进行定义的,总共有三位数字,例如 一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解)4.0
其中每一位数字所代表的的含义如下:

  • 第一文帶你深入了解Node.js(圖文詳解)位数字:大版本

  • 第一文帶你深入了解Node.js(圖文詳解)位数字:功能版本

  • 第一文帶你深入了解Node.js(圖文詳解)位数字:Bug修复版本

    版本号提升的规则:只要前面的版本号增长了,则后面的版本号归零。

npm i comment@一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解)
登入後複製
一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 参数问题

一文帶你深入了解Node.js(圖文詳解)

  • node_modules 文件夹用来存放所有已安装到项目中的包。require() 导入第三方包时,就是从这个目录中查找并加载包。
  • package-lock.json 配置文件用来记录 node_modules 目录下的每一个包的下载信息,例如包的名字、版本号、下载地址等。
  • package.json项目的名称、版本号、描述等、用到了哪些包、开发期间使用的包、部署使用的包
    • devDependencies :开发依赖
    • dependencies :核心依赖
  • 注意:程序员不要手动修改 node_modules 或 package-lock.json 文件中的任何代码,npm 包管理工具会自动维护它们,今后在项目开发中,一定要把 node_modules 文件夹,添加到 .gitignore 忽略文件中
一文帶你深入了解Node.js(圖文詳解).4 npm命令
//安装包 
npm i moment
//安装全局包
npm i 包名 -g
//安装包到开发阶段到devDependencies
npm i 包名 -D
//安装所有依赖包 
npm install
//卸载包 
npm uninstall moment
//查看已经安装的局部包
npm ls
//查看全局安装的包
npm ls -g
登入後複製

查看包命令:https://blog.csdn.net/qq_4一文帶你深入了解Node.js(圖文詳解)664096/article/details/一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)797一文帶你深入了解Node.js(圖文詳解)60

一文帶你深入了解Node.js(圖文詳解).5 下载镜像

一文帶你深入了解Node.js(圖文詳解)

//查看当前npm镜像
npm config get registry
//nrm镜像工具,安装为全局镜像
nrm ls
//切换镜像
nrm use taobao
登入後複製

一文帶你深入了解Node.js(圖文詳解)

一文帶你深入了解Node.js(圖文詳解).6 开发自己的包

一个规范的包,它的组成结构,必须符合以下 一文帶你深入了解Node.js(圖文詳解) 点要求:

  • 包必须以单独的目录而存在
  • 包的顶级目录下要必须包含 package.json 这个包管理配置文件
  • package.json 中必须包含 name,version,main 这三个属性,分别代表包的名字、版本号、包的入口

一文帶你深入了解Node.js(圖文詳解)

发布包到npm

  • 镜像切换到npm上
  • npm login登录
  • 发布包 npm publish
  • 删除包 npm unpublish 包名 --force

资源

  • https://www.npmjs.com/ 网站上搜索自己所需要的包
  • https://registry.npmjs.org/ 服务器上下载自己需要的包
四、Express4.一文帶你深入了解Node.js(圖文詳解) 简介

Express:基于Node.js http进一步封装,更加高级的Web开发框架

对于前端程序员来说,最常见的两种服务器,分别是:

  • Web 网站服务器:专门对外提供 Web 网页资源的服务器
  • API 接口服务器:专门对外提供 API 接口的服务器
4.一文帶你深入了解Node.js(圖文詳解) 基本使用
//导入包
const express = require(&#一文帶你深入了解Node.js(圖文詳解)9;express&#一文帶你深入了解Node.js(圖文詳解)9;);
//创建服务器
const app = express();

app.get(&#一文帶你深入了解Node.js(圖文詳解)9;/user&#一文帶你深入了解Node.js(圖文詳解)9;, (req, res) => {
    res.send({ 男: &#一文帶你深入了解Node.js(圖文詳解)9;一文帶你深入了解Node.js(圖文詳解)8&#一文帶你深入了解Node.js(圖文詳解)9;, age: 一文帶你深入了解Node.js(圖文詳解)8 });
})

app.post(&#一文帶你深入了解Node.js(圖文詳解)9;/user&#一文帶你深入了解Node.js(圖文詳解)9;, (req, res) => {
    res.send(&#一文帶你深入了解Node.js(圖文詳解)9;post请求&#一文帶你深入了解Node.js(圖文詳解)9;);
})

app.get(&#一文帶你深入了解Node.js(圖文詳解)9;/&#一文帶你深入了解Node.js(圖文詳解)9;, (req, res) => {
    //req.query  ?name=zs&age=一文帶你深入了解Node.js(圖文詳解)8  这种数据
    //http://一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)7.0.0.一文帶你深入了解Node.js(圖文詳解)?name=zs&age=一文帶你深入了解Node.js(圖文詳解)8
    console.log(req.query);
})
app.post(&#一文帶你深入了解Node.js(圖文詳解)9;/:id&#一文帶你深入了解Node.js(圖文詳解)9;, (req, res) => {
    //动态匹配参数
    console.log(req.params);
})

//启动服务器
app.listen(80, () => {
    console.log(&#一文帶你深入了解Node.js(圖文詳解)9;http://一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)7.0.0.一文帶你深入了解Node.js(圖文詳解)&#一文帶你深入了解Node.js(圖文詳解)9;);
})
登入後複製
4.一文帶你深入了解Node.js(圖文詳解) 托管静态资源

定义通过路径暴露文件,省去文件路径的描写

const express = require(&#一文帶你深入了解Node.js(圖文詳解)9;express&#一文帶你深入了解Node.js(圖文詳解)9;);

const app = express();

//托管静态资源,不需要访问
app.use(&#一文帶你深入了解Node.js(圖文詳解)9;/public&#一文帶你深入了解Node.js(圖文詳解)9;, express.static(&#一文帶你深入了解Node.js(圖文詳解)9;../files/clock&#一文帶你深入了解Node.js(圖文詳解)9;));

app.listen(80, () => {
    console.log(&#一文帶你深入了解Node.js(圖文詳解)9;http://一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)7.0.0.一文帶你深入了解Node.js(圖文詳解)&#一文帶你深入了解Node.js(圖文詳解)9;);
})
登入後複製

推荐VScode插件:postcode

Express 的中文官网: http://www.expressjs.com.cn/

4.4 路由

一文帶你深入了解Node.js(圖文詳解)

定义:客户端与服务器映射关系

一文帶你深入了解Node.js(圖文詳解)

4.4.一文帶你深入了解Node.js(圖文詳解) 简单挂载

//导入包
const express = require(&#一文帶你深入了解Node.js(圖文詳解)9;express&#一文帶你深入了解Node.js(圖文詳解)9;);
//创建服务器
const app = express();

app.get(&#一文帶你深入了解Node.js(圖文詳解)9;/user&#一文帶你深入了解Node.js(圖文詳解)9;, (req, res) => {
    res.send({ 男: &#一文帶你深入了解Node.js(圖文詳解)9;一文帶你深入了解Node.js(圖文詳解)8&#一文帶你深入了解Node.js(圖文詳解)9;, age: 一文帶你深入了解Node.js(圖文詳解)8 });
})

app.post(&#一文帶你深入了解Node.js(圖文詳解)9;/user&#一文帶你深入了解Node.js(圖文詳解)9;, (req, res) => {
    res.send(&#一文帶你深入了解Node.js(圖文詳解)9;post请求&#一文帶你深入了解Node.js(圖文詳解)9;);
})
//启动服务器
app.listen(80, () => {
    console.log(&#一文帶你深入了解Node.js(圖文詳解)9;http://一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)7.0.0.一文帶你深入了解Node.js(圖文詳解)&#一文帶你深入了解Node.js(圖文詳解)9;);
})
登入後複製

4.4.一文帶你深入了解Node.js(圖文詳解) 模块化路由

为了方便对路由进行模块化的管理,Express 不建议将路由直接挂载到 app 上,而是推荐将路由抽离为单独的模块

将路由抽离为单独模块的步骤如下:

  • 创建路由模块对应的 .js 文件

  • 调用express.Router()函数创建路由对象

  • 向路由对象上挂载具体的路由

  • 使用 module.exports 向外共享路由对象

  • 使用app.use()函数注册路由模块

创建路由对象

const express = require(&#一文帶你深入了解Node.js(圖文詳解)9;express&#一文帶你深入了解Node.js(圖文詳解)9;);//导入包

const router = express.Router();//创建路由对象

//绑定路由规则
router.get(&#一文帶你深入了解Node.js(圖文詳解)9;/user/list&#一文帶你深入了解Node.js(圖文詳解)9;, (req, res) => {
    res.send(&#一文帶你深入了解Node.js(圖文詳解)9;user list message&#一文帶你深入了解Node.js(圖文詳解)9;);
})

router.post(&#一文帶你深入了解Node.js(圖文詳解)9;/user/add&#一文帶你深入了解Node.js(圖文詳解)9;, (req, res) => {
    res.send(&#一文帶你深入了解Node.js(圖文詳解)9;user add message&#一文帶你深入了解Node.js(圖文詳解)9;);
})

//向外导出路由对象
module.exports = router;
登入後複製

使用路由对象

const express = require(&#一文帶你深入了解Node.js(圖文詳解)9;express&#一文帶你深入了解Node.js(圖文詳解)9;);
const app = express();

const router = require(&#一文帶你深入了解Node.js(圖文詳解)9;./一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)-模块化路由&#一文帶你深入了解Node.js(圖文詳解)9;);

app.use(router);

app.listen(80, () => {
    console.log(&#一文帶你深入了解Node.js(圖文詳解)9;http://一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)7.0.0.一文帶你深入了解Node.js(圖文詳解)&#一文帶你深入了解Node.js(圖文詳解)9;);
})
登入後複製
4.5 中间件

一文帶你深入了解Node.js(圖文詳解)

一文帶你深入了解Node.js(圖文詳解)

中间件:与路由处理函数不同,必须包含next参数

4.5.一文帶你深入了解Node.js(圖文詳解) 基本使用

const express = require(&#一文帶你深入了解Node.js(圖文詳解)9;express&#一文帶你深入了解Node.js(圖文詳解)9;);
const app = express();
//全局中间件的简化形式
app.use((req, res, next) => {
    console.log(&#一文帶你深入了解Node.js(圖文詳解)9;正在使用全局中间件&#一文帶你深入了解Node.js(圖文詳解)9;);
    next();
});

app.get(&#一文帶你深入了解Node.js(圖文詳解)9;/&#一文帶你深入了解Node.js(圖文詳解)9;,(req, res) => {
    res.send(&#一文帶你深入了解Node.js(圖文詳解)9;Get message&#一文帶你深入了解Node.js(圖文詳解)9;);
})


app.listen(80, () => {
    console.log(&#一文帶你深入了解Node.js(圖文詳解)9;http://一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)7.0.0.一文帶你深入了解Node.js(圖文詳解)&#一文帶你深入了解Node.js(圖文詳解)9;);
})
登入後複製

注意

  • 多个中间件共享req,res,上游设置好,下游的中间件/路由使用

  • 中间件定义先后顺序执行

  • 局部生效的中间件,定义在

    • app.get(&#一文帶你深入了解Node.js(圖文詳解)9;/&#一文帶你深入了解Node.js(圖文詳解)9;,中间件,(req, res) => {
          res.send(&#一文帶你深入了解Node.js(圖文詳解)9;Get message&#一文帶你深入了解Node.js(圖文詳解)9;);
      })
      登入後複製
    • 一文帶你深入了解Node.js(圖文詳解)

  • 路由之前调用中间件

  • next()函数不能忘,后面不用写内容

4.5.一文帶你深入了解Node.js(圖文詳解) 中间件分类

(一文帶你深入了解Node.js(圖文詳解))应用
const express = require(&#一文帶你深入了解Node.js(圖文詳解)9;express&#一文帶你深入了解Node.js(圖文詳解)9;);
const app = express();

//全局中间件
app.use((req, res, next) => {
    console.log(&#一文帶你深入了解Node.js(圖文詳解)9;全局中间件&#一文帶你深入了解Node.js(圖文詳解)9;);
    next();
})
//局部中间件
function mw(req, res, next) {
    console.log(&#一文帶你深入了解Node.js(圖文詳解)9;局部中间件&#一文帶你深入了解Node.js(圖文詳解)9;);
    next();
}

app.get(&#一文帶你深入了解Node.js(圖文詳解)9;/&#一文帶你深入了解Node.js(圖文詳解)9;, mw, (req, res) => {
    res.send(&#一文帶你深入了解Node.js(圖文詳解)9;server is visting&#一文帶你深入了解Node.js(圖文詳解)9;);
})
app.listen(80, () => {
    console.log(&#一文帶你深入了解Node.js(圖文詳解)9;http://一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)7.0.0.一文帶你深入了解Node.js(圖文詳解)&#一文帶你深入了解Node.js(圖文詳解)9;);
})
登入後複製
(一文帶你深入了解Node.js(圖文詳解))路由

定义:绑定到 express.Router() 实例上的中间件

(一文帶你深入了解Node.js(圖文詳解))错误

定义捕获项目错误,防止出错,在所有路由之后定义

const express = require(&#一文帶你深入了解Node.js(圖文詳解)9;express&#一文帶你深入了解Node.js(圖文詳解)9;);
const app = express();


app.get(&#一文帶你深入了解Node.js(圖文詳解)9;/&#一文帶你深入了解Node.js(圖文詳解)9;, (req, res) => {
    throw new Error(&#一文帶你深入了解Node.js(圖文詳解)9;服务器出错&#一文帶你深入了解Node.js(圖文詳解)9;);
    res.send(&#一文帶你深入了解Node.js(圖文詳解)9;server is visting&#一文帶你深入了解Node.js(圖文詳解)9;);
})


//全局中间件
app.use((err, req, res, next) => {
    console.log(&#一文帶你深入了解Node.js(圖文詳解)9;Error!&#一文帶你深入了解Node.js(圖文詳解)9; + err.message);
    res.send(&#一文帶你深入了解Node.js(圖文詳解)9;Error!&#一文帶你深入了解Node.js(圖文詳解)9; + err.message);
    next();
})

app.listen(80, () => {
    console.log(&#一文帶你深入了解Node.js(圖文詳解)9;http://一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)7.0.0.一文帶你深入了解Node.js(圖文詳解)&#一文帶你深入了解Node.js(圖文詳解)9;);
})
//Error!服务器出错
登入後複製
(4)Express 内置

一文帶你深入了解Node.js(圖文詳解)

const express = require(&#一文帶你深入了解Node.js(圖文詳解)9;express&#一文帶你深入了解Node.js(圖文詳解)9;);
const app = express();

// express.json()解析JSON请求体
app.use(express.json());

//解析application/x-www-
app.use(express.urlencoded({ extended: false }));

app.post(&#一文帶你深入了解Node.js(圖文詳解)9;/user&#一文帶你深入了解Node.js(圖文詳解)9;, (req, res) => {
    console.log(req.body);
})

app.post(&#一文帶你深入了解Node.js(圖文詳解)9;/book&#一文帶你深入了解Node.js(圖文詳解)9;, (req, res) => {
    console.log(req.body);
})

app.listen(80, () => {
    console.log(&#一文帶你深入了解Node.js(圖文詳解)9;http://一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)7.0.0.一文帶你深入了解Node.js(圖文詳解)&#一文帶你深入了解Node.js(圖文詳解)9;);
})
// http://一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)7.0.0.一文帶你深入了解Node.js(圖文詳解)
// { name: &#一文帶你深入了解Node.js(圖文詳解)9;zs&#一文帶你深入了解Node.js(圖文詳解)9;, age: 一文帶你深入了解Node.js(圖文詳解)8 }
// [Object: null prototype] { name: &#一文帶你深入了解Node.js(圖文詳解)9;西游记&#一文帶你深入了解Node.js(圖文詳解)9; }
登入後複製
(5)第三方
  • npm install body-parse
  • require导入
  • app.use()为全局
const express = require(&#一文帶你深入了解Node.js(圖文詳解)9;express&#一文帶你深入了解Node.js(圖文詳解)9;);
const app = express();

const parser = require(&#一文帶你深入了解Node.js(圖文詳解)9;body-parser&#一文帶你深入了解Node.js(圖文詳解)9;);

app.use(parser.urlencoded({ extended: false }));

app.post(&#一文帶你深入了解Node.js(圖文詳解)9;/book&#一文帶你深入了解Node.js(圖文詳解)9;, (req, res) => {
    console.log(req.body);
})

app.listen(80, () => {
    console.log(&#一文帶你深入了解Node.js(圖文詳解)9;http://一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)7.0.0.一文帶你深入了解Node.js(圖文詳解)&#一文帶你深入了解Node.js(圖文詳解)9;);
})
登入後複製

注意:Express 内置的 express.urlencoded 中间件,就是基于 body-parser 这个第三方中间件进一步封装出来的。

4.6 自定义中间件

封装中间件

const querystring = require(&#一文帶你深入了解Node.js(圖文詳解)9;querystring&#一文帶你深入了解Node.js(圖文詳解)9;);

function parsebody(req, res, next) {
    let str = &#一文帶你深入了解Node.js(圖文詳解)9;&#一文帶你深入了解Node.js(圖文詳解)9;;
    req.on(&#一文帶你深入了解Node.js(圖文詳解)9;data&#一文帶你深入了解Node.js(圖文詳解)9;, (result) => {
        str += result;
    })
    req.on(&#一文帶你深入了解Node.js(圖文詳解)9;end&#一文帶你深入了解Node.js(圖文詳解)9;, () => {
        const body = querystring.parse(str);
        req.body = body;
        next();
    })
}

module.exports = parsebody;
登入後複製

测试中间件

const express = require(&#一文帶你深入了解Node.js(圖文詳解)9;express&#一文帶你深入了解Node.js(圖文詳解)9;);
const app = express();
const parsebody = require(&#一文帶你深入了解Node.js(圖文詳解)9;./一文帶你深入了解Node.js(圖文詳解)4-自定义中间件&#一文帶你深入了解Node.js(圖文詳解)9;);

app.use(parsebody);

app.post(&#一文帶你深入了解Node.js(圖文詳解)9;/user&#一文帶你深入了解Node.js(圖文詳解)9;, (req, res) => {
    res.send(req.body);
    console.log(req.body);

})

app.listen(80, () => {
    console.log(&#一文帶你深入了解Node.js(圖文詳解)9;http://一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)7.0.0.一文帶你深入了解Node.js(圖文詳解)&#一文帶你深入了解Node.js(圖文詳解)9;);
})
登入後複製
4.7 接口
const express = require(&#一文帶你深入了解Node.js(圖文詳解)9;express&#一文帶你深入了解Node.js(圖文詳解)9;);
const app = express();

const router = require(&#一文帶你深入了解Node.js(圖文詳解)9;./一文帶你深入了解Node.js(圖文詳解)5-接口问题&#一文帶你深入了解Node.js(圖文詳解)9;);
app.use(router);

app.listen(80, () => {
    console.log(&#一文帶你深入了解Node.js(圖文詳解)9;http://一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)7.0.0.一文帶你深入了解Node.js(圖文詳解)&#一文帶你深入了解Node.js(圖文詳解)9;);
})
登入後複製

4.7.一文帶你深入了解Node.js(圖文詳解) GET接口

const express = require(&#一文帶你深入了解Node.js(圖文詳解)9;express&#一文帶你深入了解Node.js(圖文詳解)9;);

const apiRouter = express.Router();

apiRouter.get(&#一文帶你深入了解Node.js(圖文詳解)9;/user&#一文帶你深入了解Node.js(圖文詳解)9;, (req, res) => {
    const query = req.query;
    res.send({
        status: 0,
        msg: &#一文帶你深入了解Node.js(圖文詳解)9;GET 请求成功&#一文帶你深入了解Node.js(圖文詳解)9;,
        data: query
    });
})
module.exports = apiRouter;
登入後複製

4.7.一文帶你深入了解Node.js(圖文詳解) POST接口

apiRouter.use(express.urlencoded({ extended: false }));

apiRouter.post(&#一文帶你深入了解Node.js(圖文詳解)9;/user&#一文帶你深入了解Node.js(圖文詳解)9;, (req, res) => {
    const body = req.body;
    res.send({
        status: 0,
        msg: &#一文帶你深入了解Node.js(圖文詳解)9;POST 请求成功&#一文帶你深入了解Node.js(圖文詳解)9;,
        data: body
    });
})
登入後複製

4.7.一文帶你深入了解Node.js(圖文詳解) PUT接口

4.7.4 DELETE接口

4.7.5 区别

https://blog.csdn.net/qq_4一文帶你深入了解Node.js(圖文詳解)9一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)85/article/details/一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)985一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)94

https://zhuanlan.zhihu.com/p/一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)5454697

五、跨域5.一文帶你深入了解Node.js(圖文詳解) CORS

5.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 原理

概念:由Http响应头构成,决定浏览器是否阻止js代码获取资源,在服务器端配置

一文帶你深入了解Node.js(圖文詳解)

5.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 响应头

一文帶你深入了解Node.js(圖文詳解)

//只允许特定的域名访问、*代表全部
    res.setHeader(&#一文帶你深入了解Node.js(圖文詳解)9;Access-Control-Allow-Origin&#一文帶你深入了解Node.js(圖文詳解)9;, &#一文帶你深入了解Node.js(圖文詳解)9;http://www.baidu.com&#一文帶你深入了解Node.js(圖文詳解)9;);
//配置请求头信息
    res.setHeader(&#一文帶你深入了解Node.js(圖文詳解)9;Access-Control-Allow-Headers&#一文帶你深入了解Node.js(圖文詳解)9;, &#一文帶你深入了解Node.js(圖文詳解)9;Content-Type,X-Custom-Header&#一文帶你深入了解Node.js(圖文詳解)9;);
//配置请求头方法 * 代表全部
    res.setHeader(&#一文帶你深入了解Node.js(圖文詳解)9;Access-Control-Allow-Methods&#一文帶你深入了解Node.js(圖文詳解)9;, &#一文帶你深入了解Node.js(圖文詳解)9;GET,POST,DELETE,PUT&#一文帶你深入了解Node.js(圖文詳解)9;);
登入後複製

5.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 分类

(一文帶你深入了解Node.js(圖文詳解))简单请求
  • 请求方式:GET、POST、HEAD
  • HTTP 头部信息不超过以下几种字段无自定义头部字段、Accept、Accept-Language、Content-Language、DPR、Downlink、Save-Data、Viewport-Width、Width 、Content-Type(只有三个值application/x-www-form-urlencoded、multipart/form-data、text/plain)
  • 客户端与服务器只发送一次请求
(一文帶你深入了解Node.js(圖文詳解))预检请求
  • 请求方式:GET、POST、HEAD之外的方式
  • 自定义头部字段
  • OPTION预检,成功后发送带有数据的请求
5.一文帶你深入了解Node.js(圖文詳解) JSONP

概念:只支持GET请求

六、Mysql数据库

定义组织存储管理数据仓库

6.一文帶你深入了解Node.js(圖文詳解) SQL命令

6.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 查询

select * from userswhere id>一文帶你深入了解Node.js(圖文詳解) and id <5
登入後複製

6.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 插入

insert into users(username,password) values(&#一文帶你深入了解Node.js(圖文詳解)9;jack&#一文帶你深入了解Node.js(圖文詳解)9;,&#一文帶你深入了解Node.js(圖文詳解)9;666&#一文帶你深入了解Node.js(圖文詳解)9;)
登入後複製

6.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 更新

update users set password=&#一文帶你深入了解Node.js(圖文詳解)9;666666&#一文帶你深入了解Node.js(圖文詳解)9;where username=&#一文帶你深入了解Node.js(圖文詳解)9;jack&#一文帶你深入了解Node.js(圖文詳解)9;
登入後複製

6.一文帶你深入了解Node.js(圖文詳解).4 删除

delete from users
where id=9
登入後複製
6.一文帶你深入了解Node.js(圖文詳解) Node.js使用

6.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 初始化

  • 导包:npm i mysql
//引入mysql
const mysql = require(&#一文帶你深入了解Node.js(圖文詳解)9;mysql&#一文帶你深入了解Node.js(圖文詳解)9;);
//建立数据库连接
const db = mysql.createPool({
    url: &#一文帶你深入了解Node.js(圖文詳解)9;一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)7.0.0.一文帶你深入了解Node.js(圖文詳解)&#一文帶你深入了解Node.js(圖文詳解)9;,//数据库IP地址
    user: &#一文帶你深入了解Node.js(圖文詳解)9;root&#一文帶你深入了解Node.js(圖文詳解)9;,//账号
    password: &#一文帶你深入了解Node.js(圖文詳解)9;一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)456&#一文帶你深入了解Node.js(圖文詳解)9;,//密码
    database: &#一文帶你深入了解Node.js(圖文詳解)9;test_db&#一文帶你深入了解Node.js(圖文詳解)9;//操作哪一个数据库
});
登入後複製

6.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 查询

const queryStr = &#一文帶你深入了解Node.js(圖文詳解)9;select * from users&#一文帶你深入了解Node.js(圖文詳解)9;;
db.query(queryStr, (err, results) => {
    if (err) return console.log(err.message);
    console.log(results);
})

PS E:\FED\js\node.js\node.js—资料\day总复习\code> node .\一文帶你深入了解Node.js(圖文詳解)8-mysql操作.js
[
  RowDataPacket { id: 一文帶你深入了解Node.js(圖文詳解), username: &#一文帶你深入了解Node.js(圖文詳解)9;zz&#一文帶你深入了解Node.js(圖文詳解)9;, password: &#一文帶你深入了解Node.js(圖文詳解)9;一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)&#一文帶你深入了解Node.js(圖文詳解)9;, status: 0 },
  RowDataPacket { id: 一文帶你深入了解Node.js(圖文詳解), username: &#一文帶你深入了解Node.js(圖文詳解)9;ls&#一文帶你深入了解Node.js(圖文詳解)9;, password: &#一文帶你深入了解Node.js(圖文詳解)9;abc&#一文帶你深入了解Node.js(圖文詳解)9;, status: 0 },
  RowDataPacket { id: 4, username: &#一文帶你深入了解Node.js(圖文詳解)9;jony&#一文帶你深入了解Node.js(圖文詳解)9;, password: &#一文帶你深入了解Node.js(圖文詳解)9;456&#一文帶你深入了解Node.js(圖文詳解)9;, status: 0 }
]
登入後複製

6.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 插入

const user = { username: &#一文帶你深入了解Node.js(圖文詳解)9;superman&#一文帶你深入了解Node.js(圖文詳解)9;, password: &#一文帶你深入了解Node.js(圖文詳解)9;jknad&#一文帶你深入了解Node.js(圖文詳解)9; };
const insertStr = &#一文帶你深入了解Node.js(圖文詳解)9;insert into users set ?&#一文帶你深入了解Node.js(圖文詳解)9;;
db.query(insertStr, user, (err, results) => {
    if (err) return console.log(err.message);
    if (results.affectedRows == 一文帶你深入了解Node.js(圖文詳解)) {
        console.log(&#一文帶你深入了解Node.js(圖文詳解)9;插入数据成功&#一文帶你深入了解Node.js(圖文詳解)9;);
    }
})
//插入数据成功
登入後複製

6.一文帶你深入了解Node.js(圖文詳解).4 更新

const user = { id: 一文帶你深入了解Node.js(圖文詳解)0, username: &#一文帶你深入了解Node.js(圖文詳解)9;super&#一文帶你深入了解Node.js(圖文詳解)9;, password: &#一文帶你深入了解Node.js(圖文詳解)9;一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)一文帶你深入了解Node.js(圖文詳解)456&#一文帶你深入了解Node.js(圖文詳解)9; };
const updateStr = &#一文帶你深入了解Node.js(圖文詳解)9;update users set ? where id=?&#一文帶你深入了解Node.js(圖文詳解)9;;
db.query(updateStr, [user, user.id], (err, results) => {
    if (err) return console.log(err.message);
    if (results.affectedRows == 一文帶你深入了解Node.js(圖文詳解)) {
        console.log(&#一文帶你深入了解Node.js(圖文詳解)9;更新数据成功&#一文帶你深入了解Node.js(圖文詳解)9;);
    }
})
登入後複製

6.一文帶你深入了解Node.js(圖文詳解).5 删除

(一文帶你深入了解Node.js(圖文詳解)) 一般删除
const deleteStr = &#一文帶你深入了解Node.js(圖文詳解)9;delete from users where id=?&#一文帶你深入了解Node.js(圖文詳解)9;;
db.query(deleteStr, 一文帶你深入了解Node.js(圖文詳解)0, (err, results) => {
    if (err) return console.log(err.message);
    if (results.affectedRows == 一文帶你深入了解Node.js(圖文詳解)) {
        console.log(&#一文帶你深入了解Node.js(圖文詳解)9;删除成功&#一文帶你深入了解Node.js(圖文詳解)9;);
    }
})
登入後複製
(一文帶你深入了解Node.js(圖文詳解)) 标记删除
const deleteStr = &#一文帶你深入了解Node.js(圖文詳解)9;update users set status=一文帶你深入了解Node.js(圖文詳解) where id=?&#一文帶你深入了解Node.js(圖文詳解)9;;
db.query(deleteStr, 一文帶你深入了解Node.js(圖文詳解)0, (err, results) => {
    if (err) return console.log(err.message);
    if (results.affectedRows == 一文帶你深入了解Node.js(圖文詳解)) {
        console.log(&#一文帶你深入了解Node.js(圖文詳解)9;删除成功&#一文帶你深入了解Node.js(圖文詳解)9;);
    }
})
登入後複製
七、前后端的身份认证一文帶你深入了解Node.js(圖文詳解)>7.一文帶你深入了解Node.js(圖文詳解) Web开发模式一文帶你深入了解Node.js(圖文詳解)>

7.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 基于服务端渲染的传统 Web 开发模式

概念:服务端在后台拼接html页面,发送给客户端,不需要ajax

特点

  • 前端耗时少
  • 有利于SEO
  • 占用服务端资源
  • 不利于前后端分离开发

7.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) 基于前后端分离的新型 Web 开发模式

概念:后端提供API接口,前端通过ajax调用接口

特点

  • 开发体验好
  • 用户体验好
  • 减轻服务器渲染压力
  • 不利于SEO

不谈业务场景而盲目选择使用何种开发模式都是耍流氓

  • 例如企業級網站,主要功能是展示而沒有複雜的交互,並且需要良好的SEO,則這時我們就需要使用伺服器端渲染
  • 而類似後台管理專案互動性比較強,不需要考慮SEO,那麼就可以使用前後端分離的開發模式
  • 另外,具體使用何種開發模式並不是絕對的,為了同時兼顧了首頁的渲染速度和前後端分離的開發效率,一些網站採用了首屏伺服器端渲染其他頁面前後端分離的開發模式
#7.一文帶你深入了解Node.js(圖文詳解) 認證一文帶你深入了解Node.js(圖文詳解)>

概念:透過不同的手段(驗證碼、密碼、人臉、指紋...),認證客戶的身份

一文帶你深入了解Node.js(圖文詳解)

一文帶你深入了解Node.js(圖文詳解)>

一文帶你深入了解Node.js(圖文詳解)

7.一文帶你深入了解Node.js(圖文詳解) Session認證機制

  • 7.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) Cookie
  • Cookie:儲存在瀏覽器不超過4KB
  • 字串,
鍵值對

形式儲存一文帶你深入了解Node.js(圖文詳解)

自動發送網域獨立過期時限

4KB限制容易偽造,不建議存放隱私資料

一文帶你深入了解Node.js(圖文詳解)

  • 7.一文帶你深入了解Node.js(圖文詳解).一文帶你深入了解Node.js(圖文詳解) Session

#核心

:###會員卡pos機認證###### ##################npm install express-session############更多node相關知識,請造訪:###nodejs 教學# ##! ###

以上是一文帶你深入了解Node.js(圖文詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

nodejs和vuejs區別 nodejs和vuejs區別 Apr 21, 2024 am 04:17 AM

Node.js 是一種伺服器端 JavaScript 執行時,而 Vue.js 是一個客戶端 JavaScript 框架,用於建立互動式使用者介面。 Node.js 用於伺服器端開發,如後端服務 API 開發和資料處理,而 Vue.js 用於用戶端開發,如單一頁面應用程式和響應式使用者介面。

nodejs是後端框架嗎 nodejs是後端框架嗎 Apr 21, 2024 am 05:09 AM

Node.js 可作為後端框架使用,因為它提供高效能、可擴展性、跨平台支援、豐富的生態系統和易於開發等功能。

nodejs怎麼連接mysql資料庫 nodejs怎麼連接mysql資料庫 Apr 21, 2024 am 06:13 AM

要連接 MySQL 資料庫,需要遵循以下步驟:安裝 mysql2 驅動程式。使用 mysql2.createConnection() 建立連接對象,其中包含主機位址、連接埠、使用者名稱、密碼和資料庫名稱。使用 connection.query() 執行查詢。最後使用 connection.end() 結束連線。

nodejs中的全域變數有哪些 nodejs中的全域變數有哪些 Apr 21, 2024 am 04:54 AM

Node.js 中存在以下全域變數:全域物件:global核心模組:process、console、require執行階段環境變數:__dirname、__filename、__line、__column常數:undefined、null、NaN、Infinity、-Infinity

nodejs安裝目錄裡的npm與npm.cmd檔有什麼差別 nodejs安裝目錄裡的npm與npm.cmd檔有什麼差別 Apr 21, 2024 am 05:18 AM

Node.js 安裝目錄中有兩個與 npm 相關的文件:npm 和 npm.cmd,區別如下:擴展名不同:npm 是可執行文件,npm.cmd 是命令視窗快捷方式。 Windows 使用者:npm.cmd 可以在命令提示字元中使用,npm 只能從命令列執行。相容性:npm.cmd 特定於 Windows 系統,npm 跨平台可用。使用建議:Windows 使用者使用 npm.cmd,其他作業系統使用 npm。

nodejs和java的差別大嗎 nodejs和java的差別大嗎 Apr 21, 2024 am 06:12 AM

Node.js 和 Java 的主要差異在於設計和特性:事件驅動與執行緒驅動:Node.js 基於事件驅動,Java 基於執行緒驅動。單執行緒與多執行緒:Node.js 使用單執行緒事件循環,Java 使用多執行緒架構。執行時間環境:Node.js 在 V8 JavaScript 引擎上運行,而 Java 在 JVM 上運行。語法:Node.js 使用 JavaScript 語法,而 Java 使用 Java 語法。用途:Node.js 適用於 I/O 密集型任務,而 Java 適用於大型企業應用程式。

nodejs是後端開發語言嗎 nodejs是後端開發語言嗎 Apr 21, 2024 am 05:09 AM

是的,Node.js 是一種後端開發語言。它用於後端開發,包括處理伺服器端業務邏輯、管理資料庫連接和提供 API。

nodejs和java選哪個 nodejs和java選哪個 Apr 21, 2024 am 04:40 AM

Node.js 和 Java 在 Web 開發中各有優劣,因此選擇取決於專案需求。 Node.js 擅長即時應用程式、快速開發和微服務架構,而 Java 則在企業級支援、效能和安全性方面佔優。

See all articles