Blazor 具有前后端不分离模式,但是如何直接调用需要一定的设置
依赖注入在spring里面很常见,毕竟.NET 是个巨型融合怪。只要你这个好用我就抄。我还是很佩服的,能实现就行,谁管是谁第一个开发的。MVVM还是WPF首创的呢,Vue用也没关系。能简化程序员逻辑就行。
依赖注入解决了两个问题
下面重点讲解生命周期
AddSingleton的生命周期: 项目启动-项目关闭 相当于静态类 只会有一个
AddScoped的生命周期: 请求开始-请求结束 在这次请求中获取的对象都是同一个
AddTransient的生命周期: 请求获取-(GC回收-主动释放) 每一次获取的对象都不是同一个
根据我实际测试得到如下结果。
那么根据实际情况,我们还需要加一个。生命周期:浏览器。那么就要用到浏览器缓存了。因为我们不希望用户一刷新网页就跳到登录页面了,还是要和浏览器绑定。
行为 | 算不算网页刷新 |
---|---|
刷新网页 | 算 |
页面点击的路由跳转 | 不算 |
在网页手动输入的页面跳转 | 算 |
服务类
public class TestModel
{
public int count { get; set; } = 0;
public int AddCount()
{
count++;
return count;
}
}
Blazor点击网页
@using BlazorApp2.Data
@inject TestModel TestService
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<p role="status">Current count: @currentCount</p>
<p>Static count : @StaticCount </p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private int StaticCount = 0;
private void IncrementCount()
{
currentCount++;
StaticCount = TestService.AddCount();
//Console.WriteLine("打印"+currentCount);
}
}
在App.razor里面注册
builder.Services.AddSingleton<TestModel>();
builder.Services.AddScoped<TestModel>();
builder.Services.AddTransient<TestModel>();
一般来说,大部分时候都是Scoped(范围)来绑定整个页面,再用Cookie让登录不登出页面。
我看了一下别人的写法