🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

看情況,但團隊統一最重要
JS/TS生態傾向駝峰
Python/Go生態傾向下劃線
轉換成本要考慮

深入分析與實踐建議

1. 轉換位置的選擇

後端轉換(推薦在Node.js/Java環境)

// Node.js 通用轉換函數
const snakeToCamel = (str) => 
  str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());

const toCamelCase = (obj) => {
  if (Array.isArray(obj)) return obj.map(toCamelCase);
  if (obj === null || typeof obj !== 'object') return obj;

  return Object.keys(obj).reduce((acc, key) => {
    const camelKey = snakeToCamel(key);
    acc[camelKey] = toCamelCase(obj[key]);
    return acc;
  }, {});
};

前端轉換(推薦在Python/Go後端時)

// axios 攔截器統一轉換
import axios from 'axios';

axios.interceptors.response.use((response) => {
  if (response.data) {
    response.data = toCamelCase(response.data);
  }
  return response;
});

2. TypeScript 場景的考量

如果使用 TypeScript,強烈推薦後端返回駝峰

// 後端返回下劃線時,類型定義很別扭
interface UserResponse {
  user_name: string;    // 🤮 不符合TS命名規範
  order_list: Order[];
}

// 後端返回駝峰時,類型定義自然
interface UserResponse {
  userName: string;     // ✅ 符合TS命名規範
  orderList: Order[];
}

3. 性能考量

對於大量數據或高頻接口,轉換可能帶來性能開銷:

// 性能優化版本 - 只轉換需要的字段
const transformCriticalFields = (data) => {
  if (!data) return data;

  return {
    id: data.id,
    userName: data.user_name,
    orderList: data.order_list?.map(item => ({
      orderId: item.order_id,
      productName: item.product_name
    })) || []
  };
};

4. 我的推薦方案

首選方案:後端統一返回駝峰

// 理由:
1. 前端開發體驗更好(特別是TS)
2. 符合前端生態習慣
3. 一次轉換,多處使用

備選方案:前端統一轉換

// 適用場景:
1. 後端主要是Python/Go,團隊習慣下劃線
2. 歷史項目,改造成本高
3. 數據庫字段嚴格下劃線規範

5. 實際項目中的決策框架

決策 checklist:

  • [ ] 團隊技術棧(前端TS/JS?後端Python/Go?)
  • [ ] 項目規模和新舊程度
  • [ ] TypeScript使用程度
  • [ ] 團隊編碼規範
  • [ ] 性能要求

總結

"看情況,團隊統一最重要" 確實是核心原則。在實際項目中,我傾向於:

  1. 新項目:後端統一返回駝峰,特別是用TS的前端
  2. 存量項目:保持現有規範,必要時在網關層統一轉換
  3. 混合團隊:在API網關層做統一轉換,前後端各保持自己的命名習慣

關鍵是要在項目初期明確規範,並在團隊內嚴格執行,避免前後端命名風格混用帶來的維護成本。


原文出處:https://juejin.cn/post/7555795679383273481


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝19   💬9   ❤️5
726
🥈
我愛JS
📝4   💬14   ❤️7
249
🥉
御魂
💬1  
3
#5
2
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付