Nano Hash - криптовалюты, майнинг, программирование

Новая минификация MVC6 и связывание с Bower/NPM

Я начал знакомиться с ASP.NET 5 и MVC 6 и вижу много сообщений в Интернете о Bower VS NPM.

  • Однако запущенный по умолчанию шаблон MVC использует оба, требуется ли это для работы Taskrunner (gulp) или есть другая причина?

  • Второй вопрос касается пути к ресурсу, в MVC ‹ 6 вы можете объявить относительный путь для исследования минимизированных/связанных js/css. Таким образом, каждое представление MVC будет иметь свой собственный путь к своему конкретному js/css. Как я могу сделать это с помощью глотка?

  • В MVC ‹ 6 js/css НЕ минимизируется при включенной отладке (как настройка по умолчанию), поэтому он остается читаемым. Я вижу возможность использовать оператор if-like для переменной среды, например

    имена среды="Разработка">путь к сценарию

и еще один для производства в представлении. Это кажется очень громоздким, есть ли простое решение для отказа от минимизации в отладке вместо того, чтобы дважды перечислять все пути (один минимизированный и один нет)?


  • Даже при запуске в режиме отладки вы можете указать в своем проекте ссылку на построенный путь. Настройте gulp с различными задачами для минимизации или нет, если вам нужно видеть это во время отладки. Посмотрите gulp watch, я думаю, это то, что вы ищете. Вы сможете вносить изменения во время разработки, и gulp будет запускать задачи для вас, когда ваши изменения будут сохранены. 23.11.2015
  • спасибо, сейчас я использую gulpwatch, чтобы компилировать меньше при сохранении, но я не понимаю, как это поможет мне с двумя сценариями: при отладке проекта и когда нет. Могу ли я видеть в файле gulp.js, если я отлаживаю? Тогда я мог бы использовать gulp-if, чтобы добавить минимизацию или нет. 24.11.2015
  • Я имею в виду, что все ваши пути должны просто указывать на созданный файл, dev или нет. Watch будет обновлять встроенный файл по мере разработки. Что касается минификации, у вас должна быть задача для этого. У вас может быть одна версия watch для минимизации, а другая — нет. 24.11.2015
  • Я не уверен, следую ли я (каким путям и файлу сборки, месту назначения css/js?), что я получаю, так это то, что с Watch я в основном создаю 2 файла css (одинаковые для js), один минимизированный и один нет. а затем иметь оператор if в представлении, чтобы определить, использовать минимизированный или нет? (Я предпочитаю избегать этой логики просмотра). 24.11.2015
  • Вам просто нужно 2 задачи. Тот, который минимизирует и тот, который не делает. Тогда вам нужно 2 версии часов для вызова каждой. Оба создадут файлы и оба поместят эти встроенные файлы в одно и то же место. Ваше приложение ищет там файлы, и ему все равно, какая у него версия. Затем вы можете запустить любую версию часов, которую вы хотите, чтобы увидеть минимизированный js или нет. 24.11.2015
  • Да, я понимаю, но, учитывая, что оба файла будут создаваться с одним и тем же именем файла, мне придется вручную включать/отключать определенные часы, чтобы убедиться, что правильный код попадает в файл, как еще система узнает, что я нахожусь в отладке . 24.11.2015
  • Не совсем так, вы действительно запускаете watchWithout только во время разработки и запускаете задачу для минимизации перед переходом к производству. Я просто показывал вам возможность работать в обоих направлениях, потому что думал, что вы пытаетесь это сделать. 24.11.2015
  • Вы пытаетесь изменить настройку приложения, чтобы показать одну версию js или другую? Это не сработает, потому что это встроенный файл js. Вам нужно будет иметь обе версии и оператор if, как вы говорите, обернутый вокруг всех путей, что не сработает. Единственный раз, когда вам нужно увидеть неминифицированную версию, это во время разработки. В противном случае просто используйте инструменты разработчика Chrome, чтобы украсить js значком {}. 24.11.2015
  • правильно, это то, что я думал, что нужно, просто некоторая путаница :) Спасибо. 24.11.2015

Ответы:


1

У вас есть одна версия watch, которая минимизирует ваши файлы js, а другая — нет. В любом случае все пути вашего проекта могут просто указывать на созданный файл js, чтобы вам не приходилось переключаться между dev или prod. Вам нужно будет разбить материал минификации из задачи «скрипты» ниже и создать задачу, которая просто делает это.

//Concatenate & Minify JS
gulp.task('minscripts', function () {
    return gulp.src(config.alljs, { base: 'public/' })
        .pipe($.concat('all.js'))
        .pipe(gulp.dest('_build'))
        .pipe($.rename('all.min.js'))
        .pipe($.uglify())
        .pipe(gulp.dest(config.build));
});

gulp.task('scripts', function () {
    return gulp.src(config.alljs, { base: 'public/' })
        .pipe($.concat('all.js'))
        .pipe(gulp.dest('_build'))
        .pipe($.rename('all.min.js'))
        .pipe(gulp.dest(config.build));
});

gulp.task('watchWith', function () {
    gulp.watch('public/app/views/*.js', ['lint', 'minscripts']); //<- runs 'scripts' here
    gulp.watch('public/css/*.less', ['less']);
});

gulp.task('watchWithout', function () {
    gulp.watch('public/app/views/*.js', ['lint', 'scripts']);
    gulp.watch('public/css/*.less', ['less']);
});
24.11.2015
  • Хотя это не отвечает на вопросы 1 и 2, я буду считать это ответом. Что касается вопроса 2, я думаю создать папку для каждой страницы и просто минимизировать это содержимое для каждой страницы/папки. 24.11.2015
  • Вы можете сделать это, хотя вы потеряете преимущество того, что это одностраничное приложение. Если вы пытаетесь изолировать проблемы для целей отладки, я бы просто использовал ведение журнала. Если вы хотите создать встроенный файл для каждого каталога, вам просто нужно изменить исходный путь: gulp.src(), в добавленном мной примере вы можете видеть, что у меня есть пути в файле конфигурации, просто укажите путь или пути вам нужна эта функция src, которая принимает массив, и вы сможете делать то, что хотите. Вам просто нужно задание для каждого. 24.11.2015
  • Это далеко не одностраничное приложение, я думаю, у него около 50-100 действий/просмотров. И, конечно же, я бы не хотел, чтобы все css/js были в одном большом файле site.js, как показано в примерах. На каждой странице есть несколько общих/общих js и некоторые специфичные для страницы js. 24.11.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..