服务端2月17日 22:38
NestJS 怎么连数据库?TypeORM 和 Prisma 集成实战NestJS 集成数据库的主流方案有两个:TypeORM(官方推荐,装饰器风格)和 Prisma(类型安全更好,迁移体验好)。选哪个看团队偏好——TypeORM 和 NestJS 风格统一,Prisma 的类型推导更强。
## TypeORM 集成
```bash
npm install @nestjs/typeorm typeorm pg
```
### 配置连接
```typescript
// app.module.ts
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [
...服务端2月17日 22:40
NestJS 怎么做认证和授权?JWT、Guards 和 RBAC 实战NestJS 的认证授权用 Guards(守卫)+ 策略模式实现。认证(Authentication)验证"你是谁",授权(Authorization)验证"你能做什么"。JWT 是最常用的认证方案,RBAC 是最常用的授权模型。
## JWT 认证
安装依赖:
```bash
npm install @nestjs/jwt @nestjs/passport passport passport-jwt
```
### 配置 JWT 策略
```typescript
// auth/jwt.strategy.ts
@Injectable()
export class JwtStr...服务端2月17日 23:39
Electron 应用怎么防 XSS 和代码注入?安全最佳实践Electron 的安全核心原则:**不要信任渲染进程中的任何代码**。渲染进程加载的是 Web 内容,可能被 XSS 攻击。如果渲染进程有 Node.js 访问权限(`nodeIntegration: true`),XSS 就等于远程代码执行——攻击者可以直接读写文件系统。
## 第一条规则:关闭 nodeIntegration
```javascript
new BrowserWindow({
webPreferences: {
nodeIntegration: false,
contextIsolation: true
}
});...服务端2月17日 23:40
Electron 太卡太占内存怎么办?8 个性能优化实战技巧Electron 应用最常见的抱怨:内存 300MB 起步、启动慢、CPU 空转。这些问题大部分可以通过架构调整和代码优化解决,但有些是 Chromium 内核的硬限制,只能缓解不能根除。
## 1. 减少渲染进程数量
每个 BrowserWindow 是一个独立的 Chromium 渲染进程,至少占 50-80MB 内存。开了 5 个窗口就是 250-400MB。
优化方案:能用一个窗口解决就不要开多个。需要多视图用 `BrowserView`(Electron 28+ 用 `WebContentsView`)代替多窗口——多个 View 共享一个渲染进程,内存开销小得多。
`...服务端2月17日 23:42
Electron 和原生应用怎么选?性能、开发效率和跨平台对比Electron 用 Web 技术写桌面应用,原生用 Swift/Kotlin/C++ 写。选哪个取决于你的团队技术栈、性能要求和分发场景。一句话:Web 团队选 Electron,性能敏感选原生。
## 核心差异
| 维度 | Electron | 原生(Swift/Kotlin/C++) |
|------|----------|--------------------------|
| 技术栈 | HTML/CSS/JS | 平台特定语言 |
| 跨平台 | 一套代码三端运行 | 每个平台单独写 |
| 开发速度 | 快(Web 生态成熟) | 慢(三倍工作量) |
| 安装包...服务端2月17日 23:44
Electron 原生模块怎么用?N-API 和 node-gyp 编译实战Electron 原生模块是用 C/C++ 写的 Node.js 模块,通过 N-API 或 NAN 桥接到 JavaScript。常见于需要调用系统 API(文件系统、硬件、加密)或追求极致性能的场景。难点不在写 C++ 代码,而在编译——Electron 用的 Node.js 版本和系统 Node 可能不同,导致原生模块编译失败。
## 为什么需要原生模块
JavaScript 做不了的事:调用操作系统的原生 API(注册表、系统通知、硬件接口)、极高性能计算(图像处理、加密)、复用已有的 C/C++ 库。
常见的原生模块:`node-serialport`(串口通信)、`no...服务端2月18日 09:39
VSCode 扩展怎么开发?从脚手架到发布完整流程开发 VSCode 扩展就是写一个 Node.js 程序,通过 VSCode 提供的 API 注册命令、视图、语言服务等功能。从零到发布,核心步骤:脚手架生成 → 实现功能 → 调试 → 打包发布。
## 环境准备
```bash
npm install -g yo generator-code vsce
```
- `yo` + `generator-code`:官方脚手架,生成扩展项目模板
- `vsce`:打包和发布工具
## 创建扩展
```bash
yo code
```
按提示选择:
- 扩展类型:New Extension (TypeScript) 推荐
- 扩...服务端2月18日 09:39
VSCode 工作区是什么?单文件夹和多根工作区怎么选?VSCode 的"工作区"就是当前打开的项目。最简单的情况——打开一个文件夹就是工作区。多根工作区是同时打开多个文件夹,适合 monorepo 或前后端分离的项目。
## 单文件夹工作区
File > Open Folder 打开一个文件夹,这就是最基本的工作区。VSCode 在这个文件夹下创建 `.vscode/` 目录存放配置(settings.json、launch.json、tasks.json)。
大部分时候用单文件夹就够了。一个项目一个窗口,清爽明了。
## 多根工作区
File > Add Folder to Workspace 可以把另一个文件夹加进来。两个文件...服务端2月18日 09:40
VSCode 调试怎么配?launch.json 配置和断点调试实战VSCode 的调试器支持 Node.js、Python、C++、Java 等主流语言。核心配置文件是 `.vscode/launch.json`,定义调试的启动方式和参数。
## 最快上手:不用写配置
很多语言不需要手写 launch.json:
- **Node.js**:打开 JS 文件,按 F5,VSCode 自动以当前文件启动调试
- **Python**:装 Python 扩展后,打开 .py 文件按 F5 自动调试
- **HTML**:装 Live Server 扩展,右键 "Open with Live Server" 在浏览器调试
如果自动检测不对,按 F5 后...