0.1.3 • Published 5 years ago

@lerayne/redux-ssr v0.1.3

Weekly downloads
-
License
MIT
Repository
github
Last release
5 years ago

Пакет SSR-bootstrap был выделен мною в отдельный пакет из нескольких проектов чтобы его можно было совершенствовать и развивать в одном месте

Что он делает?

  • При помощи набора простых в использовании и конфигурации функций создает полноценное SSR-окружение для express с использованием react, react-router и redux:
    • Инициализирует redux, принимая на вход набор редюсеров и несколько функций для управления состоянием авторизации пользователя
    • Инициализирует react-router, принимая схему роутинга начиная с корневого Route
    • Обеспечивает cookie-based авторизацию при помощи bcrypt и jwt
  • Предоставляет набор инструментов для логина;

В планах:

  • Инструменты для регистрации, в том числе через социальные сети

Требования

Для работы библиотеки необходимы следующие условия:

  • В проект включен babel-polyfill (библиотека использует в частности async/await)
  • В зависимостях вашего проекта присутствуют все необходимые peerDependencies (см. package.json)

API

createStaticGenerator

функция генерирующая на выходе листенер URL-вызова express, например:

import {createStaticGenerator} from 'redux-ssr/lib/server'

const generateStaticPage = createStaticGenerator({
    ...params
})

app.get('/*', generateStaticPage)

Как видно, на вход она принимает ряд простых параметров, а на выходе мы получаем готовую функцию серверного рендеринга с управлением URL-роутингом, логином, инициализацией redux-контейнеров итд.

Интерфейс функции

(дополняется по мере реализации функционала):

getTemplate: (required) function(dynamicHTML, initialReduxState) -> HTML String
getRootRoute: (required) function(onEnter, onChange) -> React router's root route
jwtSecret: (required) String (JSON web token secret key для логина)
domain: (required)
reducers: (required) обычный для redux объект с редюсерами (не то что возвращает функция combineReduces, а то, что она принимает)
loginPagePath: //todo
rootPath: //todo
setUserState: //todo
isLoggedInFromState: //todo
keyExpiresIn: defaults to 30 days
authCookieName: //todo

createLoginEP

Создает эндпоинт для экспресс, ставится на POST адреса логина, например /login

app.post('/login', createLoginEP({
    ...params
}))

Интерфейс функции

(дополняется по мере реализации функционала):
domain: (required)
jwtSecret: (required)
getUser: (required) (async) функция получения пользователя из БД для сравнения пароля
keyExpiresIn: defaults to 30 days
authCookieName:
loginPagePath:
rootPath:

createLogoutEP