Skip to content

Latest commit

 

History

History
78 lines (66 loc) · 2.17 KB

introduction.md

File metadata and controls

78 lines (66 loc) · 2.17 KB

Introduction

Motivation

Many APIs, public or not, return JSON data that has deeply nested objects. Using data in this kind of structure is often very difficult for JavaScript applications, especially those using Flux or Redux.

Solution

Normalizr is a small, but powerful utility for taking JSON with a schema definition and returning nested entities with their IDs, gathered in dictionaries.

Example

The following nested object:

[
  {
    id: 1,
    title: 'Some Article',
    author: {
      id: 1,
      name: 'Dan'
    }
  },
  {
    id: 2,
    title: 'Other Article',
    author: {
      id: 1,
      name: 'Dan'
    }
  }
];

Can be normalized to:

{
  result: [1, 2],
  entities: {
    articles: {
      1: {
        id: 1,
        title: 'Some Article',
        author: 1
      },
      2: {
        id: 2,
        title: 'Other Article',
        author: 1
      }
    },
    users: {
      1: {
        id: 1,
        name: 'Dan'
      }
    }
  }
}

Build Files

Normalizr is built for various environments

  • src/*
    • CommonJS, unpacked files. These are the recommended files for use with your own package bundler and are the default in-point as defined by this modules package.json.
  • normalizr.js, normalizr.min.js
  • normalizr.amd.js, normalizr.amd.min.js
  • normalizr.umd.js, normalizr.umn.min.js
  • normalizr.browser.js, normalizr.browser.min.js
    • IIFE / Immediately-Invoked Function Expression, suitable for use as a standalone script import in the browser.
    • Note: It is not recommended to use packages like Normalizr with direct browser <script src="normalizr.js"></script> tags. Consider a package bundler like webpack, rollup, or browserify instead.