Skip to main content

A zero-fuss way to create non single page apps with react.

Project description

React Pages

A zero-fuss way to create non single page apps with react.
  • Zero Configuration required. Mostly thanks to create-react-app.
  • Custom react scripts inbuilt.
  • Import non-compiled JSX from anywhere (create-react-app doesn't allow this).
  • Ready-to-serve production builds with the proper paths. (using --static-url option)
  • Natively use react in django.
  • Go from development to production with ease.
  • Caches npm stuff. You'll notice that the command react-pages project runs much after the 1st time.

Terminology

Project

The project contains the node.js modules necessary to use react and the pages you create.

└── my_project
    ├── package.json
    ├── package-lock.json
    ├── .env
    ├── .gitignore
    ├── public
    │   ├── favicon.ico
    │   ├── index.html
    │   └── manifest.json
    <pages>

Page:

A page is a directory containing at least an index.js file, (and other css/js files specific to your application.)

└── my_page
    ├── App.css
    ├── App.js
    ├── App.test.js
    ├── index.css
    ├── index.js
    ├── logo.svg
    └── registerServiceWorker.js

Install

PyPI version (tag)

pip install react-pages

License: MIT License (MIT)
Requires: Python >=3.6


If you don't have node,

For bash, use nvm.

For fish shell, you can use fisher fnm (get fisher).

Once you have npm/node, react pages will work as expected.

TODO: make react-pages automatically install node

Commands

# Basic

$ react-pages project my_project # create a "project"

$ cd my_project # don't forget to do this!

$ react-pages page my_page # create a "page"

$ react-pages develop # development

$ react-pages deploy # production

# (open ./my_project/build/my_page/index.html in browser)

# Misc

$ react-pages runserver # django runserver alternative

$ react-pages clear-cache

Django Integration

Quickstart

settings.py

INSTALLED_APPS = [
    ...
    'react_pages',
    ...
]

# specify the react-pages project directory
REACT_PAGES_PROJECT_DIR = os.path.join(BASE_DIR, 'my_project')

STATICFILES_DIRS = [
    ...
    os.path.join(REACT_PAGES_PROJECT_DIR, 'build')  # mark the build dir as a static file dir
    ...
]

template.html

{% load react_pages %}
...
{% render_react_page 'my_page' %}
...

Remember to use react-pages runserver instead of manage.py runserver!

(This was done to remove the manual build step).

That's it!
React Pages will pick-up the "my_page" page from "my_project" project and do the necessary work to transpile react JSX.

Django Context

You can pass django template context varialbes like so -

views.py

context['py_var'] = [1, 2, 3]

template.html

{% render_react_page 'my_page' js_var=py_var %}

App.js

console.log(js_var);

Note: These must be JSON serializable or JSON serialized.

For production, just put DEBUG=False in settings.py and relax.

Note: This is not implemented yet.

Existing projects

React Pages will automatically patch itsef into any existing project, that was created using create-react-app.

Just run react-pages project . from your project directory!

Projects not using create-react-app will probably work, but no guarantees can be made.

Issues

  • It might not uninstall using pip.

    This is a side-effect of react-page's caching.
    As a temporary fix, Run react-pages clear-cache, and then pip uninstall react-pages will work as expected.


Buy Me A Coffee

🐍🏕️

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

react-pages-0.1.9.tar.gz (135.4 kB view details)

Uploaded Source

Built Distribution

react_pages-0.1.9-py2.py3-none-any.whl (151.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file react-pages-0.1.9.tar.gz.

File metadata

  • Download URL: react-pages-0.1.9.tar.gz
  • Upload date:
  • Size: 135.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for react-pages-0.1.9.tar.gz
Algorithm Hash digest
SHA256 38eaf04269e7d9b3e71b50b9134675ee1e4b4b8a77f3e18dcb5e7a1c4e10daf1
MD5 4eee170df9c049b70ebf241697947a2c
BLAKE2b-256 12210a18a05820416312d09c6b1b1b08405e4d2b3f2e5f395fadfa1d5559d2a8

See more details on using hashes here.

File details

Details for the file react_pages-0.1.9-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for react_pages-0.1.9-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 1265f1f073bcda22fefd12df7a0008a61ec995de9b4033f6787a7e68c5005818
MD5 2354cb76f6397b0f54cf040d6ca1459f
BLAKE2b-256 2763dfe833893e2b9954ba1b6441d9d528444ceb29c36c2f0c24a75483db9c39

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page