reacton-loader
Loader for single-file Reacton components in Webpack
- Added example Webpack build for routes:
<my-menu>
<nav #nav>
<a href="/">Home</a>
<a href="/about">About</a>
<a href="/contacts">Contacts</a>
<a href="/john/32">John</a>
<a href="/john?age=32">Age</a>
</nav>
<script>
import { myRoute } from '../Routes'
exports = class {
static connected() {
this.$refs.nav.addEventListener('click', event => {
event.preventDefault()
this.$route(myRoute, event.target.href)
})
}
}
</script>
</my-menu>
- Added example Webpack build for events:
<my-component>
<button #reverse>Reverse array</button>
<button #new>New array</button>
<button #clear>Clear array</button>
<script>
import { myEvent } from '../Events'
exports = class {
static connected() {
this.$refs.reverse.addEventListener('click', () => {
this.$event(myEvent, 'reverse')
})
this.$refs.new.addEventListener('click', () => {
this.$event(myEvent, 'new-colors', {
detail: ['blue', 'orange', 'purple', 'gold']
})
})
this.$refs.clear.addEventListener('click', () => {
this.$event(myEvent, 'clear-colors')
})
}
}
</script>
</my-component>
Install
npm i reacton-loader -D
A fragment of the working project is shown below:
webpack.config.js
module: {
rules: [
{
test: /\.htm$/,
loader: 'reacton-loader',
},
...
]
},
Mixins.js
export default class {
getStringInUpperCase(str) {
return str.toLocaleUpperCase()
}
}
MyComponent.htm
<my-component>
<h1>Hello, {{ getStringInUpperCase(message) }}!</h1>
<style>
h1 {
color: {{ color }};
}
</style>
<script>
import Mixins from '../Mixins'
exports = class extends Mixins {
constructor(props) {
super()
this.message = 'Reacton'
this.color = props.color
}
static mode = 'open'
}
</script>
</my-component>