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

當(dāng)前位置:首頁 > 科技  > 軟件

使用 Node.js 和 htmx 構(gòu)建全棧 CRUD 應(yīng)用程序

來源: 責(zé)編: 時間:2024-03-22 17:42:13 217觀看
導(dǎo)讀htmx 是一個現(xiàn)代 JavaScript 庫,旨在通過實現(xiàn)部分 HTML 更新來增強 Web 應(yīng)用,而無需重新加載整個頁面。與傳統(tǒng)前端框架中的 JSON 有效載荷不同,它通過有線方式發(fā)送 HTML 來實現(xiàn)這一功能。我們將要構(gòu)建什么我們將開發(fā)一個

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

我們將要構(gòu)建什么

我們將開發(fā)一個簡單的聯(lián)系人管理器,能夠執(zhí)行所有 CRUD 操作:創(chuàng)建、讀取、更新和刪除聯(lián)系人。通過利用 htmx,該應(yīng)用程序?qū)⑻峁﹩雾搼?yīng)用程序 (SPA) 的感覺,從而增強交互性和用戶體驗。Bld28資訊網(wǎng)——每日最新資訊28at.com

如果用戶禁用 JavaScript,應(yīng)用程序?qū)⒁哉撍⑿碌姆绞竭\行,從而保持可用性和可發(fā)現(xiàn)性。這種方法展示了 htmx 創(chuàng)建現(xiàn)代 Web 應(yīng)用程序的能力,同時保持它們的可訪問性和 SEO 友好性。Bld28資訊網(wǎng)——每日最新資訊28at.com

這就是我們最終得到的結(jié)果。Bld28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Bld28資訊網(wǎng)——每日最新資訊28at.com

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

先決條件

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

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

在開始之前,請運行以下命令:Bld28資訊網(wǎng)——每日最新資訊28at.com

node -vnpm -v

您應(yīng)該看到如下輸出:Bld28資訊網(wǎng)——每日最新資訊28at.com

v20.11.110.4.0

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

設(shè)置項目

讓我們從搭建一個新的 Node 項目開始:Bld28資訊網(wǎng)——每日最新資訊28at.com

mkdir contact-managercd contact-managernpm init -y

這應(yīng)該在項目根目錄中創(chuàng)建一個 package.json 文件。Bld28資訊網(wǎng)——每日最新資訊28at.com

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

npm i express method-override pug

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

接下來,在根目錄中創(chuàng)建一個 app.js 文件:Bld28資訊網(wǎng)——每日最新資訊28at.com

touch app.js

并添加以下內(nèi)容:Bld28資訊網(wǎng)——每日最新資訊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}`);});

在這里,我們正在設(shè)置 Express 應(yīng)用程序的結(jié)構(gòu)。這包括將 Pug 配置為渲染視圖的視圖引擎、定義靜態(tài)資產(chǎn)的目錄以及連接路由器。Bld28資訊網(wǎng)——每日最新資訊28at.com

該應(yīng)用程序偵聽端口 3000,并使用控制臺日志來確認 Express 正在運行并準(zhǔn)備好處理指定端口上的請求。此設(shè)置構(gòu)成了我們應(yīng)用程序的基礎(chǔ),并準(zhǔn)備好通過更多功能和路由進行擴展。Bld28資訊網(wǎng)——每日最新資訊28at.com

接下來,讓我們創(chuàng)建路由文件:Bld28資訊網(wǎng)——每日最新資訊28at.com

mkdir routestouch routes/index.js

打開該文件并添加以下內(nèi)容:Bld28資訊網(wǎng)——每日最新資訊28at.com

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

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

接下來,使用以下內(nèi)容更新 package.json 文件的“scripts”部分:Bld28資訊網(wǎng)——每日最新資訊28at.com

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

這利用了 Node.js 中的新監(jiān)視模式,只要檢測到任何更改,該模式就會重新啟動我們的應(yīng)用程序。Bld28資訊網(wǎng)——每日最新資訊28at.com

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

圖片圖片Bld28資訊網(wǎng)——每日最新資訊28at.com

激動人心的時刻!Bld28資訊網(wǎng)——每日最新資訊28at.com

顯示所有聯(lián)系人

現(xiàn)在讓我們添加一些要顯示的聯(lián)系人。由于我們專注于 htmx,因此為了簡單起見,我們將使用硬編碼數(shù)組。這將使事情變得精簡,使我們能夠?qū)W⒂?htmx 的動態(tài)功能,而無需復(fù)雜的數(shù)據(jù)庫集成。Bld28資訊網(wǎng)——每日最新資訊28at.com

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

話雖如此,請將以下內(nèi)容添加到第一個路由之前的 index.js 中:Bld28資訊網(wǎng)——每日最新資訊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' },];

現(xiàn)在,我們需要為路由創(chuàng)建一個顯示模板。創(chuàng)建一個包含 index.pug 文件的 views 文件夾:Bld28資訊網(wǎng)——每日最新資訊28at.com

mkdir viewstouch views/index.pug

并添加以下內(nèi)容:Bld28資訊網(wǎng)——每日最新資訊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')

在此模板中,我們?yōu)閼?yīng)用程序布置 HTML 結(jié)構(gòu)。在 head 部分,我們包含了來自 Google Fonts 的 Roboto 字體和自定義樣式的樣式表。Bld28資訊網(wǎng)——每日最新資訊28at.com

正文分為標(biāo)題、用于列出聯(lián)系人的側(cè)邊欄以及用于存放所有聯(lián)系信息的主要內(nèi)容區(qū)域。內(nèi)容區(qū)域當(dāng)前包含一個占位符。在正文的末尾,我們還包含來自 CDN 的最新版本的 htmx 庫。Bld28資訊網(wǎng)——每日最新資訊28at.com

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

接下來,讓我們創(chuàng)建自定義樣式表:Bld28資訊網(wǎng)——每日最新資訊28at.com

mkdir publictouch public/styles.css

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

本文鏈接:http://www.www897cc.com/showinfo-26-78654-0.html使用 Node.js 和 htmx 構(gòu)建全棧 CRUD 應(yīng)用程序

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

上一篇: Vue 的 style 加了 scoped 也會樣式?jīng)_突?可怕!

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

標(biāo)簽:
  • 熱門焦點
  • 8月總票房已突破10億!《封神》第一:口碑已經(jīng)成了

    8月5日消息,據(jù)燈塔專業(yè)版數(shù)據(jù),截至8月5日9時35分,8月總票房(含預(yù)售)已突破10億。其中,《封神》以大比分的優(yōu)勢領(lǐng)先。根據(jù)官方消息,目前該片總票房已經(jīng)超過14.
  • CSS單標(biāo)簽實現(xiàn)轉(zhuǎn)轉(zhuǎn)logo

    轉(zhuǎn)轉(zhuǎn)品牌升級后更新了全新的Logo,今天我們用純CSS來實現(xiàn)轉(zhuǎn)轉(zhuǎn)的新Logo,為了有一定的挑戰(zhàn)性,這里我們只使用一個標(biāo)簽實現(xiàn),將最大化的使用CSS能力完成Logo的繪制與動畫效果。新logo
  • 把LangChain跑起來的三個方法

    使用LangChain開發(fā)LLM應(yīng)用時,需要機器進行GLM部署,好多同學(xué)第一步就被勸退了,那么如何繞過這個步驟先學(xué)習(xí)LLM模型的應(yīng)用,對Langchain進行快速上手?本片講解3個把LangChain跑起來
  • 一篇聊聊Go錯誤封裝機制

    %w 是用于錯誤包裝(Error Wrapping)的格式化動詞。它是用于 fmt.Errorf 和 fmt.Sprintf 函數(shù)中的一個特殊格式化動詞,用于將一個錯誤(或其他可打印的值)包裝在一個新的錯誤中。使
  • Python異步IO編程的進程/線程通信實現(xiàn)

    這篇文章再講3種方式,同時講4中進程間通信的方式一、 Python 中線程間通信的實現(xiàn)方式共享變量共享變量是多個線程可以共同訪問的變量。在Python中,可以使用threading模塊中的L
  • 10天營收超1億美元,《星鐵》比《原神》差在哪?

    來源:伯虎財經(jīng)作者:陳平安即便你沒玩過《原神》,你一定聽說過的它的大名。恨它的人把《原神》開服那天稱作是中國游戲史上最黑暗的一天,有粉絲因為索尼在PS平臺上線《原神》,怒而
  • 華為Mate60系列模具曝光:采用碩大圓形后置相機模組+拼接配色方案

    據(jù)此前多方爆料,今年華為將開始恢復(fù)一年雙旗艦戰(zhàn)略,除上半年推出的P60系列外,往年下半年的Mate系列也將迎來更新,有望在9-10月份帶來全新的華為Mate60
  • 聯(lián)想小新Pad Pro 12.6將要推出,搭載高通驍龍 870 處理器

    聯(lián)想小新Pad Pro 12.6將于秋季新品會上推出,官方按照慣例直接在發(fā)布會前給出了機型的所有參數(shù)。聯(lián)想小新 Pad Pro 12.6 將搭載高通驍龍 870 處理器,重量為 5
  • 三翼鳥智能家居亮相電博會,讓用戶體驗更真實

    2021電博會在青島國際會展中心開幕中,三翼鳥直接把“家”搬到了現(xiàn)場,成為了展會的一大看點。這也是三翼鳥繼9月9日發(fā)布了行業(yè)首個一站式定制智慧家平臺后的
Top 主站蜘蛛池模板: 特克斯县| 井冈山市| 崇义县| 介休市| 洛隆县| 聂拉木县| 三都| 读书| 赫章县| 靖江市| 汤原县| 大洼县| 会宁县| 青神县| 石河子市| 雷州市| 塘沽区| 上饶县| 津市市| 石家庄市| 郸城县| 屏山县| 綦江县| 扎兰屯市| 博爱县| 沙洋县| 进贤县| 洪泽县| 松原市| 滦平县| 府谷县| 措美县| 望奎县| 元朗区| 孟连| 马鞍山市| 金乡县| 喜德县| 阿拉尔市| 桦甸市| 婺源县|