nodejs MVC框架:Adonisjs框架入门-001概述

Adonisjs是一个MVC结构的Nodejs后端框架,可以用来创建WEB应用、API服务,包含处理 HTTP adonisjs是一个后端mvc框架,基于nodejs,使用typescript语言编写,可以用来编写web应用、API接口、查询数据库、验证用户、上传文件、发送电子邮件等等。

Adonisjs框架与php语言的laravel、ThinkPHP框架非常相似,你如果使用过这些框架,那么会很容易上手,下面简要介绍下Adonisjs的主要功能。

官网地址:https://adonisjs.com/

github地址:https://github.com/adonisjs/core

使用路由创建 URL

你可以使用路由模块来统一定义Web应用或API服务的访问URL,路由其实就是“访问URL"和“程序函数”或者“控制器的方法”之间的映射。

import Route from '@ioc:Adonis/Core/Route'

Route.get('/', () => {
return 'Hello! This is the homepage of my new app'
})

上面的代码定义了一个静态路由。然而,数据驱动的应用程序也需要注册动态路由的能力。例如:从 URL 中抓取 post id,然后查询数据库。



 
import Route from '@ioc:Adonis/Core/Route'
import Database from '@ioc:Adonis/Lucid/Database'

Route.get('posts/:id', ({ params }) => {
return Database
.from('posts')
.select('*')
.where('id', params.id)
.first()
})

 

 

使用控制器处理请求

控制器是 AdonisJS 中处理 HTTP 请求的事实上的方式。它们帮助您将所有内联函数调用从路由文件提取到专用控制器文件,并保持路由文件整洁。

01 创建控制器

node ace make:controller Posts

 

02 实现所需的方法

import Database from '@ioc:Adonis/Lucid/Database'

export default class PostsController {
public async show({ params }) {
return Database
.from('posts')
.select('*')
.where('id', params.id)
.first()
}
}

 

03 用路由注册

Route.get('posts/:id', 'PostsController.show')

 

使用 ORM 查询数据库

您可以使用 AdonisJS 的官方 ORM - “Lucid”与 SQL 数据库进行交互。Lucid 拥有丰富的 API 来执行模式迁移使用虚拟数据种子数据库以及使用 Javascript API构建 SQL 查询

更重要的是,Lucid 拥有建立在Active Record 模式之上的数据模型。您可以按如下方式创建和使用模型:

01 创建新模型

node ace make:model Post

02 配置列

import { column, BaseModel } from '@ioc:Adonis/Lucid/Orm'

export default class Post extends BaseModel {
@column({ isPrimary: true })
public id: number

@column()
public title: string

@column()
public description: string
}
 

03 导入并在控制器内部使用

import Post from 'App/Models/Post'

export default class PostsController {
public async show({ params }) {
const post = await Post.find(1)
return post
}
}

 

使用模板渲染 HTML

AdonisJS 还附带了一个自制的模板引擎——“Edge”。Edge 支持布局、部分、条件、循环等等。然而,最闪耀的功能是边缘组件系统

01 创建视图模板

node ace make:view posts/index
 

02 编写标记

<div class="article">
<h1> {{ post.title }} </h1>
<p> {{ post.description }} </p>
</div>

 

03 在控制器内部渲染

import Post from 'App/Models/Post'

export default class PostsController {
public async show({ params, view }) {
const post = await Post.find(1)
return view.render('posts/index', { post })
}
}
 
 

使用 auth 包对用户进行身份验证

AdonisJS 拥有多样化的身份验证系统,涵盖了传统 Web 应用程序和 API 服务器的需求。在守卫的帮助下,您可以使用基于会话的登录或创建用于无状态身份验证的 API 令牌。

01 安装配置auth包

npm i @adonisjs/auth

node ace configure @adonisjs/auth
 

02 使用会话登录用户

export default class AuthController {
public async login({ request, auth, response }) {
const email = request.input('email')
const password = request.input('password')

await auth
.use('web') // 👈 using sessions guard
.attempt(email, password)

response.redirect().toRoute('dashboard')
}
}
 

03 改为生成 API 令牌

export default class AuthController {
public async login({ request, auth }) {
const email = request.input('email')
const password = request.input('password')

const token = await auth
.use('api') // 👈 using API guard
.attempt(email, password)

return token
}
}
 
 

使用验证器验证输入

将验证器视为保护您的应用程序免受无效或丢失数据的第一道防线。

未能满足验证规则的请求将被重定向回带有正确错误消息的表单。否则,您可以使用正确的数据类型访问经过验证的值。

01 创建验证器

node ace make:validator CreatePost
 

02 定义验证模式

import { schema, rules } from '@ioc:Adonis/Core/Validator'
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'

export default class CreatePostValidator {
constructor (protected ctx: HttpContextContract) {
}

public schema = schema.create({
title: schema.string(),
description: schema.string({}, [
rules.escape()
]),
})
}
 

03 验证请求

import CreatePost from 'App/Validators/CreatePostValidator'

export default class PostsController {
public async store({ request }) {
const post = await request.validate(CreatePost)
console.log(post.title)
console.log(post.description)
}
}
 
 

使用 webpack encore 编译资源

在某个时间点,您可能需要一个 CSS 框架,并且可能想要添加一些 JavaScript 以使您的网络应用程序具有交互性。

按照今天的标准,CSS 和前端 JavaScript 需要在将其提供给浏览器之前进行转换和缩小。这个捆绑过程并不那么简单,因此您必须使用捆绑器。

AdonisJS 预先配置了具有合理默认值的 Webpack(一个行业标准捆绑器),这样您就不必浪费时间调整其旋钮。

01 配置webpack encore

node ace configure encore
 

02 启动开发服务器

node ace serve --watch

# Serve command starts both
# ✅ The AdonisJS HTTP server
# ✅ And the Webpack dev server
 

03 编译生成发布版本

node ace build --production

# Build commands compile both
# ✅ The AdonisJS Typescript source to JavaScript
# ✅ And the frontend assets using Webpack
 
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海阔天空_cn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值