兄弟们,人生需要指引,而复制是成功最快的方式,让我们开始行动吧

——codesoft

教程介绍

ABP-Vnext框架我们之前摸了无数次,好象初恋的女孩,一直在靠近,一直在努力,一直不敢盯着她的眼睛说:美女,我很喜欢你,能不能一起吃个饭!我们都喜欢自己变得足够的优秀之后,才敢说这句话。结果三年就过去了。我想搞技术也是这样,我一直都把ABP-Vnext框架当做心目中的女神,一直不敢碰。现在,让我们勇敢地把代码拉到本地来,看看到底怎么样。

这个教程没有别的特点,我就是想保证一点:足够清晰和简单,每个人看了,都能够一步一步做出来,完全重现整个过程,完全了解ABP-Vnext所有特点,让ABP-Vnext从女神到女友。

第一步:项目安装

我们要进入官方网站进入入门教程:https://docs.abp.io/zh-Hans/abp/latest/Getting-Started-Setup-Environment?UI=BlazorServer&DB=EF&Tiered=No



跟其他官方教程不一样的是在这里你真的能够学习到进阶实用的开发技术,不象其他的官方教程就象是个广告和敷衍,上次进入谷歌的开发教程页面就是。还有些官方教程你学完了,也完全是懵逼的,拉拉杂杂边边角角的讲,超链接四五层页面,跟逗你玩似的,这个以微软和ORACLE文档为最,关键是微软和ORACLE你看了三四遍每句话都是汉语,却不知道到底是什么意思,大量的名词术语你听都没有听过。还有些官方教程跟网上搞培训的教你CI/CD一样,手写中间件,很牛叉很高大上,一键测试部署监控,老开心了,感觉都会了,可是你一动手就痛苦了,还有十分之九的内容你得自己摸索。当然,再详细的官方教程,我们还需要查资料摸索和踩坑。

设置你的开发环境

第一件事! 在创建项目之前, 让我们先设置你的开发环境.

先决条件

开发计算机上应安装以下工具:

  • 一个集成开发环境 (比如: Visual Studio) 它需要支持 .NET 8.0+ 的开发.

    • Yarn v1.20+ (不是v2) 1 或 npm v6+ (已跟随Node一起安装)

1 Yarn v2 工作方式不同, 不被支持.

node必须安装,因为我们前端开发需要node的支持,所以这个是必须的。.NET 8.0+安装了VS2022会默认安装,Yarn暂时可以不装,后边需要的时候再装也比较容易。



安装yarn:

npm install -g yarn

yarn --version

安装 ABP CLI

ABP CLI 是一个命令行界面, 用于自动执行基于 ABP 的解决方案的一些常见任务. 首先, 你需要使用以下命令安装 ABP CLI:

dotnet tool install -g Volo.Abp.Cli

如果已安装, 则可以使用以下命令对其进行更新:

dotnet tool update -g Volo.Abp.Cli

第二步:创建新项目

我们将使用 ABP CLI 创建一个新的 ABP 项目.

或者, 你可以使用ABP Framework 网站页面上的选项轻松的 创建并下载 项目.

使用 ABP CLI 的 new 命令创建一个新项目:

abp new Acme.BookStore -u blazor-server

你可以使用不同级别的命名空间, 例如: BookStore、Acme.BookStore或 Acme.Retail.BookStore.

小技巧就是我们先创建好我们的开发文件夹,譬如我把开发文件夹创建在G盘



然后在文件夹窗口输入CMD回车,再输入后边咱们要用到的各种CMD命令。



有没有兄弟,跟我去年一样,都不知道CMD命令和Linux命令在哪里输入执行的,总感觉到处都是高大上的技术,到处都是咱们需要仰望的女神,在办公室搞的提心吊胆,面红耳赤,惴惴不安。生怕同事接开水路过自己电脑旁边,看到自己偷摸打开的一把百度搜索的页面。

第三步:运行程序

创建数据库

在这里我需要提醒大家的是,官方教程提醒我们需要修改连接字符串,但是我看了项目中的连接字符串是可以运行的,.dbMigator和.Blazor两个项目里边的数据库连接字符串我们都不需要动,先把代码运行起来,后边开发需要的时候,我们再修改连接字符串不急,这样会简单很多。

连接字符串

检查在 .Blazor 项目 中 appsettings.json 文件里的连接字符串.

"ConnectionStrings": { "Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=BookStore;Trusted_Connection=True" }

关于连接字符串和数据库管理系统

解决方案配置为默认使用 Entity Framework Core 与 MS SQL Server. 但是, 如果在执行ABP CLI 的new命令时使用了-dbms参数来选择其他DBMS (如-dbms MySQL), 那么连接字符串可能不同.

EF Core 支持 多种 据库提供程序, 因此你可以使用任何受支持的DBMS. 你可以需要时候参阅Entity Framework 集成文档 来学习如何切换到另一个DBMS.

数据库迁移

.dbMigator 应用程序在首次运行时自动创建初始迁移.

如果你使用的是 Visual Studio, 你可以跳到 运行 dbMigrator 部分. 但是, 其他 IDE (例如 Rider) 在首次运行时可能会遇到问题, 因为它会添加初始迁移并编译项目. 在这种情况下, 请在 .dbMigration 项目的文件夹中打开命令行终端, 然后运行以下命令:

dotnet run

下次, 你可以像往常一样在 IDE 中运行它.

运行迁移

右键单击 .dbMigration 项目, 然后选择 设置为启动项目

找到这个项目,设置为启动项,然后运行:

按F5(或Ctrl + F5) 运行应用程序. 它将具有如下所示的输出:



正常运行了数据库迁移项目之后,数据库和实例数据应该就建立起来了。

运行应用程序

确保 .Blazor 项目是启动项目. 运行应用程序将会在浏览器中打开 login 页面:

在 Visual Studio 中使用 Ctrl+F5(而不是F5) 在不进行调试的情况下运行应用程序. 如果你没有调试目的, 这会更快.

再次把.Blazor项目设置为启动项目,好见证奇迹的时刻到了:



输入用户名 admin 和 密码 1q2w3E* 登录应用程序. 应用程序已启动并正在运行. 你可以根据此启动模板开始开发应用程序.登录后,就进入系统了:



是不是很简单,看懂的兄弟们在公屏上敲个666!

后续步骤:

第二步:我们要从数据层、业务逻辑层、前端界面层进行一个功能模块的开发,从而掌握整个框架的开发应用,能够熟练应用这个框架进行项目功能模块的定制开发。这也是我们学习这个框架的目的。

第三步:我们即使知道了如何使用这个框架,可能对于框架背后的原理还是没有深入的了解。那么后边我们就是需要对ABP -Vnext框架背后的原理,有所了解,这样基本上可以做到在知道怎么使用框架开发的同时,还知道为什么可以这么做。再然后你也可以整合别的开源项目优化这个框架。

任务很艰巨,前景很美好!

因为艰巨,所以美好,

因为艰巨,才能带美女烤串!

一起加油!

ABP -Vnext框架一步一步入门落地教程——ABP Vnext框架代码安装和启动(一)的更多相关文章

  1. Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行(含系列目录)。

    前言: Taurus.MVC 微服务版本已经发布了:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单. 以前都是框架发布时写点相关功能点的文章,没有形成 ...

  2. Sagit.Framework For IOS 开发框架入门开发教程2:一行代码实现引导页

    前言: 开篇比较简单:Sagit.Framework For IOS 开发框架入门开发教程1:框架下载与环境配置 第二篇教程之前写了一半,感觉不太好写,而且内容单纯介绍API,要说的很多,又枯燥乏味. ...

  3. ASP.NET Aries 入门开发教程1:框架下载与运行

    背景: 鉴于框架的使用者越来越多,文档太少,不少用户反映框架的入门门槛太高. 好吧,再辛苦下,抽时间写教程吧! 步骤1:下载框架源码 开源地址:https://github.com/cyq1162/A ...

  4. 微信公众平台入门开发教程.Net(C#)框架

    一.序言 一直在想第一次写博客,应该写点什么好?正好最近在研究微信公众平台开发,索性就记录下,分享下自己的心得,也分享下本人简单模仿asp.net运行机制所写的通用的微信公众平台开发.Net(c#)框 ...

  5. Sagit.Framework For IOS 开发框架入门开发教程1:框架下载与环境配置

    背景: 前天开源了框架:开源:Sagit.Framework For IOS 开发框架 所以注定要追补一套开发教程了,所以尽量抽空了!!! 步骤 1:下载框架源码 GitHub:https://git ...

  6. 《VR入门系列教程》之18---Oculus代码剖析

    代码剖析 原文作者:Tony Parisi     那么,Unity究竟是如何支持Oculus VR运行的?首先,我们来看看Unity场景是如何构建的.在Unity集成开发包中有一个相机预设体,这个预 ...

  7. Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  8. Taurus.MVC WebAPI 入门开发教程3:路由类型和路由映射。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  9. Taurus.MVC WebAPI 入门开发教程4:控制器方法及参数定义、获取及基础校验属性【Require】。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  10. Taurus.MVC WebAPI 入门开发教程5:控制器安全校验属性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

随机推荐

  1. [VueJsDev] 日志 - 更新日志

    [VueJsDev] 目录列表 https://www.cnblogs.com/pengchenggang/p/17037320.html 更新日志 ::: details 目录 目录 更新日志 Lo ...

  2. Pod中断预算 PodDisruptionBudget(PDB)

    PodDisruptionBudget(PDB)是Kubernetes中的一个资源对象,用于确保在进行维护.升级或其他操作时,系统中的Pod不会被意外中断或终止.PDB提供了一种机制,通过限制在给定时 ...

  3. python queue join task_done的概念及实例解析

    一 概念 Queue.task_done() 在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号 Queue.join() 实际上意味着等到队列为空,再执行别的 ...

  4. 2.4g无线私有协议透传方案特色梳理

    为什么?  在2.4G这个频段,的确有待你拥挤,有提供高速上网的wifi,有提供短距离数据和云音乐传输的bt,还要各种xx的东西.在wifi和bt无法覆盖的领域,又出来一个2.4G私有协议传输芯片,这 ...

  5. 今日学习:位运算&中国剩余定理

    -2^ 31的补码是-0.也就是 1000 0000 0000 0000 0000 0000 0000 0000 补码是原码取反加1 x&(-x) 是最低位为1的位为1,其余位为0. 中国剩余 ...

  6. Android Graphics 多屏同显/异显

    " 亏功一篑,未成丘山.凿井九阶,不次水泽.行百里者半九十,小狐汔济濡其尾.故曰时乎,时不再来.终终始始,是谓君子." 01 前言 随着Android智能驾舱系统的普及各种信息交互 ...

  7. python批量发邮箱

    1.首先登录邮箱中开启服务 2.获取到授权码后复制下来,放入如下含授权码的引号中: 1 smtp_obj.login("**********@qq.com", "授权码& ...

  8. 摄像头网页预览,不需安装插件,支持Chrome

    背景 实在是不想折腾ActiveX控件 1.麻烦(开发麻烦.使用时设置也麻烦) 2.非IE浏览器不兼容 解决方案 写一个摄像头服务,提供http服务,返回摄像头当前画面的Base64字符串,前端页面调 ...

  9. PS的流水灯设计分析

    PS的流水灯设计分析 1.实验原理 PS设计流水灯就是采用ARM的硬核实现流水灯设计.ARM内核采用的就是一个可以执行软件程序的平台.这里采用C语言设计.基于前面构建的GPIO外设的硬件平台,这里实现 ...

  10. LeetCode 416. 分割等和子集(bitset优化)

    LeetCode 416. 分割等和子集 1 题目描述 给你一个只包含正整数的非空数组nums.请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 1.1 输入测试 示例 1: 输入 ...