创建并运行 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 提供的功能来管理和访问您的项目,同时连接了多种数据库。