AdonisJS 框架教程:构建全栈 Web 应用程序

简介: AdonisJS 框架教程:构建全栈 Web 应用程序

AdonisJs是什么?

AdonisJs 是一个基于 Laravel 的 Node.js 框架。它实现了依赖注入和提供者的相似概念、优美的代码和直观的设计。AdonisJs 旨在为开发人员带来工作中的快乐和轻松,这就是为什么它蔑视用于全栈 Web 应用程序开发的一致且富有表现力的 API。

这个 Laravel 风格的 MVC 框架专注于创建可扩展、稳定和可扩展的 Web 应用程序的核心方面,例如:

  • 愉快的开发者体验
  • 一致的API
  • 速度和生产力
  • 支持邮件、身份验证、数据验证、Redis 等

AdonisJs 优点和缺点

让我们来看看 AdonisJs 最显着的优缺点。

优点

  • 文件夹结构:  AdonisJs 提供了一个方便的文件夹结构,可以很容易地保持井井有条。
  • 验证器:  AdonisJs 提供了一个专用的验证提供程序,可以轻松验证用户输入
  • Lucid ORM:  AdonisJs 对 MariaDB 和 MySQL 等数据库具有一流的支持。
  • ICO 和服务提供商:  AdonisJs 提供了一种通过 IOC 管理依赖项的简单方法。服务提供商可以管理生命周期依赖性。
  • 安全性:  AdonisJs 附带了一些工具来保护网站免受常见的 Web 攻击,例如跨站点伪造保护。
  • 测试:  AdonisJS 使开发人员能够编写功能单元测试来测试他们的 Web 应用程序,从而减轻了手动测试的挑战。

 缺点

  • 社区: 由于 AdonisJs 比较新且不太受欢迎,因此用户和支持社区很小。这意味着如果您遇到困难,您不太可能找到支持。
  • 文档:  AdonisJs 的文档目前不成熟,这意味着某些部分不完整。
  • 插件: 由于 AdonisJs 的受欢迎程度和年代久远,可用的插件较少
  • 未经过“实战测试”: 由于使用 AdonisJs 构建的大型网站较少,因此与其他框架相比,它尚未经过生产实战测试。

AdonisJs文件夹结构

现在我们有了一个正常运行的应用程序,让我们在开始我们的第一个应用程序之前了解更多关于它的文件结构。AdonisJs 具有 MVC 结构,可以轻松组织文件。这种结构使我们能够保持井井有条并在以后扩展文件。

复习: 模型视图控制器 (MVC) 架构由三部分组成:

  1. 模型:用于维护数据的最低级别的模式。
  2. 查看:这使用户能够查看数据。
  3. Controller:控制Model和View的软件代码。

让我们看看 AdonisJs 文件夹结构并定义一些关键术语。

网络异常,图片无法展示
|

应用程序

app 文件夹包含应用程序逻辑,包括:

  • 控制器: 它们控制逻辑流。控制器可以与路由绑定在一起。
  • 中间件: 中间件包含要在 HTTP 请求之前或之后执行的方法。
  • 模型: 这些定义了数据库模型和关系。

可以在 app 文件夹中创建更多文件夹,如 Validators、Exceptions、Helpers 和 ModelFilter。

配置

这是我们的应用程序配置存储的地方。我们也可以在这里创建我们的配置文件。

数据库

我们使用此文件夹来存储迁移、种子和工厂。

民众

这是我们放置静态文件的地方,例如图像、CSS 和 JavaScript 文件。它们将直接通过 HTTP 调用。

资源

这是我们放置视图模板和 Edge 模板文件的地方。

开始

这些文件用于加载应用程序。这也是我们可以创建 Events、Redis 和 Hooks 等文件的地方。

.env

.env 文件位于根文件夹中。它将包含与我们的工作环境相关的所有变量。开发和生产通常有不同的设置。

高手

ace 文件用于执行特定于项目的命令。

包.json

这是一个标准的 Node.js 文件。

服务器.js

该文件引导 HTTP 服务器。

创建一个基本的应用程序

现在我们已经熟悉了 AdonisJs,让我们学习如何实际制作我们的第一个应用程序。入门非常简单。首先,您必须从官方网站下载 AdonisJs,或者您现在可以跟随 Educative 的嵌入式编码小部件。

我们将从adonis可执行文件开始创建我们的第一个应用程序。在这个例子中,我们将制作一个博客应用程序。

adonis new blog
复制代码

此命令创建一个名为 blog 的新项目。接下来,我们将cd进入启动服务器的目录。

cd blog
npm run dev
复制代码

输出:

[nodemon] starting `node --harmony_proxies server.js`
info adonis:framework serving app on http://localhost:3333
复制代码

创建路线

start/routes.js文件定义了供用户访问的 URL 模式,作为 Web 应用程序的入口点。当用户请求 URL 时,Adonis 会在 中找到 URL 模式start/routes.js,因此如果模式匹配,Adonis 会处理该路由内的逻辑。

我们可以将路由与控制器绑定为逻辑处理程序,并将路由附加到中间件和验证器。

AdonisJs 提供了一个渲染视图的默认路由welcome.njk。要从头开始,我们必须先删除它。下面,我们实现了为主页和联系页面注册 2 个不同路由的代码。

'use strict'
const Route = use('Route')
Route.on('/').render('home')
Route.on('/contact').render('contact')
复制代码

创建控制器

控制器处理应用程序逻辑。它们与我们的模型、视图和助手相关联。控制器响应 HTTP 请求,因此它们不应该包含在其他文件中。

提示: 尝试将控制器重构到单独的文件中,以避免代码混乱。

'use strict'
class TestController {
 hello(){
   return 'Hello from Controller'
 }
}
module.exports = TestController
复制代码

输出:

“来自控制器的问候”

app/Controllers/Http/TestController.js文件中,我们创建了一个名为hello(). 我们在第 20 行访问控制器。TestController是控制器的名称,hello是方法的名称。

网络异常,图片无法展示
|

创建视图

视图是用户可见的组件。视图以扩展名保存在 resources/views 目录中.njk。下面,我们从上面为我们的页面创建两个视图。

./ace make:view home
./ace make:view contact
复制代码

Ace 是 Adonis 的命令行实用工具,用于制作视图、控制器和模型。

我们可以在我们创建的文件中使用 HTML 添加到我们的视图。在下面的示例中,使用 Bootstrap 进行设计。

<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" href="https://cdn.rawgit.com/twbs/bootstrap/v4-dev/dist/css/bootstrap.css">
  <link rel="stylesheet" href="/style.css">
</head>
<body>
  <div class="container">
    <div class="header clearfix">
      <nav>
        <ul class="nav nav-pills pull-xs-right">
          <li class="nav-item"><a href="/" class="nav-link">Home</a></li>
          <li class="nav-item"><a href="/about" class="nav-link">About</a></li>
          <li class="nav-item"><a href="/contact" class="nav-link">Contact</a></li>
        </ul>
        <h3 class="text-muted"> Adonis Blog </h3>
      </nav>
    </div>
    <section>
      {% block content %}{% endblock %}
    </section>
  </div>
</body>
</html>
复制代码

从那里,我们可以将基本模板扩展到其他视图并在文件中添加 CSS public/style.css

AdonisJs 应用程序的一部分

现在我们知道如何创建一个基本的应用程序,但使用 Adonis 仍然有很多问题。让我们回顾一下您需要了解的其他一些重要术语。

中间件

中间件是一组在 HTTP 请求到达路由器之前或之后运行的函数。中间件分为三种类型:

  • 服务器: 在请求到达路由器系统之前执行
  • 全局: 当路由模式匹配 URL 请求时执行。
  • named: 依附于特定路由或路由组并为之执行

中间件在文件夹内创建app/Middleware并在文件内注册start/kernel.js

网络异常,图片无法展示
|

例如,我们可以创建命名身份验证中间件,以便只有登录用户才能访问该站点。

'use strict';
class AuthRequired {
 async handle ({ auth, response }, next) {
   try {
     await auth.check()
   } catch (error) {
     return response.json({
       error: "Unauthorized access"
     })
   }
   // call next() to advance the request
   await next()
 }
}
module.exports = AuthRequired;
复制代码

请求方法

请求对象提供获取请求信息的方法。我们可以在start/route.js文件中创建到 URL 的路由。AdonisJs 使用全局中间件为任何 URL 请求创建一个请求对象。

全局中间件默认完成这个BodyParser。请求方式有很多种。下面我们列举几个:

  • request.all() :返回一个包含所有请求数据(包括查询参数和请求体数据)的对象。
  • request.get() :返回包含查询参数数据的对象。
  • request.post() :返回一个对象,其中包含来自提交表单的请求正文数据。
  • request.input(key) :返回指定键的值。


相关文章
|
20天前
|
开发框架 前端开发 JavaScript
ASP.NET Web Pages - 教程
ASP.NET Web Pages 是一种用于创建动态网页的开发模式,采用HTML、CSS、JavaScript 和服务器脚本。本教程聚焦于Web Pages,介绍如何使用Razor语法结合服务器端代码与前端技术,以及利用WebMatrix工具进行开发。适合初学者入门ASP.NET。
|
5天前
|
安全 应用服务中间件 网络安全
实战经验分享:利用免费SSL证书构建安全可靠的Web应用
本文分享了利用免费SSL证书构建安全Web应用的实战经验,涵盖选择合适的证书颁发机构、申请与获取证书、配置Web服务器、优化安全性及实际案例。帮助开发者提升应用安全性,增强用户信任。
|
22天前
|
监控 前端开发 JavaScript
使用 MERN 堆栈构建可扩展 Web 应用程序的最佳实践
使用 MERN 堆栈构建可扩展 Web 应用程序的最佳实践
29 6
|
24天前
|
存储 消息中间件 缓存
构建互联网高性能WEB系统经验总结
如何构建一个优秀的高性能、高可靠的应用系统对每一个开发者至关重要
25 2
|
28天前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
|
28天前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
36 2
|
2月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
164 3
|
1月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
174 45
|
17天前
|
前端开发 安全 JavaScript
2025年,Web3开发学习路线全指南
本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。
2025年,Web3开发学习路线全指南
|
24天前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
27 7