环境概述:
后端:Visual Studio 、 .Net 6 、 WebApi
前端:Visual Studio Code 、 Vue:"^2.6.14" 、 vue/cli-service: "^3.0.3"
第一步:启动后端服务
在Program.cs中
            
            
              cs
              
              
            
          
          // Program.cs - 这是你的后端入口
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
var app = builder.Build();
app.UseRouting();
app.MapControllers();
app.Run(); // ← 这里启动Kestrel服务器!
        实际发生:
- 
.NET 6 启动内置的 Kestrel Web服务器
 - 
监听
http://localhost:7000(HTTP) 和https://localhost:7001(HTTPS) - 
你的WebAPI现在可以处理HTTP请求了
 
对于第二步,Properties/launchSettings.json 中可以看到类似配置,侦听端口根据配置来:

第二步:启动前端服务
在VSCode终端中运行:
npm run serve
        实际发生:
- 
Vue CLI 启动开发服务器
 - 
监听
http://localhost:8080 (也是根据配置来) - 
实时编译你的
.vue文件为浏览器可执行的JS 
第三步:浏览器访问
1.你在浏览器输入:http://localhost:8080
2.浏览器发送HTTP请求
3.Vue开发服务器(Vue CLI)响应,返回一个HTML文件
4.浏览器解析HTML并构建DOM树
📡 前后端交互过程详解
当Vue组件调用API时:
假设你的Vue代码中有:
            
            
              javascript
              
              
            
          
          // Vue组件中的方法
methods: {
  async loadUsers() {
    try {
      // 调用后端API
      const response = await this.$http.get(
        'https://localhost:7000/api/users'
      );
      this.users = response.data;
    } catch (error) {
      console.error('API调用失败', error);
    }
  }
}
        发生了什么?
1. 请求发出阶段
浏览器(localhost:8080)  → HTTP GET请求 → Kestrel服务器(localhost:7000)
        2. 后端处理阶段
你的.NET WebAPI接收到请求:
            
            
              cs
              
              
            
          
          // Controllers/UsersController.cs
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
    [HttpGet]
    public IActionResult GetUsers()
    {
        // 这里执行你的业务逻辑
        var users = new[]
        {
            new { Id = 1, Name = "张三" },
            new { Id = 2, Name = "李四" }
        };
        
        // 返回JSON数据
        return Ok(users);
    }
}
        3. 响应返回阶段
Kestrel返回json格式的文件:
{
  "data": [
    { "id": 1, "name": "张三" },
    { "id": 2, "name": "李四" }
  ]
}
        🛡️ 关键技术:解决跨域问题
由于前端(8080)和后端(7000)端口不同,会产生跨域限制。你的环境通过以下方式解决:
方案1:后端配置CORS
在你的.NET 6 WebAPI中:
            
            
              cs
              
              
            
          
          // Program.cs
var builder = WebApplication.CreateBuilder(args);
// 添加CORS服务
builder.Services.AddCors(options =>
{
    options.AddPolicy("VueDevServer",
        policy =>
        {
            policy.WithOrigins("http://localhost:8080") // 允许Vue开发服务器
                  .AllowAnyHeader()
                  .AllowAnyMethod();
        });
});
var app = builder.Build();
// 使用CORS中间件
app.UseCors("VueDevServer");
app.MapControllers();
app.Run();
        这样配置后:
- 
浏览器允许
localhost:8080访问localhost:7000的API - 
前后端可以自由通信
 
方案2:Webpack Dev Server 的代理功能
配置参数参考:
devServer: {
  port: 6688,
  proxy: {
    '/api': {  // 匹配所有以 /api 开头的请求
      target: 'https://localhost:5656', // 转发目标
      changeOrigin: true,     // 修改请求头中的 Origin
      secure: false,          // 忽略SSL证书验证
      logLevel: 'debug',      // 输出代理日志
      onProxyReq(proxyReq, req, res) {  // 代理请求钩子
        console.log('代理请求:', req.originalUrl, '->', proxyReq.path);
      }
    }
  }
}
        配置后工作流程:
浏览器 → http://localhost:6688/api/users
                ↓
        Vue开发服务器接收请求
                ↓
        代理转发 → https://localhost:5656/api/users
                ↓
          .NET后端处理并返回
                ↓
        代理返回给浏览器
        🔧 目前开发环境特有的细节
Vue CLI服务的特性
由于你使用 vue/cli-service: "^3.0.3":
- 
支持热重载:修改Vue代码时页面自动更新
 - 
提供源代码映射:浏览器中可调试原始Vue代码
 - 
自动处理 ES6+ → ES5 转换
 
.NET 6 Kestrel的特性
- 
跨平台:可在Windows/Linux/macOS运行
 - 
高性能:异步I/O模型
 - 
自宿主:不需要IIS即可运行
 
🎨 可视化整个流程
┌─────────────────────────────────────────────────┐
│               你的开发电脑                      │
│                                                 │
│  ┌─────────────┐          ┌─────────────────┐   │
│  │  浏览器     │          │ Visual Studio   │   │
│  │localhost:8080│         │ (.NET 6 WebAPI) │   │
│  └─────────────┘          └─────────────────┘   │
│         │                          │            │
│  ┌─────────────┐                   │            │
│  │ VSCode      │                   │            │
│  │ (Vue CLI)   │ ←─────────────────┘            │
│  └─────────────┘                                │
│         │                                       │
│  ┌─────────────┐          ┌─────────────────┐   │
│  │前端开发服务器│ ←────→  │ 后端Kestrel服务器│   │
│  │ :8080       │   HTTP   │ :7000           │   │
│  └─────────────┘          └─────────────────┘   │
│                                                 │
└─────────────────────────────────────────────────┘
        💡 总结
在你的环境中:
- 
两个真正的服务器:Vue CLI开发服务器 + .NET 6 Kestrel服务器
 - 
本地网络通信:通过localhost环回地址在内部通信
 - 
跨域解决方案:.NET CORS配置允许Vue应用访问API
 - 
无魔法:这是标准的HTTP请求/响应,只是发生在你的电脑内部
 
这就是为什么你不需要"部署"也能前后端交互------你的开发机本身就是一个完整的全栈运行环境!