18

TL/DR: キャメルケースの命名規則のクライアント側 (JS) で下線付きの命名規則のサーバー側 (RoR) を使用する良い方法は何ですか?

Ruby on Rails のようなサーバー側のプログラミング環境では、下線付きの変数が使用されます。従来、JavaScript はキャメルケースの変数を使用していました。これは、クライアントからサーバーにデータを送信するときに問題になります。

たとえば、ユーザー情報をクライアントに送信するとします。データベースには num_times_ordered と呼ばれるプロパティがあるかもしれませんが、JavaScript では伝統的にこれを numTimesOrdered として参照する必要があります。

これに対処するエレガントな方法を思いついた人はいますか? ここにいくつかのオプションがありますが、特に素晴らしいものはありません:

  1. サーバーから取得したデータをキャメルケースに変換します。
  2. サーバーから送信するときはキャメルケースを使用する
  3. Javascript で下線付きの命名規則を使用します (ただし、jQuery などのサードパーティ ライブラリとは矛盾します)。
  4. バックエンドでキャメルケースの命名規則を使用します (ただし、バックエンドの規則とは矛盾します)

私は #3 に傾倒しており、JavaScript でアンダースコアを使用しています。ただし、camelCased サードパーティ ライブラリを使用すると、奇妙に見えます。

4

2 に答える 2

7

私は、ember.js (Ember Data 経由) がアプローチ #1 を採用していると考えています。フェッチ時にクライアント側で下線付きの JSON を camelCase に変換します。サーバーにポストバックする前に逆を行います。

私はこれらの変換を実行する小さなライブラリに取り組んできました: 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" }

追加する必要がありますが、十分にテストされていませんが貢献を歓迎します!

于 2012-09-03T21:48:25.993 に答える