Skip to content

Guck111/ramda

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code
This branch is 24 commits ahead, 293 commits behind ramda:master.

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Ramda

Практичная функциональная библиотека для JavaScript программистов.

Build Status npm module dependencies Gitter

Почему Ramda?

Уже есть несколько отличных библиотек с функциональным оттенком. Как правило, они предназначены для того, чтобы быть инструментами общего назначения, подходят для работы в нескольких парадигмах. У Ramda, в свою очередь, более конкретная цель. Мы хотели библиотеку, разработанную специально для программирования в функциональном стиле, библиотеку, с которой легко создавать функциональные источники информации, которая не изменяет данные пользователя.

В чем разница?

Основные отличительные особенности Ramda:

  • Ramda делает упор на чистый функциональный стиль. Неизменность (Immutable) данных и отсутствие побочных эффектов функций лежат в основе философии дизайна. Это помогает выполнять работу с помощью простого и элегантного кода.

  • Ramda функции имеют автоматический карринг. Это позволяет легко строить новые функции из старых просто не передавая конечный параметр.

  • Параметры в Ramda функциях расположены таким образом, чтобы сделать карринг как можно более удобным. Данные, которые должны быть обработанны, как правило, передаются в последнюю очередь.

Последние два пункта вместе, делают простым создание последовательностей функций, каждая из которых преобразует данные и передает их следующей. Ramda спроектирована для поддержки такого стиля написания кода.

Введение

Философия

Используя Ramda у вас должно появиться чувство как будто вы просто используете JavaScript. Это практичный, функциональный JavaScript. Мы не представляем лямбда выражения в строках, мы не заимствуем consed списки, мы не импортируем все функции с Clojure.

Наши базовые структуры данных - это простые JavaScript объекты, а наши обычные коллекции - это JavaScript массивы. Мы также сохраняем другие встроенные в JavaScript функции, такие как функции-объекты со свойствами.

Функциональное программирование в значительной степени связано с неизменными (immutable) объектами и Функциями без побочных эффектов. Хотя Ramda не применяет это, она позволяет использовать такой стиль с как можно меньшим "трением".

Мы стремимся к реализации как чистоты, так и элегантности кода, но АРI остается более важным. Частично мы приносим в жертву элегантность реализации ради более чистого АРI.

И последнее, но не менее важное: Ramda стремится к производительности. Надежная и быстрая реализация побеждают любые понятия функциональной чистоты.

Установка

Для использования с node:

$ npm install ramda

Затем в консоли:

const R = require('ramda');

Для прямого использования в браузере:

<script src="path/to/yourCopyOf/ramda.js"></script>

или минифицированная версия:

<script src="path/to/yourCopyOf/ramda.min.js"></script>

или с CDN, или cdnjs:

<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>

или с помощью одной из ссылок приведенных ниже jsDelivr:

<script src="//cdn.jsdelivr.net/npm/ramda@0.25.0/dist/ramda.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/ramda@0.25/dist/ramda.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/ramda@latest/dist/ramda.min.js"></script>

(заметьте, что использование latest привносит огромный риск того, что при изменении Ramda API ваш код может сломаться.)

Эти теги script добавляют переменную R в глобальной области видимости браузера.

Или вы можете вставить Ramda в любой ничего не подозревающий сайт с помощью bookmarklet.

Замечания к версиям > 0.25 Версии Rambda > 0.25 не имеют экспрота по умолчанию. Поэтому вместо import R from 'ramda'; нужно использовать import * as R from 'ramda'; А еще лучше, импортировать только необходимые функции через import { functionName } from 'ramda';

Сборка

  • на Unix-подобных платформах, npm run build обновляет dist/ramda.js и dist/ramda.min.js
  • на Windows, запишите результат scripts / build --complete до временного файла, после чего переименуйте временный файл на dist / ramda.js.

Частичная сборка

Возможно собрать Ramda с подмножеством функциональных возможностей ради уменьшения размера файла. Система сборки Ramda предоставляет эту возможность с помощью флажков в командной строке. Например, если вы используете R.compose, R.reduce и R.filter, вы можете создать частичную сборку с помощью следующей строки:

./scripts/build -- src/compose.js src/reduce.js src/filter.js > dist/ramda.custom.js

Для этого нужно иметь установленный Node/io.js.

Документация

Имя

Хорошо, Итак, мы любим овец: ram:. Это все. Это короткое имя, никем пока не занято. Это с легкостью могло бы быть eweda, но тогда мы бы были вынуждены говорить eweda lamb! (lamb - ягненок, прим.переводчика), а токого никто не хотел. Для тех, кто не является носителем английского языка, lambs - это детеныш овцы, ewes - это овца, а rams - бараны. Поэтому, возможно, ramda-это повзрослевшая lambda... Но, наверное, нет.

Запуск тестов

Консоль:

Для запуска тестов с консоли, вам необходимо установить mocha:

npm install -g mocha

Тогда из корня вашего проекта вы можете просто вызвать

mocha

Или если вы установили зависимости через:

npm install

тогда вы можете запустить тесты (и получить вывод деталей в терминале) запустив команду:

npm test

Браузер:

Вы можете использовать testem для тестирования в разных браузерах (и даже в "безголовых" браузерах), с мгновенной перезагрузкой. Установите testem (npm install -g testem) и выполните testem. Откройте ссылку которую предоставит вам ваш браузер и вы увидите результаты в вашем терминале.

Если у вас установлен PhantomJS , вы можете выполнить testem -l phantomjs для запуска тестов полностью в "безголовом" режиме.

Переводы

Благодарности

Спасибо J. C. Phillipps за Ramda logo. Ramda logo artwork © 2014 J. C. Phillipps. Creative Commons Licensed CC BY-NC-SA 3.0.

Packages

No packages published

Languages

  • JavaScript 99.7%
  • Other 0.3%