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
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...