Могу ли я применить архитектуру Flux с ReactJS.net?

Как создать потоковую архитектуру в asp.net с помощью reactjs.net?

У меня будет несколько файлов. Jsx, как я успею быть всем rendenizador сервером?

В этом примере => Link, он создается с использованием asp.net, но не отображается на сервере.


person user3892418    schedule 30.07.2014    source источник
comment
в настоящее время, март 2015 года, не хватает информации о реакции + потоке + .net. все учебные пособия по потокам включают узел ... лучший сайт для использования реакции на .net на данный момент - это reactjs.net, однако даже там нет информации об использовании шаблона потока на .net... ;-(   -  person nanonerd    schedule 18.03.2015


Ответы (2)


В настоящее время я работаю над функцией в качестве испытательного стенда для reactjs + flux в нашем приложении .net. Вот как это устроено.

  1. Мы используем nodejs в качестве менеджера пакетов. мы используем инструменты NodeJs Visual Studio, чтобы получить интерактивное окно nodejs в VS и иметь возможность создавать проекты NodeJs. http://nodejstools.codeplex.com/
  2. Задача Gulp вызывает браузер для поиска в корневом jsx и нахождения всех зависимостей. Gulp также называет библиотеку reactify, используемую для преобразования файлов jsx. Объединенный файл .js помещается в каталог на нашем веб-сайте mvc.
  3. Задача Gulp также копирует все соответствующие файлы js в проект mvc.net.
  4. При разработке мы используем расширение Task Runner для Visual Studio для запуска задачи Gulp, которая отслеживает изменения, поэтому нам не нужно «продолжать сборку» во время разработки. Он использует библиотеку «watchify».
  5. Мы используем Jest для тестирования — хотя у нас были проблемы с NodeJ, и jest хорошо работал в новейшей версии NodeJ, поэтому нам пришлось понизить класс до 0.10.36.
  6. мы используем TeamCity для запуска задачи Gulp перед созданием нашего решения (имеем тестовую настройку, но еще не добавили ее в мою новую функцию).

Gulp делает большую часть магии. Вот копия нашего файла Gulp (он беспорядочный, но я все еще учусь). Многие задачи заключаются в просмотре файлов css js и jsx, но я надеюсь, что это поможет.

var gulp = require('gulp');
var source = require('vinyl-source-stream');
var browserify = require('browserify');
var watchify = require('watchify');
var reactify = require('reactify');
var concat = require('gulp-concat');
var buffer = require('vinyl-buffer');
var uglify = require('gulp-uglify');

var createbundler = function () {

    var bundler = browserify({
        entries: ['./app/js/VaeApp.jsx'], // Only need the root js file, browserify finds the dependencies
        transform: [reactify], // We want to convert JSX to normal javascript
        debug: false, // include sourcemapping for minified scripts?
        cache: {}, packageCache: {}, fullPaths: true // Requirement of watchify
    });
    return bundler;
}
gulp.task('js', function () {

    var bundler = createbundler();

    bundler.bundle()
        .pipe(source('bundle.js'))
        .pipe(buffer())// <----- convert from streaming to buffered vinyl file object
        .pipe(uglify())
        // Create the initial bundle when starting the task
        .pipe(gulp.dest('../Mvc.Web/Scripts/Flux/js'));
});

gulp.task('js-shim-sham', function () {
    gulp.src('./node_modules/es5-shim/es5-*.min.js')
            .pipe(gulp.dest('../Mvc.Web/Scripts/Flux/js'));
    console.log("updated shim-sham");
});
gulp.task('js-dev', function () {

    var watcher = watchify(createbundler());

    return watcher
    .on('update', function () { // When any files update
        var updateStart = Date.now();
        console.log('Updating!');
        watcher.bundle().pipe(source('bundle.js'))
        .pipe(buffer())// <----- convert from streaming to buffered vinyl file object
        .pipe(gulp.dest('../Mvc.Web/Scripts/Flux/js'));
        console.log('Updated!', (Date.now() - updateStart) + 'ms');
    })
    .bundle()
    .pipe(source('bundle.js'))
    .pipe(buffer())// <----- convert from streaming to buffered vinyl file object
   // .pipe(uglify())
    // Create the initial bundle when starting the task
    .pipe(gulp.dest('../Mvc.Web/Scripts/Flux/js'));
});

var runcss = function () {
    var updateStart = Date.now();
    gulp.src('./app/css/document/*.css')
            .pipe(concat('main.css'))
            .pipe(gulp.dest('../Mvc.Web/Scripts/Flux/css'));

    console.log('Updated!', (Date.now() - updateStart) + 'ms');
};

var runimages = function () {
    var updateStart = Date.now();
    gulp.src('./app/img/*.*')
            .pipe(gulp.dest('../Mvc.Web/Scripts/Flux/img'));
    console.log('Updated!', (Date.now() - updateStart) + 'ms');
};
gulp.task('styles', function () {

    runcss();
    runimages();

});
gulp.task('styles-dev', function () {
    runcss();

    gulp.watch('./app/css/document/*.css', runcss);

    runimages();
    gulp.watch('./app/img/*.*', runimages);

});

// Just running the two tasks
gulp.task('build-dev', ['js-dev', 'styles-dev', 'js-shim-sham']);

// Just running the two tasks
gulp.task('build', ['js', 'styles', 'js-shim']);
person DanCaveman    schedule 19.03.2015
comment
Дэн, есть прогресс? Мне было интересно, можете ли вы реализовать Flux с помощью .net MVC и React. У меня есть связанный с этим вопрос, размещенный здесь: stackoverflow.com/questions/31599992/ - person nanonerd; 24.07.2015
comment
Я ответил на ваш другой пост (но это может сбить с толку). По сути, на наших серверах сборки с непрерывной интеграцией установлен node.js; они запускают задачу gulp, которая проталкивает все файлы jsx и js через node.js, чтобы выдать статический чистый файл javascript, который может обслуживаться нашими веб-серверами без установленного на них node.js. -- клиент получает файл bundle.js в приведенном выше примере кода. - person DanCaveman; 07.08.2015
comment
@nanonerd Вот подход к использованию React в ASP.NET, который дает вам свободу использовать поток или сокращение. Он также поддерживает маршрутизацию на стороне сервера/клиента с использованием react-router. github.com/pauldotknopf/react-dot-net - person Paul Knopf; 07.03.2016

Проверьте реагировать-точка-не.

Он использует webpack/gulp с ASP.MVC. он поддерживает redux/flux, поддерживает маршрутизацию на стороне клиента с помощью react-router, с F5 в любое время для повторного рендеринга той же страницы с сервера.

person Paul Knopf    schedule 07.03.2016
comment
Привет Пол, пожалуйста, помогите определить и закрыть дубликаты, если вы их найдете, вместо того, чтобы несколько раз ссылаться на свой git. - person bummi; 07.03.2016