go全栈开发框架bud,go语言中的ruby on rails

VSole2022-08-03 10:22:40
  • 介绍

Bud是一个go语言编写的全栈开发框架,类似ruby on railsBud的使命是降低构建、开发和维护web应用的成本。Bud提供了一整套文档完善的、充分测试的工具来降低web应用开发成本。

  • 安装
curl -sf https://raw.githubusercontent.com/livebud/bud/main/install.sh | sh
bud -h
  • 创建web app
bud create hello
cd hello
ls
go.mod  node_modules/  package-lock.json  package.json

不像其他全栈框架,bud生成的初始代码非常少,再添加依赖之后,bud才会生成所有的代码。

bud run运行项目,开启一个开发模式的Server:

bud run
| Listening on http://0.0.0.0:3000

  • 目录结构

Bud提供了一个标准目录结构:

$YOUR_APP
├─ bud
├─ controller
├─ internal
├─ public
└─ view
  • bud/ 这个目录是创建的时候自动生成的,包含框架生成的代码,偶尔会需要从这个目录导入packages,但大部分时候都可以忽略它,建议不要放在版本控制器里
  • controller/ 控制器目录用来获取http请求,并响应返回
  • view/ 视图目录用来存放视图文件
  • public/ public目录用来存放静态资源
  • internal/ 这个目录不会被Bud框架引用,建议放这个应用特定的packages
  • 控制器和路由

Bud的路由不同于传统的go框架,它遵循一套约定:每个控制器对应一组标准路由,也可以自定义Action,Action和路由一一对应,下面看例子:

bud new controller post

这个命令会生成

controller/post/controller.go 此时这个文件里只能包含以下方法:

可以选择实现任意方法,如果要新增一个自定义路由,则需要新增一个方法:

func (c *Controller) About(ctx context.Context) (string, error) {
    return "hello", nil
}

这个方法有一个默认路由/about,首字母大写的Action会自动获得对应小写的路由,首字母小写的Action不会获得路由。

  • 请求和响应

解析请求框架会自动完成,可以在action参数里接收,也可以使用单独的结构体接收,例如:

func (c *Controller) About(ctx context.Context, name string) (string, error) {
    return fmt.Sprintf("hello %s", name), nil
}
type Input struct {
    Name string
}
func (c *Controller) About(ctx context.Context, in *Input) (string, error) {
    return fmt.Sprintf("hello %s", in.Name), nil
}

一个控制器如果没有对应的视图,总是返回json,例如:

func (c *Controller) Create() (id int, email string) {
  return 10, "alice@livebud.com"
}
type Output struct {
  ID int
  Email string
}
func (c *Controller) Create() Output {
  return Output{
    ID: 10, 
    Email: "alice@livebud.com",
  }
}

上述这两种形式都将返回:

{
  "id": 10,
  "email": "alice@livebud.com"
}
  • 视图

视图用来展示HTML页面,bud默认使用svelte渲染视图,svelte是一个高性能前端js框架。

$YOUR_APP
└─ view
   ├─ index.svelte     -> Root index page
   ├─ posts
   │  ├─ edit.svelte   -> Edit post page
   │  ├─ index.svelte  -> Post index page
   │  ├─ new.svelte    -> New post page
   │  ├─ show.svelte   -> Show post page
   │  └─ Post.svelte   -> Post component (not rendered)
   └─ users
      ├─ edit.svelte   -> Edit user page
      ├─ index.svelte  -> User index page
      └─ show.svelte   -> Show user page

控制器中返回的值,如果有对应视图文件,则值会被传递到视图中:

<script>
  export let users = [] //来自控制器
</script>
<h1>Users</h1>
<ul>
    {#each users as user}
    <li>{user.name} is {user.age} years old</li>
    {/each}
</ul>
  • 其他

Bud框架并没有自己的ORM,用户可自行选择orm框架,通过依赖注入在控制器中使用。另外,还有全栈框架包含的特性,如错误处理、插件系统、数据验证及安全、日志、队列与定时任务、文件与存储等都可以在官方文档上找到。

开发框架rails
本作品采用《CC 协议》,转载必须注明作者和本文链接
最全的Python开发库!
2022-07-01 08:24:52
Web 框架主要用于网站开发,可以实现数据的交互和业务功能的完善。使用 Web 框架进行 网站开发的时候,在进行数据缓存、数据库访问、数据安全校验等方面,不需要自己再重新实现,而是将业务逻辑相关的代码写入框架就可以。
不像其他全栈框架,bud生成的初始代码非常少,再添加依赖之后,bud才会生成所有的代码。用bud run运行项目,开启一个开发模式的Server:bud run. 其他Bud框架并没有自己的ORM,用户可自行选择orm框架,通过依赖注入在控制器中使用。另外,还有全栈框架包含的特性,如错误处理、插件系统、数据验证及安全、日志、队列与定时任务、文件与存储等都可以在官方文档上找到。
InfoWorld 公布了 2022 年最佳开源软件榜单。InfoWorld 的 2022 年 Bossie 奖旨在表彰年度最重要和最具创新性的应用程序开发、devops、数据分析和机器学习工具。Redwood 允许针对各种部署环境,包括 Vercel 和 Netlify 等无服务器平台。它允许拖放组件来构建仪表板、使用 JavaScript 对象编写逻辑并连接到任何 API、数据库或 GraphQL 源。Spinnaker 是一个持续交付平台,它定位于将产品快速且持续的部署到多种云平台上。Spinnaker 主要特性:配置一次,随时运行;随地部署,集中化管理;开源。
是一套用于对域名进行侦察的工具。该程序会检查 SPF 和 DMARC 记录中是否存在允许欺骗的弱配置。用于发现计算机网络上的主机和服务,从而构建网络的“地图”。自动渗透测试侦察扫描仪。不受 API 限制,因为它使用 Selenium 检测浏览器。输出报告以帮助关联跨站点的目标。是一个 python 脚本,它检查电子邮件帐户是否在数据泄露中受到损害,如果电子邮件帐户受到损害,它会继续查找受损害帐户的密码。LinkedIn 枚举工具,通过搜索引擎抓取从组织中提取有效员工姓名。
企业的安全性取决于其自身,与低代码或无代码没有太大关系。
1. Arachni Arachni是一款基于Ruby框架构建的高性能安全扫描程序,适用于现代Web应用程序。它可用于Mac,Windows和Linux的便携式二进制文件
Web Hacking 101 中文版:https://wizardforcel.gitbooks.io/web-hacking-101/content/ 浅入浅出Android安全 中文版:https://wizardforcel.gitbooks.io/asani/content/ Android 渗透测试学习手册 中文
现在,我利用它运行一个Puma Web服务器,上面跑着一个简单的Sinatra应用。一台旧的安卓手机可能并不会有太高的性能,但t2.nano的AWS服务器也没有。当然,手机的处理器是ARM,而云服务器通常是x86;内存管理也完全不同。不论如何,这篇文章的目的是介绍如何将安卓设备改造成Web服务器或任何其他东西。安装完成后不需要任何配置。方法实现有几种,但我认为最方便的是通过一个名为Dropbear的软件。
上周在拉斯维加斯举行的Black Hat2022大会连续第25年通过调查分析和报告大规模安全漏洞和网络攻击为业界敲响警钟,指明方向。IOA已被证明可以有效地根据实际的对手行为来识别和阻止违规行为,而与攻击中使用的恶意软件或漏洞无关。
VSole
网络安全专家