服务端2月17日 18:24
Next.js App Router 国际化实战:路由、翻译、SEO 和语言切换多语言网站不是翻译几个字符串就完事——路由怎么设计、翻译文件怎么组织、SEO 的 hreflang 怎么配、切换语言时状态怎么保持,每个环节都有坑。Next.js App Router 提供了灵活的路由机制,但国际化方案需要自己搭。这篇给出一个完整的实战方案。
## 路由结构设计
App Router 推荐用动态路由段 `[lang]` 承载语言前缀:
```
app/
[lang]/
layout.tsx # 语言布局(加载翻译、设置 lang 属性)
page.tsx # 首页
about/
page.tsx ...服务端2月17日 20:02
TypeORM 查询缓存实战:Redis 配置、主动失效和策略选择数据库查询是后端应用最常见的性能瓶颈。TypeORM 内置了查询缓存,支持内存缓存和 Redis 缓存两种存储后端,能在不改动业务代码的情况下大幅降低数据库负载。这篇讲清楚怎么配、怎么用、以及缓存策略的选择。
## 两种缓存存储:数据库表 vs Redis
### 默认方案:数据库表缓存
不配置任何东西,TypeORM 默认用数据库的一张表存缓存:
```typescript
const dataSource = new DataSource({
type: 'mysql',
host: 'localhost',
username: 'root',
passwor...服务端2月17日 20:08
npm Scripts 进阶:生命周期钩子、参数传递和跨平台写法npm scripts 是 Node.js 项目里最朴素的自动化工具——在 `package.json` 里写一行命令,`npm run xxx` 就能执行。但它能做的远不止 `npm run dev`,生命周期钩子和参数传递这两个特性,很多人不知道。
## 基础用法
```json
{
"scripts": {
"dev": "nodemon index.js",
"build": "webpack --mode production",
"start": "node dist/index.js",
"test": "jest --coverag...服务端2月17日 20:08
npm 依赖类型全解析:dependencies、devDependencies 和 peerDependencies 怎么选`package.json` 里有 `dependencies`、`devDependencies`、`peerDependencies`、`optionalDependencies`——都叫依赖,到底什么区别?该往哪个里装?装错了会怎样?这篇一次讲清楚。
## dependencies vs devDependencies:唯一的本质区别
**生产环境装不装**——就这么简单。
| | dependencies | devDependencies |
|---|---|---|
| `npm install` | 安装 | 安装 |
| `npm install --produc...服务端2月17日 20:09
npm 包发布全流程:从零发布到私有 Registry 配置写好了一个工具库想发到 npm 上?或者公司内部需要搭建私有 npm 仓库管理通用组件?这篇讲清楚从零发布 npm 包的完整流程,以及私有 registry 的配置方式。
## 发布前的准备
### 1. 注册 npm 账号
```bash
npm adduser
# 按提示输入用户名、密码、邮箱
# 验证登录
npm whoami
```
### 2. package.json 必填字段
```json
{
"name": "@your-scope/package-name",
"version": "1.0.0",
"description": "一句话描述包的...服务端2月17日 20:10
npm 缓存机制详解:4 个方法加速依赖安装每次 `npm install` 都从网络下载包?不是的——npm 会把下载过的包缓存在本地,下次安装同一个版本时直接从缓存读取,跳过网络请求。理解缓存机制,能让 CI 构建更快、排查依赖问题更精准。
## 缓存存在哪里
```bash
npm config get cache
# macOS/Linux: ~/.npm
# Windows: %AppData%/npm-cache
```
缓存目录结构:
```
~/.npm/_cacache/
├── content-v2/ # 包的原始内容(按 hash 存储)
├── index-v5/ # 包的元数据索引...服务端2月17日 22:47
NestJS 集成 GraphQL:代码优先模式实战指南NestJS 对 GraphQL 的支持是所有 Node.js 框架里做得最顺的——代码优先模式下,你只写 TypeScript 类,Schema 自动生成,不用手写 `.graphql` 文件也不用维护两套类型定义。这篇讲清楚两种集成方式的选择、核心配置、以及 Resolver/ObjectType/InputType 的写法。
## 代码优先 vs Schema 优先
NestJS 支持两种 GraphQL 集成方式,90% 的项目应该选代码优先:
| | 代码优先(推荐) | Schema 优先 |
|---|---|---|
| 工作流 | 写 TypeScript → 自...服务端2月17日 23:35
Electron 架构详解:Chromium + Node.js 如何协同工作Electron 让你用 JavaScript、HTML、CSS 写桌面应用——VS Code、Discord、Slack 都是它做的。它不是什么黑科技,本质就是把 Chromium(浏览器内核)和 Node.js(服务端运行时)打包在一起,让 Web 页面能调用系统级 API。
## 三层架构
Electron 的架构可以拆成三层来看:
```
┌──────────────────────────────────────────────┐
│ 你的应用代码 │
├──────────────────┬────...服务端2月17日 23:36
Electron 主进程 vs 渲染进程:职责、API 和通信机制全对比Electron 应用跑起来后,打开任务管理器你会看到好几个进程——一个主进程加上若干渲染进程。它们各司其职,也各有局限,搞不清谁负责什么,写出的代码就会出各种诡异 bug。
## 一句话区分
- **主进程**:管窗口、管系统、管生命周期,是整个应用的"大管家"
- **渲染进程**:管页面、管 UI、管用户交互,是每个窗口的"画师"
主进程只有一个,渲染进程可以有多个(每个 BrowserWindow 一个)。
## 运行环境对比
| | 主进程 | 渲染进程 |
|---|---|---|
| 运行环境 | Node.js | Chromium(浏览器) |
| 可用 A...