react-webpacker 1.2.2 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile.lock +1 -1
- data/README.md +45 -12
- data/lib/react-webpacker/version.rb +1 -1
- data/package.json +1 -1
- data/src/react-webpacker.js +2 -2
- metadata +2 -4
- data/test/__build__/packs/components/MyComponent.js +0 -2752
- data/test/__build__/packs/react-webpacker.js +0 -18292
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f9653948301c33e8c40030fb395ce91fba9091f8ee2bb2562a6802712f1679f5
|
4
|
+
data.tar.gz: 567c3bf3f323d03e2bc1f9af3484dd010984800598ddfbed05092991adccea7b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cbebfd2c71bebd5c7362ffdb3259d841e7209e1516c44dd9405eff8b31b68c20ba2ccef75bcec4905fd47ae741bcba8379d5ac547a34b81568590794abec1567
|
7
|
+
data.tar.gz: 4aa678150006c34f53fa3235aa0ce08abcd94b93abf094592071962c3679232b054b1834921c74676ebba8638b81f325858e9454b93555df030b0e6cf130ce5e
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -9,29 +9,62 @@ React-Webpacker is the smallest, enoughly-tested library for react with webpacke
|
|
9
9
|
- **NOT Provide** Server-Side Rendering.
|
10
10
|
|
11
11
|
## Usage
|
12
|
-
|
12
|
+
|
13
|
+
### Notes
|
14
|
+
- From Ruby to JS, `snake_case` in props will be transformed to `camelCase` **AUTOMATICALLY**.
|
15
|
+
- `react-webpacker` script should be called **ONCE** per rendered html page, **DON'T** call in looped views.
|
16
|
+
|
17
|
+
### ES Modules Way Usage
|
18
|
+
|
19
|
+
your-view.js
|
13
20
|
```js
|
14
|
-
|
21
|
+
import ReactWebpacker from 'react-webpacker'
|
22
|
+
import YourCoolComponent from 'path/to/YourCoolComponent'
|
23
|
+
|
24
|
+
const components = {
|
25
|
+
YourCoolComponent
|
26
|
+
}
|
27
|
+
|
28
|
+
ReactWebpacker.render(components)
|
29
|
+
```
|
30
|
+
|
31
|
+
your-view.html.erb
|
32
|
+
```erb
|
33
|
+
<%= javascript_pack_tag 'your-view', defer: true %>
|
34
|
+
|
35
|
+
<%= render_component('YourCoolComponent', {props_key: :value}) %>
|
15
36
|
```
|
16
37
|
|
17
|
-
|
18
|
-
|
38
|
+
### or Easy Usage
|
39
|
+
|
40
|
+
YourCoolComponent.js
|
41
|
+
```js
|
42
|
+
// Add component to `window` scope.
|
43
|
+
Object.assign(window, { YourCoolComponent })
|
44
|
+
```
|
45
|
+
|
46
|
+
react-webpacker.js
|
47
|
+
```js
|
19
48
|
import ReactWebpacker from 'react-webpacker'
|
20
49
|
|
21
50
|
ReactWebpacker.render()
|
22
51
|
```
|
23
52
|
|
24
|
-
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
= render_component('YourCoolComponent', {props_object: :value})
|
53
|
+
your-view.html.erb
|
54
|
+
```erb
|
55
|
+
<%= use_components ['path/to/YourCoolComponent'], defer: true %>
|
56
|
+
<%= javascript_pack_tag 'react-webpacker', defer: true %>
|
57
|
+
|
58
|
+
<%= render_component('YourCoolComponent', {props_key: :value}) %>
|
31
59
|
|
32
|
-
= javascript_pack_tag 'react-webpacker'
|
33
60
|
```
|
34
61
|
|
62
|
+
#### Notes
|
63
|
+
- DOM is rendered in order from the top, so you should call `ReactWebpacker#render()` with `defer` attribute.
|
64
|
+
- or after `render_component`
|
65
|
+
- You should call `ReactWebpacker#render()` after `use_components`, even if using `defer`.
|
66
|
+
|
67
|
+
|
35
68
|
## Compared with `React-Rails` and `React on Rails`
|
36
69
|
- They provide JavaScript library to load **ALL COMPONENTS**, too heavy and harmful for browser performance.
|
37
70
|
- They provide Server-Side Rendering, so library is too large.
|
data/package.json
CHANGED
data/src/react-webpacker.js
CHANGED
@@ -2,11 +2,11 @@ import React from 'react'
|
|
2
2
|
import ReactDOM from 'react-dom'
|
3
3
|
|
4
4
|
export default {
|
5
|
-
render() {
|
5
|
+
render(components = window) {
|
6
6
|
Array.from(document.querySelectorAll('div[data-component-name]')).forEach(
|
7
7
|
dom => {
|
8
8
|
const componentName = dom.getAttribute('data-component-name')
|
9
|
-
const component =
|
9
|
+
const component = components[componentName]
|
10
10
|
if (!component)
|
11
11
|
return console.error(
|
12
12
|
`Component ${componentName} is not defined in window scope`
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: react-webpacker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- euxn23
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-28 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email: euxn23@gmail.com
|
@@ -35,8 +35,6 @@ files:
|
|
35
35
|
- package.json
|
36
36
|
- react-webpacker.gemspec
|
37
37
|
- src/react-webpacker.js
|
38
|
-
- test/__build__/packs/components/MyComponent.js
|
39
|
-
- test/__build__/packs/react-webpacker.js
|
40
38
|
- test/dummy/components/MyComponent.jsx
|
41
39
|
- test/dummy/react-webpacker.js
|
42
40
|
- test/react-webpacker_test.js
|