Я ищу руководство в отношении следующих технологий и как лучше интегрировать / настраивать движущиеся задачи ...
У нас есть несколько существующих веб-приложений, использующих ядро asp.net и asp.net. Мы хотим обновить и продвинуть их вперед, используя преимущества более современных фреймворков JavaScript vue / angular. В данный момент мы идем с vue, так как считаем, что это самый легкий прыжок, учитывая нашу текущую структуру, основанную на нокауте. Эти вопросы / проблемы схожи независимо от конкретной рассматриваемой структуры JavaScript
В настоящее время мы используем соответствующие инструменты среды cli, создаем проект / решение, затем копируем ClientApp в папку с тем же именем в vs.net (затем обновляем файл startup.cs) для интеграции с технологией hmr.
Соображения ... лучше ли переходить к полному подходу типа spa и полностью отойти от кодирования на уровне страниц? Хотя это может быть лучше для обучения, нам нужны способы переноса существующих приложений без полного переписывания. Могут ли эти два подхода легко жить в одном и том же решении (в данный момент мы мигрируем в vue). Есть ли в git-репозиториях такой комбинированный подход?
Я считаю, что лучший ответ - это комбинация. Одно решение, где маршруты могут использовать историческую маршрутизацию mvc к контроллеру / методу и просмотру, в то время как другие могут вместе направлять на отдельные страницы spa Я еще не нашел хранилище, которое демонстрирует эту комбинацию. Потенциально, есть веская причина, по которой его трудно найти.
Что касается vue.js, мы изменили Startup.cs, чтобы использовать vue cli 3 vue-cli-service для сервера нашей страницы
app.UseSpa(spa => { spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
//spa.UseReactDevelopmentServer(npmScript: "start");
// run npm process with client app
spa.UseVueCli(npmScript: "serve", port: 8080);
// if you just prefer to proxy requests from client app, use proxy to SPA dev server instead,
// app should be already running before starting a .NET client:
// spa.UseProxyToSpaDevelopmentServer("http://localhost:8080"); // your Vue app port
} });
Я также видел решения, в которых они изменили автозагрузку для непосредственного использования app.UseWebpackDevMiddleware и указали на cli-service / webpack.config.js
app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
{
HotModuleReplacement = true,
ConfigFile = Path.Combine(env.ContentRootPath, @"node_modules\@vue\cli-service\webpack.config.js")
});
Оба подхода здесь могут работать нормально, но я задаюсь вопросом, какой из них мы должны установить как лучший подход. По сути, я чувствую, что, вероятно, лучше остаться с # 1, так как он больше всего соответствует документации vue cli, где использование UseWebpackDevMiddleware может просто добавить больше путаницы к миксу.