@jerad.kuphal
Чтобы использовать React, RequireJS и Babel вместе для трансформации JSX в браузере, вам необходимо следующее:
1
|
npm install react react-dom |
1
|
npm install requirejs |
1
|
npm install @babel/core @babel/preset-env @babel/preset-react |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
requirejs.config({ paths: { 'react': 'node_modules/react/umd/react.production.min', 'react-dom': 'node_modules/react-dom/umd/react-dom.production.min', 'babel': 'node_modules/@babel/standalone/babel.min', }, shim: { 'react': { exports: 'React' }, 'react-dom': { deps: ['react'], exports: 'ReactDOM' } } }); |
1
|
<script src="node_modules/requirejs/require.js" data-main="requirejs.config.js"></script> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
define(['react', 'react-dom', 'babel'], function (React, ReactDOM, Babel) { class MyComponent extends React.Component { render() { return <h1>Hello, {this.props.name}!</h1>; } } Babel.registerPreset('env', '@babel/preset-env'); Babel.registerPreset('react', '@babel/preset-react'); return { render: function (container, props) { ReactDOM.render( Babel.transform( '<MyComponent name="' + props.name + '" />', { presets: ['env', 'react'] } ).code, document.getElementById(container) ); } }; }); |
@jerad.kuphal
В этом примере используется RequireJS для загрузки React, ReactDOM и Babel. Файл конфигурации RequireJS указывает пути к зависимым модулям.
В компоненте React MyComponent
используется JSX синтаксис.
В функции render компонент JSX преобразуется с помощью Babel в обычный JavaScript код и рендерится с помощью ReactDOM.
В HTML-файле подключается RequireJS, который загрузит и выполнит конфигурацию и компонент React.
Теперь вы можете использовать функцию render
для отображения компонента на странице. Например:
1 2 3 |
require(['component'], function (Component) { Component.render('container', { name: 'World' }); }); |
Это пример основной структуры проекта, у вас может быть немного другая структура файлов и расположение зависимостей, но основная идея остается прежней.