Tạo và chạy dự án Hapi.js
Hapi.js là gì?
Hapi.js là một framework mạnh mẽ, linh hoạt của Node.js dùng để xây dựng ứng dụng và dịch vụ. Được tạo ra bởi Walmart Labs, nó nổi tiếng với hệ thống plugin và các tính năng phong phú. Hapi.js cung cấp một cách tiếp cận đơn giản để xử lý các yêu cầu và phản hồi HTTP, giúp các nhà phát triển xây dựng ứng dụng web và API hiệu suất cao một cách hiệu quả.
Những đặc điểm và lợi ích chính của Hapi.js
- Hệ thống plugin: Hapi.js có một hệ thống plugin mạnh mẽ, dễ dàng mở rộng và tái sử dụng mã nguồn.
- Hệ thống định tuyến: Cung cấp các chức năng định tuyến linh hoạt và mạnh mẽ.
- Xác thực đầu vào: Được tích hợp các chức năng xác thực đầu vào mạnh mẽ, đảm bảo tính toàn vẹn và an toàn của dữ liệu.
- Hệ sinh thái phong phú: Có nhiều plugin và sự hỗ trợ từ cộng đồng, đáp ứng các nhu cầu chức năng thông thường.
- Tính bảo mật: Tích hợp nhiều tính năng bảo mật như ngăn chặn giả mạo yêu cầu liên trang (CSRF) và tấn công kịch bản liên trang (XSS).
Sử dụng Hapi.js giúp các nhà phát triển nhanh chóng xây dựng ứng dụng web và API hiệu suất cao và an toàn.
Tạo và chạy dự án Hapi.js với ServBay
Trong bài viết này, chúng ta sẽ sử dụng môi trường Node.js do ServBay cung cấp để tạo và chạy một dự án Hapi.js. Chúng ta sẽ sử dụng tính năng 'Host' của ServBay để cài đặt máy chủ web và truy cập dự án thông qua proxy ngược.
Tạo dự án Hapi.js
Khởi tạo dự án
Trước hết, hãy đảm bảo bạn đã cài đặt môi trường Node.js do ServBay cung cấp. Sau đó, tạo một dự án Hapi.js mới trong thư mục gốc website do ServBay đề xuất
/Applications/ServBay/www
:bashcd /Applications/ServBay/www mkdir servbay-hapi-app cd servbay-hapi-app npm init -y npm install @hapi/hapi
1
2
3
4
5Tạo file ứng dụng
Tạo một file
server.js
trong thư mục gốc của dự án và thêm đoạn mã sau: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
Chuyển sang chế độ phát triển
Chạy máy chủ phát triển
Khởi động máy chủ phát triển và chỉ định cổng (ví dụ: 8585):
bashPORT=8585 node server.js
1Điều này sẽ khởi chạy một máy chủ phát triển cục bộ và mở cổng 8585.
Cấu hình proxy ngược Host của ServBay
Sử dụng tính năng 'Host' của ServBay để truy cập máy chủ phát triển qua proxy ngược. Trong cài đặt 'Host' của ServBay, thêm một proxy ngược mới:
- Tên:
My first Hapi.js dev site
- Tên miền:
servbay-hapi-test.dev
- Loại host:
Proxy ngược
- IP:
127.0.0.1
- Cổng:
8585
Để biết chi tiết các bước thiết lập, xin vui lòng tham khảo thêm website phát triển Nodejs.
- Tên:
Truy cập chế độ phát triển
Mở trình duyệt và truy cập
https://servbay-hapi-test.dev
để xem dự án theo thời gian thực. Vì ServBay hỗ trợ tên miền tuỳ chỉnh và chứng chỉ SSL miễn phí, bạn sẽ được tận hưởng mức độ bảo mật cao hơn.
Triển khai phiên bản sản xuất
Chuẩn bị môi trường sản xuất
Đảm bảo rằng dự án của bạn có thể chạy bình thường trong môi trường sản xuất. Thông thường, dự án Hapi.js không cần các bước xây dựng đặc biệt, nhưng bạn có thể cần cài đặt một số biến môi trường hoặc thực hiện các cấu hình khác.
Chạy máy chủ sản xuất
Khởi động máy chủ sản xuất và chỉ định cổng (ví dụ: 8586):
bashPORT=8586 NODE_ENV=production node server.js
1Cấu hình proxy ngược Host của ServBay
Sử dụng tính năng 'Host' của ServBay để truy cập máy chủ sản xuất qua proxy ngược. Trong cài đặt 'Host' của ServBay, thêm một proxy ngược mới:
- Tên:
My first Hapi.js production site
- Tên miền:
servbay-hapi-test.prod
- Loại host:
Proxy ngược
- IP:
127.0.0.1
- Cổng:
8586
- Tên:
Truy cập chế độ sản xuất
Mở trình duyệt và truy cập
https://servbay-hapi-test.prod
để xem phiên bản sản xuất. Với tên miền tuỳ chỉnh và chứng chỉ SSL miễn phí của ServBay, website của bạn sẽ có mức độ bảo mật và uy tín cao hơn.
Kết nối cơ sở dữ liệu
ServBay cung cấp hỗ trợ cho các cơ sở dữ liệu Redis, MariaDB, PostgreSQL và MongoDB. Dưới đây là một số ví dụ về cách kết nối các cơ sở dữ liệu này.
Kết nối MongoDB
Cài đặt
@hapi/nes
vàmongoose
:bashnpm install mongoose
1Sau đó, kết nối trong dự án:
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
5Kết nối Redis
Cài đặt
redis
:bashnpm install redis
1Sau đó, kết nối trong dự án:
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
10Kết nối MariaDB
Cài đặt
mariadb
:bashnpm install mariadb
1Sau đó, kết nối trong dự án:
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
16Kết nối PostgreSQL
Cài đặt
pg
:bashnpm install pg
1Sau đó, kết nối trong dự án:
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
Bằng các bước trên, bạn đã thành công trong việc tạo và chạy một dự án Hapi.js, sử dụng các chức năng do ServBay cung cấp để quản lý và truy cập vào dự án của bạn, cùng với việc kết nối nhiều cơ sở dữ liệu khác nhau.