gpt4 book ai didi

javascript - 与带下划线的后端同步时,转换为 CamelCase 以便在 JavaScript 中使用?

转载 作者:可可西里 更新时间:2023-11-01 01:25:36 24 4
gpt4 key购买 nike

TL/DR:使用带下划线的命名约定服务器端 (RoR) 和驼峰式命名约定客户端 (JS) 的好方法是什么

Ruby on Rails 等服务器端编程环境使用带下划线的变量。按照惯例,JavaScript 使用驼峰式变量。当从客户端向服务器发送数据时,这是有问题的。

例如,考虑向客户端发送用户信息。数据库中可能有一个名为 num_times_ordered 的属性,但在 JavaScript 中,您通常希望将其称为 numTimesOrdered。

有没有人想出一个优雅的方法来处理这个问题?这里有一些选项,没有一个特别好:

  1. 从服务器获取数据时将数据转换为驼峰命名法。
  2. 从服务器发送时使用驼峰式拼写
  3. 在您的 Javascript 中使用带下划线的命名约定(尽管这样您就与任何第三方库不一致,例如 jQuery)
  4. 在您的后端使用驼峰式命名约定(尽管这样您与后端的约定不一致)

我倾向于#3,并在我的 JavaScript 中使用下划线。不过,当我使用驼峰式第三方库时,它看起来会很奇怪。

最佳答案

我相信 ember.js(通过 Ember Data)采用方法 #1:在获取时在客户端将带下划线的 JSON 转换为驼峰命名法;并在回发到服务器之前执行相反的操作。

我一直在开发一个执行这些转换的小型库:https://github.com/domchristie/humps ,允许您执行以下操作:

// GET
$.ajax({
url: '/posts',
dataType: 'json',
success: function(data, status, xhr) {
data = humps.camelizeKeys(data);
}
});

// POST
$.ajax({
type: 'POST',
url: '/posts'
dataType: 'json',
data: humps.decamelizeKeys({
title: "Foo",
publishedAt: "2012-09-03T21:35:46.068Z"
})
});
// Sends: { title: "Foo", published_at: "2012-09-03T21:35:46.068Z" }

我应该补充一点,它还没有经过严格测试,但欢迎贡献!

关于javascript - 与带下划线的后端同步时,转换为 CamelCase 以便在 JavaScript 中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12028740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com