Подтвердить что ты не робот

ReactJS.net - Как использовать модули ES6

У меня успешно работает ReactJS.Net, в том числе с использованием синтаксиса ES6.

Я использую конвейер преобразования Jsx по умолчанию, который использует Babel. Если посмотреть на источник в браузере, я вижу, что код ES6 был преобразован в ES5 с помощью ReactJS.Net

Мне не удалось заставить модули работать.

Браузер дает мне 2 ошибки:

Uncaught ReferenceError: exports is not defined
Uncaught ReferenceError: require is not defined

Как использовать модули ES6?

Простейший пример:

Lib.js

export function square(x) {
    return x * x;
}

UserOfLib.js

import { square } from 'Lib';
console.log(square(11)); 

Возвращается к этому (смотря на источник браузера):

Lib:

// @hash v3-AD133907ABEC5D32B3768A3AF2301FC9
// Automatically generated by ReactJS.NET. Do not edit, your changes will be overridden.
// Version: 2.0.1 (build 5e9476a)
// Generated at: 08-Nov-15 6:40:26 AM
///////////////////////////////////////////////////////////////////////////////
Object.defineProperty(exports, "__esModule", {
    value: true
});
exports.square = square;

function square(x) {
    return x * x;
}

UserOfLib:

// @hash v3-812C209AFED25C2B4507E5769B0D899B
// Automatically generated by ReactJS.NET. Do not edit, your changes will be overridden.
// Version: 2.0.1 (build 5e9476a)
// Generated at: 08-Nov-15 6:40:26 AM
///////////////////////////////////////////////////////////////////////////////
var _Lib = require('Lib');

console.log((0, _Lib.square)(11)); // 121
4b9b3361

Ответ 1

В настоящее время ReactJS.Net не обрабатывает модули. Если вы хотите использовать модули, вам нужно будет использовать модуль, например Webpack или Browserify, для компиляции модулей до ванильного JavaScript. Реализация поддержки модулей в самой ReactJS.NET - это нетривиальная работа, так как она должна иметь дело с зависимостями и загрузкой модулей в правильном порядке, а также хорошо проверенные решения, такие как Webpack, уже существуют.