創建並運行 Hapi.js 專案
什麼是 Hapi.js?
Hapi.js 是一個用於構建應用程序和服務的強大、靈活的 Node.js 框架。它由 Walmart Labs 創建,並且以其插件系統和豐富的功能而著稱。Hapi.js 提供了一種簡潔的方法來處理 HTTP 請求和響應,使得開發者可以更高效地構建高性能的 Web 應用和 API。
Hapi.js 的主要特性和優勢
- 插件系統:Hapi.js 擁有強大的插件系統,可以輕鬆擴展和重用代碼。
- 路由系統:提供了靈活且強大的路由定義和處理功能。
- 輸入驗證:內置了強大的輸入驗證功能,確保數據的完整性和安全性。
- 豐富的生態系統:擁有豐富的插件和社群支持,涵蓋了各種常見的功能需求。
- 安全性:內置了多種安全特性,如防止跨站請求偽造(CSRF)和跨站腳本(XSS)攻擊。
使用 Hapi.js,可以幫助開發者快速構建高性能和安全的 Web 應用和 API。
使用 ServBay 創建並運行 Hapi.js 專案
在這篇文章中,我們將使用 ServBay 提供的 Node.js 環境來創建並運行一個 Hapi.js 專案。我們將使用 ServBay 的『主機』功能來設置 Web 伺服器,並通過反向代理來實現專案的訪問。
創建 Hapi.js 專案
初始化專案
首先,確保您已經安裝了 ServBay 提供的 Node.js 環境。然後,在 ServBay 建議的網站根目錄
/Applications/ServBay/www
中創建一個新的 Hapi.js 專案:bashcd /Applications/ServBay/www mkdir servbay-hapi-app cd servbay-hapi-app npm init -y npm install @hapi/hapi
1
2
3
4
5創建應用文件
在專案根目錄下創建一個
server.js
文件,並添加以下代碼:javascriptconst Hapi = require('@hapi/hapi'); const init = async () => { const server = Hapi.server({ port: process.env.PORT || 3000, host: 'localhost' }); server.route({ method: 'GET', path: '/', handler: (request, h) => { return 'Hello ServBay!'; } }); await server.start(); console.log('Server running on %s', server.info.uri); }; process.on('unhandledRejection', (err) => { console.log(err); process.exit(1); }); init();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
進入開發模式
運行開發伺服器
啟動開發伺服器並指定端口(例如:8585):
bashPORT=8585 node server.js
1這將會在本地啟動一個開發伺服器,並暴露端口 8585。
配置 ServBay 主機反向代理
使用 ServBay 的『主機』功能,通過反向代理來訪問開發伺服器。在 ServBay 的『主機』設置中,添加一個新的反向代理:
- 名字:
My first Hapi.js dev site
- 域名:
servbay-hapi-test.dev
- 主機類型:
反向代理
- IP:
127.0.0.1
- 端口:
8585
詳細設置步驟請參考添加Nodejs開發的網站。
- 名字:
訪問開發模式
打開瀏覽器,訪問
https://servbay-hapi-test.dev
,實時查看專案。由於 ServBay 支持自定義域名以及免費的 SSL 證書,您將享受到更高的安全性。
部署生產版本
準備生產環境
確保您的專案在生產環境中可以正常運行。通常,Hapi.js 專案不需要特別的構建步驟,但您可能需要設置一些環境變量或進行其他配置。
運行生產伺服器
啟動生產伺服器並指定端口(例如:8586):
bashPORT=8586 NODE_ENV=production node server.js
1配置 ServBay 主機反向代理
使用 ServBay 的『主機』功能,通過反向代理來訪問生產伺服器。在 ServBay 的『主機』設置中,添加一個新的反向代理:
- 名字:
My first Hapi.js production site
- 域名:
servbay-hapi-test.prod
- 主機類型:
反向代理
- IP:
127.0.0.1
- 端口:
8586
- 名字:
訪問生產模式
打開瀏覽器,訪問
https://servbay-hapi-test.prod
,查看生產版本。通過 ServBay 的自定義域名和免費的 SSL 證書,您的網站將具有更高的安全性和可信度。
數據庫連接
ServBay 提供了 Redis、MariaDB、PostgreSQL 和 MongoDB 數據庫支持。以下是如何連接這些數據庫的示例。
連接 MongoDB
安裝
@hapi/nes
和mongoose
:bashnpm install mongoose
1然後在專案中引入並連接:
javascriptconst mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/servbay-hapi-app', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('MongoDB connected')) .catch(err => console.log(err));
1
2
3
4
5連接 Redis
安裝
redis
:bashnpm install redis
1然後在專案中引入並連接:
javascriptconst redis = require('redis'); const client = redis.createClient(); client.on('error', function (err) { console.log('Error ' + err); }); client.on('connect', function () { console.log('Redis client connected'); });
1
2
3
4
5
6
7
8
9
10連接 MariaDB
安裝
mariadb
:bashnpm install mariadb
1然後在專案中引入並連接:
javascriptconst mariadb = require('mariadb'); const pool = mariadb.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'servbay_hapi_app' }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB"); conn.release(); //release to pool }) .catch(err => { console.log("Not connected due to error: " + err); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16連接 PostgreSQL
安裝
pg
:bashnpm install pg
1然後在專案中引入並連接:
javascriptconst { Pool } = require('pg'); const pool = new Pool({ user: 'user', host: 'localhost', database: 'servbay_hapi_app', password: 'password', port: 5432, }); pool.connect((err, client, done) => { if (err) throw err; console.log('Connected to PostgreSQL'); done(); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
通過以上步驟,您成功創建並運行了一個 Hapi.js 專案,並使用 ServBay 提供的功能來管理和訪問您的專案,同時連接了多種數據庫。