• Stars
    star
    232
  • Rank 167,142 (Top 4 %)
  • Language
    JavaScript
  • License
    Other
  • Created about 9 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

React's ExecutionEnvironment module extracted for use in other packages & components

exenv

React's ExecutionEnvironment module extracted for use in other packages & components.

Usage

npm install exenv --save
var ExecutionEnvironment = require('exenv');

// You now have...
ExecutionEnvironment.canUseDOM             // is the DOM available? i.e window document etc. 
ExecutionEnvironment.canUseWorkers         // are Web Workers available?
ExecutionEnvironment.canUseEventListeners  // are Events available? i.e addEventListener etc.
ExecutionEnvironment.canUseViewport        // is there a viewport? i.e window.screen

Differences from React's ExecutionEnvironment

The ExecutionEnvironment lib in React 0.13 includes an isInWorker property, which is !canUseDOM. This is highly specific to React internals and probably (a) hacky and (b) not useful to other packages, so it has been left out. Please open an issue with your thoughts if you disagree or have a better idea.

Why?

A number of packages and components use React's private ExecutionEnvironment lib to detect available features, particularly to detect server-side rendering, e.g

canUseDOM = require('react/lib/ExecutionEnvironment').canUseDOM; // BAD

It is bad practice to use React internals and this is likely to be broken / disabled in the future.

Use this package instead!

More Repositories

1

react-select

The Select Component for React.js
TypeScript
27,283
star
2

classnames

A simple javascript utility for conditionally joining classNames together
JavaScript
17,249
star
3

react-codemirror

Codemirror Component for React.js
JavaScript
1,540
star
4

react-hammerjs

ReactJS / HammerJS integration. Support touch events in your React app.
JavaScript
939
star
5

react-tappable

Tappable component for React
JavaScript
861
star
6

react-input-autosize

Auto-resizing input field for React
JavaScript
753
star
7

sydjs-site

SydJS Meetup Website
JavaScript
535
star
8

react-md-editor

React.js Markdown Editor Component
JavaScript
508
star
9

generator-react-component

React Component Project Generator
JavaScript
220
star
10

react-date-select

A React Date Select / Picker Input Component
CSS
159
star
11

happiness

Standard customised to make me happy
JavaScript
124
star
12

react-component-gulp-tasks

Common Gulp tasks I use across my React Component projects
JavaScript
112
star
13

react-value

Adding Value to React
JavaScript
91
star
14

node-premailer

Node.js wrapper for premailer.dialect.ca
JavaScript
74
star
15

react-container

A flexible container for laying out React apps. Part of TouchstoneJS.
JavaScript
57
star
16

react-domify

Like JSON.strinfigy but uses React to generate DOM elements
JavaScript
54
star
17

picture-tour-app

Example React.js Cordova / PhoneGap App with Babel, Webpack and Hot Reloading
JavaScript
46
star
18

react-fixed

A lightweight component that sticks to the bottom of the window while scrolling. Neat for toolbars.
JavaScript
33
star
19

generator-react-express

React / Express Project Generator
JavaScript
33
star
20

react-alt-text

React.js Component for displaying alternate text when the [alt] key is pressed
JavaScript
32
star
21

store-prototype

Simple class for creating event-driven Data Stores
JavaScript
32
star
22

keystone-forum

The source code for forums.keystonejs.com (in development)
JavaScript
30
star
23

react-scroll-spy

React.js mixin for updating state based on the window's scroll position
JavaScript
29
star
24

react-context-example

An example / test / playpen looking at how Context works in React.js
JavaScript
27
star
25

node-express-workshop-complete

The complete reference implementation for node-express-workshop
JavaScript
18
star
26

react-date-input

A React.js Date Input Component
CSS
16
star
27

react-express-starter

ReactJS / Express Starter Project
CSS
16
star
28

node-mascot

✨🐢🚀✨
JavaScript
14
star
29

html-stringify

Converts Javascript Objects or Arrays to pretty HTML
JavaScript
14
star
30

model-transform

Common toJSON Transform for KeystoneJS / Mongoose Models
JavaScript
13
star
31

react-component-starter

ReactJS Component Starter Project
JavaScript
12
star
32

react-conf-2016

React Conf 2016 API
JavaScript
10
star
33

randomkey

Lightweight node.js lib for generating random string keys
JavaScript
10
star
34

prisma-day-keystone-workshop

TypeScript
10
star
35

asyncdi

Async Dependency Injection
JavaScript
9
star
36

block-timer

A node.js timer implementation for timing blocks of code that are run one or more times
JavaScript
8
star
37

node-bpay

Node.JS BPAY Customer Reference Number Generator and Validator
JavaScript
7
star
38

talk-sydjs-webcomponents

Resources for my talk on Web Components at SydJS, June 2014
CSS
6
star
39

keystone-next-prisma-demo

TypeScript
6
star
40

babel-plugin-example

JavaScript
5
star
41

react-sydney-2021-stack

Demo content for my talk at React Sydney, May 2021
TypeScript
5
star
42

list-to-array

Simple javascript lib for converting a [comma || space] delimited string to an array
JavaScript
4
star
43

aba

Deprecated; use aba-generator instead
JavaScript
4
star
44

sydney-mongodb-meetup

The resource files for the hand-on KeystoneJS session @ the Sydney MongoDB Meet-up, 25th Feb 2014
CSS
4
star
45

qs-set

Querystring manipulator for node.js and the browser
JavaScript
2
star
46

prototype-mobile-app

Prototype Mobile App
JavaScript
2
star
47

admin-ui-prototype

Starting from scratch
CSS
2
star
48

editor-ui-playground

TypeScript
1
star