nodejs02

来源:https://www.cnblogs.com/LuBingBing/archive/2022/11/22/16915210.html
-Advertisement-
Play Games

Express 快速創建 Web 伺服器 express 的基本使用 先安裝express包 npm i [email protected] 1.導入 express const express = require('express'); 2.創建 web 伺服器 const app = express( ...


Express 快速創建 Web 伺服器

express 的基本使用

先安裝express包

npm i [email protected]

1.導入 express

const express = require('express');

2.創建 web 伺服器

const app = express();

3.啟動 Web 伺服器

app.listen(80, () => {
    console.log("express server running at http://127.0.0.1");
});

4.監聽客戶端的 GET 和 POST 請求,並向客戶端響應具體內容

app.get('/user',(req,res ) => {
    // 調用 express 提供的 res.send() 方法,向客戶端響應一個 JSON 對象
    res.send({name: 'zs', age: 20, gender: '男'});
});

1668990404889

1668990429765

app.post('/user', (req, res) => {
    // 調用 express 提供的 res.send() 方法,向客戶端響應一個 文本字元串
    res.send('請求成功')
});

1668990728980

1668990746340

6. req.query對象 獲取 URL 攜帶的查詢參數

通過 req.query 對象,可以訪問到客戶端通過查詢字元串形式發送到伺服器的參數

app.get('/', (req, res) => {
    //通過 req.query 可以獲取到客戶端發送過來的 查詢參數
    //註意:預設情況下,req.query 是一個空對象
    console.log(req.query);  // 輸出 : {}
    res.send(req.query)    // => 返回空對象 {}
})

req.params 對象,獲取 URL 中的動態參數

通過 req.params 對象,可以訪問到 URL 中,通過 : 匹配到的動態參數
URL 地址中,可以通過 :參數名 的形式,匹配動態參數值

app.get('/user/:id', (req, res) => {
    // 這裡的 id 可以任意命名
    //預設情況下,req.params 是一個空對象
    // 裡面存放著通過 :動態匹配到的參數值
    console.log(req.params);
})
// get http://127.0.0.1/user/1 ,則輸出為{ "id: 1"}
// get http://127.0.0.1/user/2 ,則輸出為 {"id: 2"}

總體結構

//1.    導入 express
const express = require('express');
//2.    創建 web 伺服器
const app = express();

//4.監聽客戶端的 GET 和 POST 請求,並向客戶端響應具體內容
app.get('/user',(req,res ) => {
    // 調用 express 提供的 res.send() 方法,向客戶端響應一個 JSON 對象
    res.send({name: 'zs', age: 20, gender: '男'});
});
app.post('/user', (req, res) => {
    // 調用 express 提供的 res.send() 方法,向客戶端響應一個 文本字元串
    res.send('請求成功')
});
// 6. req.query對象  獲取 URL 攜帶的查詢參數
// 通過 req.query 對象,可以訪問到客戶端通過查詢字元串形式發送到伺服器的參數
app.get('/', (req, res) => {
    //通過 req.query 可以獲取到客戶端發送過來的 查詢參數
    //註意:預設情況下,req.query 是一個空對象
    console.log(req.query);  // 輸出 : {}
    res.send(req.query)    // => 返回空對象 {}
})
// req.params 對象,獲取 URL 中的動態參數
// 通過 req.params 對象,可以訪問到 URL 中,通過 : 匹配到的動態參數
// URL 地址中,可以通過 :參數名 的形式,匹配動態參數值
app.get('/user/:id', (req, res) => {
    // 這裡的 id 可以任意命名
    //預設情況下,req.params 是一個空對象
    // 裡面存放著通過 :動態匹配到的參數值
    console.log(req.params);
})
// get http://127.0.0.1/user/1 ,則輸出為{ "id: 1"}
// get http://127.0.0.1/user/2 ,則輸出為 {"id: 2"}
//3.    啟動 Web 伺服器
app.listen(80, () => {
    console.log("express server running at http://127.0.0.1");
});

Express 托管靜態資源

1.express.static()

在這裡,調用 express.static() 方法,快速對外提供靜態資源
如下代碼可以將 clock 目錄下的 html 文件,css 文件 ,js 文件對外開放訪問

app.use(express.static('./clock'));
//可以在瀏覽器中 http://127.0.0.1/index.css來訪問 clock 目錄下的index.css文件

2. express 托管多個靜態資源目錄

托管多個靜態資源目錄,只需要多次調用 express.static() 函數即可
express.static() 函數會根據添加順序查找所需文件

app.use(express.static('./clock'));
app.use(express.static('./files'));

3.掛載路徑首碼

在靜態資源訪問路徑之前,掛在首碼
此時http://127.0.0.1/index.html 訪問的是files目錄下的 index.html 文件
http://127.0.0.1/clock/index.html 加首碼 /clock 之後,訪問的才是 clock 目錄下的 index.html 文件

app.use('/clock',express.static('./clock'));
app.use(express.static('./files'));

nodemon 安裝

自動重啟項目,代碼進行修改後,不需要手動重啟

npm install -g nodemon

nodemon 使用

傳統方式啟動項目: node 項目文件(例如 node 01.js),代碼進行修改後,需要手動重啟
使用 nodemon 項目文件,代碼進行修改後,不需要手動重啟

nodemon 01.js
npx nodemon 01.js

express 路由

1. express 中的路由

路由指的客戶端的請求與伺服器處理函數之間的映射關係
METHOD 請求的類型, PATH 請求的URL地址,HANDER 處理函數

 app.METHOD(PATH, HANDER)
                    ```

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 分庫分表,是企業裡面比較常見的針對高併發、數據量大的場景下的一種技術優化方案,也是一個非常高頻的面試題。但是,因為很多人其實並沒有非常豐富的分庫分表的經驗,所以能把這個問題回答得比較好的人其實還挺少的。 那麼,本文就來試圖把關於分庫分表的事情,一次性講個清楚。 ...
  • 一、MySQL簡介 ​ MySQL是一種關係型資料庫管理系統,關係資料庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。 二、安裝與下載 1、下載流程 1、訪問官方(www.mysql.com) 2、點擊‘DOWNLOADS’,進入下載界面 3、下拉,找到‘ ...
  • 在今年的第七屆中國開源年會上,StoneDB 團隊在大數據分論壇發表了《HTAP 的下一步?SoTP 初探》主題演講,在本次演講中,我們首次正式對外闡釋了“SoTP 資料庫”的技術理念,本系列是演講實錄+小編補充版,權當拋磚引玉,供大家批評指正。由於內容比較多,本文為第一章節,主要講講我們提 SoT ...
  • 1 構建一個centos7.6.1810的docker鏡像,用於下載MySQL+xtrabackup所需安裝包 7.6.1810的docker鏡像,低版本最小安裝,會儘可能把所需的包拉齊。 Dockerfile文件如下 FROM centos:7.6.1810 CMD yum install -y ...
  • 在Redis運維過程中,由於bigkey的存在,會影響業務程式的響應速度,嚴重的還會造成可用性損失,DBA也一直和業務開發方強調bigkey的規避方法以及危害 ...
  • Android網路請求(3) 網路請求框架OkHttp 本節我們來講解OkHtpp網路請求框架 什麼是網路請求框架 在我的理解中,網路請求框架是為了方便我們更加便捷規範的進行網路請求所建的類,我們通過調用該類中的方法可以快速地進行網路請求,切幫我們封裝好了一些數據的處理方法,方便我們用更少的代碼去做 ...
  • Android網路請求(2) 在android網路開發中,除get請求外常見的還有post、put、delete這三種,接下來我們將詳細講解這三種請求及參數 GET請求 我們使用過get請求了,對於我們的日常生活中get請求毫無疑問是最常用的請求方式,大部分的瀏覽器搜索都是通過get請求,如在百度上 ...
  • 最近需要接手別人c#那邊組的一個項目新增頁面,但他們的是React的框架,作為一名後端,沒接觸過,一臉懵逼。。。。。。 說哈我的處理思路: 一、先用相應的程式打開該項目的源碼。如:react用vscode打開 二、先找到了頁面,查看頁面結構 這是我後面加的頁面,可以看出來,less類似css樣式 j ...
一周排行
    -Advertisement-
    Play Games
  • public static void GetRegistData() { string name = "huishuangzhu"; //搜索到註冊表根目錄 RegistryKey hkml = Registry.ClassesRoot; //搜索到註冊表根目錄下的XXX文件夾。 RegistryK ...
  • 用acme.sh自動部署功能變數名稱證書 安裝ACME 目前使用量最大的免費SSL證書就是Let’s Encrypt,自2018-03開始,Let’s Encrypt官方發佈上線了免費的SSL泛功能變數名稱證書,目前通過DNS方式獲取比較快,國內可以通過鵝雲的DNSPod功能變數名稱API或者貓雲功能變數名稱API自動簽發Let’ ...
  • 經常看到有群友調侃“為什麼搞Java的總在學習JVM調優?那是因為Java爛!我們.NET就不需要搞這些!”真的是這樣嗎?今天我就用一個案例來分析一下。 昨天,一位學生問了我一個問題:他建了一個預設的ASP.NET Core Web API的項目,也就是那個WeatherForecast的預設項目模 ...
  • 1、環境搭建 1.1 依賴 <!-- nacos註冊中心 註解 @EnableDiscoveryClient --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba- ...
  • ULID:Universally Unique Lexicographically Sortable Identifier(通用唯一詞典分類標識符) UUID:Universally Unique Identifier(通用唯一標識符) 為什麼不選擇UUID UUID 目前有 5 個版本: 版本1: ...
  • 虛基類/抽象類 抽象類:有純虛函數的類 虛繼承 通過修飾繼承方式, 如代碼2是虛繼承,被虛繼承的類稱為虛基類 虛繼承派生類的記憶體佈局方式 先是vbptr => 派生類的數據 =>基類的數據 , 對比代碼1和代碼2,發現原本基類數據在前面,派生類數據在後面,但是在虛繼承的時候 基類數據方式放到了後面, ...
  • 下麵給出 Kafka 一些重要概念,讓大家對 Kafka 有個整體的認識和感知,後面還會詳細的解析每一個概念的作用以及更深入的原理 • Producer:消息生產者,向 Kafka Broker 發消息的客戶端。 • Consumer:消息消費者,從 Kafka Broker 取消息的客戶端。 • ...
  • 前面介紹了對稱加密演算法,本文將介紹密碼學中另一類重要應用:消息摘要(Digest),什麼是消息摘要?簡單的定義是:對一份數據,進行一個單向的Hash函數,生成一個固定長度的Hash值,這個值就是這份數據的摘要,也稱為指紋。 ...
  • 弟弟最近要考試,臨時抱佛腳在網上找了一堆學習資料複習,這不剛就來找我了,說PDF上有水印,影響閱讀效果,到時候考不好就怪資料不行,氣的我差點當場想把他揍一頓! 算了,弟弟長大了,看在打不過他的份上,就不打他了~ 稍加思索,我想起了Python不是可以去水印?說搞就搞! 去除水印原理 去除方法: 用 ...
  • 作者:陳昌浩 1 導讀 if…else…在代碼中經常使用,聽說可以通過Java 8的Function介面來消滅if…else…!Function介面是什麼?如果通過Function介面介面消滅if…else…呢?讓我們一起來探索一下吧。 2 Function介面 Function介面就是一個有且僅有 ...