日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

使用 Node.js 和 htmx 構建全棧 CRUD 應用程序

來源: 責編: 時間:2024-03-22 17:42:13 239觀看
導讀htmx 是一個現代 JavaScript 庫,旨在通過實現部分 HTML 更新來增強 Web 應用,而無需重新加載整個頁面。與傳統前端框架中的 JSON 有效載荷不同,它通過有線方式發送 HTML 來實現這一功能。我們將要構建什么我們將開發一個

htmx 是一個現代 JavaScript 庫,旨在通過實現部分 HTML 更新來增強 Web 應用,而無需重新加載整個頁面。與傳統前端框架中的 JSON 有效載荷不同,它通過有線方式發送 HTML 來實現這一功能。Ckv28資訊網——每日最新資訊28at.com

我們將要構建什么

我們將開發一個簡單的聯系人管理器,能夠執行所有 CRUD 操作:創建、讀取、更新和刪除聯系人。通過利用 htmx,該應用程序將提供單頁應用程序 (SPA) 的感覺,從而增強交互性和用戶體驗。Ckv28資訊網——每日最新資訊28at.com

如果用戶禁用 JavaScript,應用程序將以整頁刷新的方式運行,從而保持可用性和可發現性。這種方法展示了 htmx 創建現代 Web 應用程序的能力,同時保持它們的可訪問性和 SEO 友好性。Ckv28資訊網——每日最新資訊28at.com

這就是我們最終得到的結果。Ckv28資訊網——每日最新資訊28at.com

圖片圖片Ckv28資訊網——每日最新資訊28at.com

本文的代碼可以在隨附的 GitHub 存儲庫[1]中找到。Ckv28資訊網——每日最新資訊28at.com

先決條件

要學習本教程,您需要在 PC 上安裝 Node.js。如果您尚未安裝 Node,請前往官方 Node 下載頁面并獲取適合您系統的正確二進制文件。或者,您可能想使用版本管理器安裝 Node。這種方法允許您安裝多個 Node 版本并在它們之間隨意切換。Ckv28資訊網——每日最新資訊28at.com

除此之外,熟悉 Node、Pug(我們將使用它們作為模板引擎)和 htmx 會有所幫助,但不是必需的。如果您想復習以上任何內容,請查看我們的教程:使用 Node 構建簡單的初學者應用程序[2]、Pug HTML 模板預處理器指南[3]和 htmx 簡介[4]。Ckv28資訊網——每日最新資訊28at.com

在開始之前,請運行以下命令:Ckv28資訊網——每日最新資訊28at.com

node -vnpm -v

您應該看到如下輸出:Ckv28資訊網——每日最新資訊28at.com

v20.11.110.4.0

這確認了 Node 和 npm 已安裝在您的計算機上,并且可以從命令行環境進行訪問。Ckv28資訊網——每日最新資訊28at.com

設置項目

讓我們從搭建一個新的 Node 項目開始:Ckv28資訊網——每日最新資訊28at.com

mkdir contact-managercd contact-managernpm init -y

這應該在項目根目錄中創建一個 package.json 文件。Ckv28資訊網——每日最新資訊28at.com

接下來,讓我們安裝我們需要的依賴項:Ckv28資訊網——每日最新資訊28at.com

npm i express method-override pug

在這些包中,Express 是我們應用程序的支柱。它是一個快速且簡約的 Web 框架,提供了一種簡單的方法來處理請求和響應,并將 URL 路由到特定的處理函數。 Pug 將充當我們的模板引擎,而我們將使用方法覆蓋在客戶端不支持的地方使用 HTTP 動詞,例如 PUT 和 DELETE。Ckv28資訊網——每日最新資訊28at.com

接下來,在根目錄中創建一個 app.js 文件:Ckv28資訊網——每日最新資訊28at.com

touch app.js

并添加以下內容:Ckv28資訊網——每日最新資訊28at.com

const express = require('express');const path = require('path');const routes = require('./routes/index');const app = express();app.set('views', path.join(__dirname, 'views'));app.set('view engine', 'pug');app.use(express.static('public'));app.use('/', routes);const server = app.listen(3000, () => {  console.log(`Express is running on port ${server.address().port}`);});

在這里,我們正在設置 Express 應用程序的結構。這包括將 Pug 配置為渲染視圖的視圖引擎、定義靜態資產的目錄以及連接路由器。Ckv28資訊網——每日最新資訊28at.com

該應用程序偵聽端口 3000,并使用控制臺日志來確認 Express 正在運行并準備好處理指定端口上的請求。此設置構成了我們應用程序的基礎,并準備好通過更多功能和路由進行擴展。Ckv28資訊網——每日最新資訊28at.com

接下來,讓我們創建路由文件:Ckv28資訊網——每日最新資訊28at.com

mkdir routestouch routes/index.js

打開該文件并添加以下內容:Ckv28資訊網——每日最新資訊28at.com

const express = require('express');const router = express.Router();// GET /contactsrouter.get('/contacts', async (req, res) => {  res.send('It works!');});

在這里,我們在新創建的路由目錄中設置基本路由。此路由在 /contacts 端點偵聽 GET 請求,并使用簡單的確認消息進行響應,表明一切正常。Ckv28資訊網——每日最新資訊28at.com

接下來,使用以下內容更新 package.json 文件的“scripts”部分:Ckv28資訊網——每日最新資訊28at.com

"scripts": {  "dev": "node --watch app.js"},

這利用了 Node.js 中的新監視模式,只要檢測到任何更改,該模式就會重新啟動我們的應用程序。Ckv28資訊網——每日最新資訊28at.com

最后,使用 npm run dev 啟動所有內容,然后在瀏覽器中訪問 http://localhost:3000/contacts/。您應該會看到一條消息“It works!”。Ckv28資訊網——每日最新資訊28at.com

圖片圖片Ckv28資訊網——每日最新資訊28at.com

激動人心的時刻!Ckv28資訊網——每日最新資訊28at.com

顯示所有聯系人

現在讓我們添加一些要顯示的聯系人。由于我們專注于 htmx,因此為了簡單起見,我們將使用硬編碼數組。這將使事情變得精簡,使我們能夠專注于 htmx 的動態功能,而無需復雜的數據庫集成。Ckv28資訊網——每日最新資訊28at.com

對于那些有興趣稍后添加數據庫的人來說,SQLite 和 Sequelize 是不錯的選擇,它們提供了不需要單獨數據庫服務器的基于文件的系統。Ckv28資訊網——每日最新資訊28at.com

話雖如此,請將以下內容添加到第一個路由之前的 index.js 中:Ckv28資訊網——每日最新資訊28at.com

const contacts = [  { id: 1, name: 'John Doe', email: 'john.doe@example.com' },  { id: 2, name: 'Jane Smith', email: 'jane.smith@example.com' },  { id: 3, name: 'Emily Johnson', email: 'emily.johnson@example.com' },  { id: 4, name: 'Aarav Patel', email: 'aarav.patel@example.com' },  { id: 5, name: 'Liu Wei', email: 'liu.wei@example.com' },  { id: 6, name: 'Fatima Zahra', email: 'fatima.zahra@example.com' },  { id: 7, name: 'Carlos Hernández', email: 'carlos.hernandez@example.com' },  { id: 8, name: 'Olivia Kim', email: 'olivia.kim@example.com' },  { id: 9, name: 'Kwame Nkrumah', email: 'kwame.nkrumah@example.com' },  { id: 10, name: 'Chen Yu', email: 'chen.yu@example.com' },];

現在,我們需要為路由創建一個顯示模板。創建一個包含 index.pug 文件的 views 文件夾:Ckv28資訊網——每日最新資訊28at.com

mkdir viewstouch views/index.pug

并添加以下內容:Ckv28資訊網——每日最新資訊28at.com

doctype htmlhtml  head    meta(charset='UTF-8')    title Contact Manager    link(rel='preconnect', )    link(rel='preconnect', , crossorigin)    link(, rel='stylesheet')    link(rel='stylesheet', href='/styles.css')  body    header      a(href='/contacts')        h1 Contact Manager    section#sidebar      ul.contact-list        each contact in contacts          li #{contact.name}      div.actions        a(href='/contacts/new') New Contact    main#content      p Select a contact    script(src='https://unpkg.com/htmx.org@1.9.10')

在此模板中,我們為應用程序布置 HTML 結構。在 head 部分,我們包含了來自 Google Fonts 的 Roboto 字體和自定義樣式的樣式表。Ckv28資訊網——每日最新資訊28at.com

正文分為標題、用于列出聯系人的側邊欄以及用于存放所有聯系信息的主要內容區域。內容區域當前包含一個占位符。在正文的末尾,我們還包含來自 CDN 的最新版本的 htmx 庫。Ckv28資訊網——每日最新資訊28at.com

該模板期望接收一個聯系人數組(在 contacts 變量中),我們在側邊欄中對其進行迭代,并使用 Pug 的插值語法在無序列表中輸出每個聯系人姓名。Ckv28資訊網——每日最新資訊28at.com

接下來,讓我們創建自定義樣式表:Ckv28資訊網——每日最新資訊28at.com

mkdir publictouch public/styles.css

我不想在這里列出樣式。請從隨附的 GitHub 存儲庫中的 CSS 文件[5]中復制它們,或者隨意添加一些您自己的 CSS 文件。

本文鏈接:http://www.www897cc.com/showinfo-26-78654-0.html使用 Node.js 和 htmx 構建全棧 CRUD 應用程序

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Vue 的 style 加了 scoped 也會樣式沖突?可怕!

下一篇: 探秘Spring Contract:如何保障您的API符合預期?

標簽:
  • 熱門焦點
  • 一加Ace2 Pro官宣:普及16G內存 引領24G

    一加官方今天繼續為本月發布的新機一加Ace2 Pro帶來預熱,公布了內存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引領,還有呢?#一加Ace2Pro#,2023 年 8 月,敬請期待。”同時
  • 官方承諾:K60至尊版將會首批升級MIUI 15

    全新的MIUI 15今天也有了消息,在官宣了K60至尊版將會搭載天璣9200+處理器和獨顯芯片X7的同時,Redmi給出了官方承諾,K60至尊重大更新首批升級,會首批推送MIUI 15。也就是說雖然
  • 十個簡單但很有用的Python裝飾器

    裝飾器(Decorators)是Python中一種強大而靈活的功能,用于修改或增強函數或類的行為。裝飾器本質上是一個函數,它接受另一個函數或類作為參數,并返回一個新的函數或類。它們通常用
  • JavaScript學習 -AES加密算法

    引言在當今數字化時代,前端應用程序扮演著重要角色,用戶的敏感數據經常在前端進行加密和解密操作。然而,這樣的操作在網絡傳輸和存儲中可能會受到惡意攻擊的威脅。為了確保數據
  • 破圈是B站頭上的緊箍咒

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之每年的暑期檔都少不了瞄準追劇女孩們的古偶劇集,2021年有優酷的《山河令》,2022年有愛奇藝的《蒼蘭訣》,今年卻輪到小破站抓住了追
  • 消費結構調整丨巨頭低價博弈,拼多多還卷得動嗎?

    來源:征探財經作者:陳香羽隨著流量紅利的退潮,電商的存量博弈越來越明顯。曾經主攻中高端與品質的淘寶天貓、京東重拾“低價”口號。而過去與他們錯位競爭的拼多多,靠
  • 華為發布HarmonyOS 4:更好玩、更流暢、更安全

    在8月4日的華為開發者大會2023(HDC.Together)大會上,HarmonyOS 4正式發布。自2019年發布以來,HarmonyOS一直以用戶為中心,經歷四年多的發展HarmonyOS已
  • 三星折疊屏手機去年銷售近1000萬臺 今年目標定為1500萬

    7月29日消息,三星率先發力可折疊手機市場,在全球市場已經取得了非常亮眼的成績,接下來會進一步鞏固和擴大這一優勢。三星在推出Galaxy Z Flip5和Galax
  • 引領旗艦級影像能力向中端機普及 OPPO K11 系列發布 1799 元起

    7月25日,OPPO正式發布K系列新品—— OPPO K11 。此次 K11 在中端手機市場長期被忽視的影像板塊發力,突破性地搭載索尼 IMX890 旗艦大底主攝,支持 OIS
Top 主站蜘蛛池模板: 昌图县| 平顺县| 宽城| 永安市| 十堰市| 保定市| 祁阳县| 环江| 呈贡县| 延津县| 敦化市| 利辛县| 景东| 云和县| 雷波县| 西和县| 塘沽区| 靖宇县| 泗洪县| 长泰县| 阳朔县| 资阳市| 伊宁市| 景谷| 洛川县| 大田县| 齐齐哈尔市| 应用必备| 枣强县| 新和县| 宝兴县| 北碚区| 横峰县| 盖州市| 文山县| 邵武市| 隆安县| 伊吾县| 曲阜市| 元朗区| 营口市|