Hapi.js 是 Node.js 平台上的一个 web 应用程序框架,它的设计目标是提供一种易于理解和使用的工具,帮助开发人员快速创建可靠的 web 应用程序。
本篇文章将为大家提供 Hapi.js 的入门指南,帮助大家了解如何使用它来构建一个简单的 web 应用程序。以下是我们将要涉及到的主题:
- 安装和配置 Hapi.js
- 创建路由和处理程序
- 使用插件扩展 Hapi.js
- 设置静态文件服务
- 处理错误和异常
安装和配置 Hapi.js
要使用 Hapi.js,首先需要安装 Node.js 和 npm。然后,在项目目录下执行以下命令来安装 Hapi.js:
npm install hapi
安装完成后,在应用程序的入口文件中引入 Hapi.js,创建一个 Hapi.js 实例并启动它:
const Hapi = require('hapi'); const server = new Hapi.Server({ port: 3000, host: 'localhost' }); async function start() { await server.start(); console.log(`Server running at: ${server.info.uri}`); } start();
这里我们使用了 ES2017 异步函数来启动 Hapi.js 服务器,并在控制台输出启动信息。现在,打开浏览器,访问 http://localhost:3000
可以看到默认的 Hapi.js 欢迎页面。
创建路由和处理程序
在 Hapi.js 中,路由是将 URL 请求映射到对应的处理程序的机制。在上面的示例中,我们可以看到在创建 Hapi.js 实例时,指定了服务器的端口号和主机名,这就是我们将要监听的地址。
现在,我们可以开始创建我们的第一个路由。使用 server.route()
方法来定义路由和对应的处理程序:
server.route({ method: 'GET', path: '/', handler: (request, h) => { return 'Hello, Hapi.js!'; } });
在这里,我们定义了根路由 /
,并指定了 GET 请求的处理程序。处理程序是一个异步函数,我们从 request
参数中获取了请求相关的信息,从 h
参数中获取了 Hapi.js 工具集,最后返回了一个字符串作为响应内容。
在浏览器中访问根路由时,将看到以下内容:
Hello, Hapi.js!
使用插件扩展 Hapi.js
Hapi.js 支持使用插件来扩展其功能。可以使用 server.register()
方法向应用程序添加插件:
const Vision = require('vision'); const Handlebars = require('handlebars'); await server.register(Vision); server.views({ engines: { html: Handlebars }, relativeTo: __dirname, path: 'views' }); server.route({ method: 'GET', path: '/hello/{name}', handler: (request, h) => { const name = request.params.name || 'World'; return h.view('hello', { name }); } });
在这里,我们使用了两个插件:Vision 和 Handlebars。Vision 是一个 Hapi.js 插件,用于呈现视图。Handlebars 是一个 JavaScript 模板引擎,用于呈现 HTML。
在加载插件后,我们使用 server.views()
方法来定义视图引擎。然后,我们创建了一个 HELLO
路由,它将接受一个名为 name
的参数,并使用 Handlebars 视图引擎将其呈现为一个 HTML 页面。访问 http://localhost:3000/hello/Jane
时,将看到以下内容:
Hello, Jane!
设置静态文件服务
Hapi.js 也支持为应用程序提供静态文件服务。可以使用 inert
插件来实现这一功能:
const Inert = require('inert'); await server.register(Inert); server.route({ method: 'GET', path: '/public/{param*}', handler: { directory: { path: 'public' } } });
我们使用 server.register()
方法加载 inert
插件,然后创建一个路由,它将匹配所有的 /public/*
请求,并返回一个指定目录下的静态文件。
在本例中,我们将网站的静态文件放在了 public
目录下,访问 http://localhost:3000/public/index.html
时,将看到网站的首页。
处理错误和异常
在应用程序开发中,错误和异常处理是非常重要的一环。对于 Hapi.js 应用程序,可以使用 h
工具集中提供的方法来处理异常和错误。例如:
server.ext('onPreResponse', (request, h) => { const response = request.response; if (response.isBoom) { console.log(`An error occurred: ${response.output.statusCode} - ${response.output.payload.message}`); } return h.continue; });
在这里,我们使用 server.ext()
方法注册了一个前置处理程序,它将在返回响应之前执行。在处理程序中,如果响应是一个 Boom 对象,则将抛出一个错误并输出错误信息。通过这种方式,我们可以在发生错误的情况下保证应用程序的稳定性,避免出现未处理的异常。
总结
通过本文,我们了解了 Hapi.js 的基本使用方式,包括安装和配置、创建路由和处理程序、使用插件扩展 Hapi.js、设置静态文件服务以及处理错误和异常。我们希望本篇文章能对大家有所帮助,在使用 Hapi.js 时更加自信和有效。完整示例代码可以参考以下链接:
https://github.com/hapijs/hapi
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65935247eb4cecbf2d803219