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

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

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

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

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

我們將要構建什么

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

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

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

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

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

先決條件

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

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

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

node -vnpm -v

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

v20.11.110.4.0

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

設置項目

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

mkdir contact-managercd contact-managernpm init -y

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

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

npm i express method-override pug

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

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

touch app.js

并添加以下內容:Q1928資訊網——每日最新資訊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 配置為渲染視圖的視圖引擎、定義靜態資產的目錄以及連接路由器。Q1928資訊網——每日最新資訊28at.com

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

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

mkdir routestouch routes/index.js

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

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

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

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

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

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

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

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

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

顯示所有聯系人

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

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

話雖如此,請將以下內容添加到第一個路由之前的 index.js 中:Q1928資訊網——每日最新資訊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 文件夾:Q1928資訊網——每日最新資訊28at.com

mkdir viewstouch views/index.pug

并添加以下內容:Q1928資訊網——每日最新資訊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 字體和自定義樣式的樣式表。Q1928資訊網——每日最新資訊28at.com

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

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

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

mkdir publictouch public/styles.css

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

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

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

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

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

標簽:
  • 熱門焦點
  • Redmi Pad評測:紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍牙耳機到筆記本電腦,紅米不知不覺之間也已經形成了自己頗有競爭力的產品體系,在中端和次旗艦市場上甚至要比小米新機的表現來得更好,正所謂“大丈夫生居
  • 三言兩語說透設計模式的藝術-單例模式

    寫在前面單例模式是一種常用的軟件設計模式,它所創建的對象只有一個實例,且該實例易于被外界訪問。單例對象由于只有一個實例,所以它可以方便地被系統中的其他對象共享,從而減少
  • 量化指標是與非:挽救被量化指標扼殺的技術團隊

    作者 | 劉新翠整理 | 徐杰承本文整理自快狗打車技術總監劉新翠在WOT2023大會上的主題分享,更多精彩內容及現場PPT,請關注51CTO技術棧公眾號,發消息【WOT2023PPT】即可直接領取
  • 虛擬鍵盤 API 的妙用

    你是否在遇到過這樣的問題:移動設備上有一個固定元素,當激活虛擬鍵盤時,該元素被隱藏在了鍵盤下方?多年來,這一直是 Web 上的默認行為,在本文中,我們將探討這個問題、為什么會發生
  • JVM優化:實戰OutOfMemoryError異常

    一、Java堆溢出堆內存中主要存放對象、數組等,只要不斷地創建這些對象,并且保證 GC Roots 到對象之間有可達路徑來避免垃 圾收集回收機制清除這些對象,當這些對象所占空間超過
  • “又被陳思誠騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國產懸疑電影,成了陳思誠的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠再度風頭無兩。你可以說陳思誠的
  • ESG的面子與里子

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之三伏大幕拉起,各地高溫預警不絕,但處于厄爾尼諾大“烤”之下的除了眾生,還有各大企業發布的ESG報告。ESG是“環境保
  • 當家的盒馬,加速謀生

    來源 | 價值星球Planet作者 | 歸去來自己“當家”的盒馬,開始加速謀生了。據盒馬官微消息,盒馬計劃今年開放生鮮供應鏈,將其生鮮商品送往食堂。目前,盒馬在上海已經與
  • 蘋果140W USB-C充電器:采用氮化鎵技術

    據10 月 30 日 9to5 Mac 消息報道,當蘋果推出新的 MacBook Pro 2021 時,該公司還推出了新的 140W USB-C 充電器,附贈在 MacBook Pro 16 英寸機型的盒子里,也支
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲成人原创| 国产精品视频一区二区高潮| 免费久久99精品国产| 欧美高清自拍一区| 欧美日韩一区二区三区免费看| 国产精品爱久久久久久久| 国产伦精品一区二区三区| 国产真实乱子伦精品视频| 91久久精品国产| 亚洲精品中文字幕有码专区| 亚洲一区国产| 久久九九99视频| 欧美激情中文不卡| 国产精品久久久久久影视| 加勒比av一区二区| 一本大道av伊人久久综合| 欧美一区二区三区四区夜夜大片| 老鸭窝91久久精品色噜噜导演| 欧美日韩福利| 国产亚洲一区二区三区在线观看| 亚洲国产精品一区二区www在线| 中文在线一区| 久久网站免费| 国产精品久久久久久久app| 在线观看成人av| 亚洲午夜精品久久| 免费的成人av| 国产欧美日韩亚洲| 亚洲精品欧洲| 久久精品在线免费观看| 欧美调教vk| 亚洲福利av| 香蕉久久夜色精品国产| 欧美理论电影在线播放| 国产自产v一区二区三区c| 一区二区三欧美| 久久久午夜精品| 国产精品国产三级国产普通话99| 在线免费观看视频一区| 午夜久久99| 欧美日韩国产二区| 狠狠色狠狠色综合人人| 亚洲免费视频一区二区| 欧美另类一区| 亚洲大胆女人| 久久国产天堂福利天堂| 国产精品二区在线| 亚洲精品乱码久久久久久久久 | 亚洲美女av黄| 久久久噜噜噜久久中文字幕色伊伊| 欧美午夜视频网站| 亚洲人成在线观看| 久久亚洲欧美国产精品乐播| 国产视频精品xxxx| 亚洲砖区区免费| 欧美日韩在线播放三区| 亚洲欧洲在线播放| 久久人人97超碰国产公开结果| 国产精品视频午夜| 亚洲午夜激情免费视频| 欧美日韩三级电影在线| 亚洲国产三级| 蜜桃av久久久亚洲精品| 国内揄拍国内精品少妇国语| 亚洲欧美一区二区三区在线| 欧美日韩在线视频一区二区| 亚洲久久成人| 欧美激情亚洲精品| 亚洲人精品午夜在线观看| 免费国产一区二区| 影音国产精品| 久久久欧美精品| 国内精品久久久久久久影视麻豆| 欧美一区二区啪啪| 国产欧美日韩视频| 欧美在现视频| 国产亚洲精品成人av久久ww| 欧美一区二区三区在线观看视频| 国产精品日本一区二区| 亚洲欧美成人精品| 国产精品社区| 欧美专区亚洲专区| 国产一区二区黄色| 久久精品一区二区三区中文字幕| 国产一区av在线| 久久久91精品国产| 伊人成人网在线看| 免费在线播放第一区高清av| 亚洲黄色精品| 欧美母乳在线| 亚洲视频电影在线| 国产精品视频导航| 欧美一区二区三区四区在线观看| 国产亚洲二区| 老司机午夜精品视频| 亚洲国产精品久久久久秋霞不卡 | 欧美色欧美亚洲另类七区| 一区二区三区视频在线看| 欧美三区在线观看| 亚洲欧美精品在线| 国产视频一区三区| 久久久综合网站| 亚洲国产精品成人| 欧美美女操人视频| 亚洲一区二区三区三| 国产欧美精品va在线观看| 久久精品国产欧美激情| 在线免费精品视频| 欧美精品在线免费播放| 亚洲网站啪啪| 国产亚洲一级| 欧美激情小视频| 亚洲午夜在线视频| 国产一区二区三区日韩欧美| 老司机精品久久| 99在线观看免费视频精品观看| 欧美视频中文字幕| 欧美伊人久久大香线蕉综合69| 在线国产精品播放| 欧美日韩国产综合新一区| 午夜精品久久久| 一区免费视频| 欧美日韩成人一区二区| 午夜精品久久久久久久白皮肤| 影音欧美亚洲| 欧美性事在线| 久久久综合精品| 亚洲免费观看视频| 国产精品永久免费| 欧美aa在线视频| 亚洲一区二区在线播放| 狠狠色香婷婷久久亚洲精品| 欧美日韩福利视频| 欧美一区国产二区| 亚洲精品免费网站| 国产婷婷色综合av蜜臀av| 欧美成人在线免费观看| 亚洲欧美激情在线视频| 在线观看欧美| 国产精品欧美风情| 美女视频网站黄色亚洲| 亚洲一区二区免费在线| 今天的高清视频免费播放成人| 欧美日韩国产一级片| 久久se精品一区精品二区| 日韩视频一区二区| 国内精品久久久久影院薰衣草| 欧美日韩一二三四五区| 久久久久免费视频| 亚洲手机视频| 亚洲激情专区| 国产日韩欧美在线播放| 欧美日韩精品欧美日韩精品| 久久久久久欧美| 亚洲淫性视频| 亚洲精品久久久一区二区三区| 国产一区久久| 国产精品啊啊啊| 欧美激情乱人伦| 久久久久久网址| 亚洲欧美国产高清va在线播| 亚洲精品乱码久久久久久按摩观| 国模精品一区二区三区色天香| 国产精品v欧美精品v日韩精品| 免费亚洲视频| 久久爱www久久做| 亚洲无线视频| 亚洲麻豆视频| 亚洲高清毛片| 国产一区二区精品在线观看| 国产精品video| 欧美日韩中文在线| 欧美国产日本韩| 久久久精品一区| 欧美尤物一区| 亚洲一卡二卡三卡四卡五卡| 日韩亚洲欧美在线观看| 亚洲黄色小视频| 伊人久久大香线蕉av超碰演员| 国产情人综合久久777777| 欧美日韩一区二区三区在线观看免| 欧美va日韩va| 麻豆freexxxx性91精品| 久久九九99| 久久国产精品72免费观看| 午夜精品视频在线观看| 亚洲一区二区在线观看视频| 在线视频欧美一区| 一区二区三区精品国产| 一区二区国产日产| 99视频精品全部免费在线| 日韩亚洲视频| 日韩亚洲精品在线| 日韩一二三区视频| 日韩一级免费观看| 亚洲免费福利视频| 日韩亚洲欧美成人| 99热在这里有精品免费| 亚洲免费大片| 国产精品99久久久久久久久| 国产精品99久久久久久人| 一本大道久久a久久综合婷婷| 9i看片成人免费高清| 亚洲视频在线观看网站|