2017-02-18 1 views
2

Я добавляю проект типа ВВС к проекту VS2015 MVC 5 (что делает его ASP.NET 4, не asp.net 5 или asp.net 6 code: только MVC - это версия 5). Это единственная цель для всех аспектов моего вопроса, я не могу использовать обобщенные или теоретические рекомендации для машинописных, node.js, загрузчиков модулей и т. Д.Тип документа в VS 2015 ASP.NET 4 MVC 5 - какие рабочие комбинации настроек и выбора?

Проблема проще с ASP.NET Core. Но это не то, с чем я столкнулся. Все обычные источники примеров и руководств избегают или предоставляют отходы, когда дело доходит до ASP.NET 4 MVC 5, потому что это сложно. И никто не будет точно указывать, насколько трудно или что именно являются препятствиями.

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

Я понимаю мнения, у меня даже есть один. Но я ищу эмпирический ответ: какая комбинация доказала свою эффективность для производственной команды.

Так вот конкретные элементы, которые должны быть решены, и заставить работать в рамках исправной среднего размера ASP.NET MVC 4 5 LOB приложение:

  1. версия

    Visual Studio по машинописи , Это проблема установки (проще всего, используя узел), и параметры «Инструменты/параметры - машинопись» должны совпадать.

  2. Тестирование в стиле браузера (обычно ручной рабочий процесс TDD) или тестирование node.js (автоматическое). Это должно быть выбрано вверх, чтобы предотвратить дополнительную репликацию tree-tree. Мы собираемся использовать браузерные ... phantomjs, используя WallabyJs.

  3. NPM @ types/library-name: предполагается заполнить папку node_modules как с именем библиотеки, так и с именем library.name, основанным только на package.json с ссылками на @Types. Но на самом деле требуется, чтобы package.json содержал ссылку для имени @ types/library-name и имени библиотеки для работы в моем проекте VS 2015 ENT v3 и asp.net 4 mvc 5. И все указанные версии требуют ручной коррекции ', и даже тогда процесс поиска версии немного подозрительный. Этот процесс @types, возможно, не подходит для ASP.NET 4 MVC 5, но я не могу сказать, какой может быть альтернатива коррекции. @Types в настоящее время является единственным рекомендуемым вариантом для машинописного текста.

  4. Какая версия ECMAScript: es6, по-видимому, слишком далеко впереди. Вероятно, es2015, но это (возможно), похоже, связано с несколькими другими проблемами. Предположительно, эти обозначения одинаковы, но есть два места, которые они могут установить. Я выбрал es2015 в tools/options/typescript. Но неправильная настройка этих (сейчас 3) настроек может быть проблемой.

  5. Модуль системы: CommonJs предназначен для узлового и автоматизированного тестирования, а тестирование разработки VS автоматизировано только для серверных, а VS UI - это ручной процесс. Поэтому AMD требует, чтобы JS, вероятно, был вариантом для VS, но он добавляет свой собственный рабочий процесс и обслуживание и соображения, которые действительно трудно получить прямо в ASP.NET. Использование компоновки ASP.NET и ссылок с тройной слэшей (надежное) может работать, но после того, как вы поместили библиотеки в узловые модули, вы хотели бы использовать полный путь в узловых модулях в slame имени файла в инструкции import. Это очень неуклюжий и включает в себя большинство догадок. Но решение всего этого вопроса может быть «ключевым» для общего вопроса.

Возможно, существует множество других, более мелких проблем. Но кто-то, кто это сделал, решит все упомянутые предметы и другие.

Что я ищу - это все настройки по всем этим вопросам в деталях на основе рабочего приложения «Виджеты» в реализации ASP.NET 4 MVC 5 для тестов на устройство/поведение на основе браузера в VS 2015. Те, кто это сделал он поймет.

Большое спасибо за ваше рассмотрение.

+0

Обратите внимание, что ответ @ aluan-haddad является отличным подспорьем в машинописном тексте и дереве решений для рассмотрения этих проблем. Однако, основываясь на его ответе, я отредактировал свой вопрос, чтобы уточнить, что я ищу только для n-грязного руководства из траншей на полное решение для машинописного текста для ASP.NET 4 MVC 5, включая блок/поведение на основе браузера тестирование кода машинописного текста. –

+0

Хотя я понимаю, что вы уточнили свой вопрос, я просто скажу, что вы никогда не найдете решение для тестирования TypeScript, которое не является _also_ решением для тестирования JavaScript. –

+1

Aluan, пожалуйста, помните, что я сказал это: «Но я ищу эмпирический ответ: какая комбинация доказала свою эффективность для производственной команды». Я считаю, что все, с чем я столкнулся, - это проблема конфигурации. Все проблемы с конфигурацией связаны с неправильным пониманием цели конкретных конфигураций или отсутствием объяснения общей цели комбинаций конфигурации. –

ответ

3

Что вам не хватает - это разделение проблем, несмотря на первоначальное преимущество таких шаблонов стартера, они начинают вызывать случайные зависимости и усложнять ментальную модель. Гораздо проще иметь свой интерфейс в отдельном проекте.

Независимо: версия

Visual Studio по машинописи.

Всегда используйте самые последние доступные. Это управляет версией TypeScript, которая поддерживает среду IDE. Вероятно, вы закончите компиляцию в отдельном процессе или в браузере во время разработки. Опять же, вы захотите использовать последнее, но скорее всего оно будет установлено с другим менеджером пакетов.

Тестирование в стиле браузера (обычно ручной рабочий процесс TDD) или node.js тестирование (автоматическое). Это должно быть выбрано вверх, чтобы предотвратить больше репликация дерева эскимов.

Во-первых, я определенно согласен с важностью выбора фронта, но, если это еще возможно, просто неприятно, чтобы добавить тесты к существующему проекту.

Рабочие процессы TDD связаны с автоматическим тестированием, поскольку они полагаются на быструю обратную связь. Это ортогонально, выполняете ли вы свои тесты в браузере или используете NodeJS.

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

Поскольку вы пишете внешнее приложение JavaScript, вы, вероятно, захотите запустить несколько тестов в браузере. Однако, как заявил дядя Боб (Robert C. Martin), взгляды должны быть немыми и нуждаться в небольшом тестировании. Моя интерпретация этого заключается в том, что мы не должны тратить слишком много времени на тестирование таких вещей, как «Угловые» или «Реактивы» ,, чтобы обеспечить их правильную визуализацию и вместо этого сосредоточиться на тестировании поведенческих элементов системы, таких как службы и простые старые функции.

Таким образом, вы можете захотеть запустить тесты своих клиентских служб против фактического времени выполнения браузера, а не только Node.js, и это разумно.

Существует множество библиотек для тестирования, которые помогут вам в этом. У меня нет конкретной рекомендации, кроме того, чтобы сказать, что вы должны найти надежного тестового бегуна и простую библиотеку утверждений. Пробные и истинные библиотеки тестирования, такие как QUnit и Tape, являются примерами надежных опций.

Последнее примечание: важно не путать концепцию тестирования интеграции с прогонными тестами в веб-браузере, это совершенно верно для запуска тестов стиля TDD, что подразумевает модульные тесты в веб-браузере.

NPM @ типы/имя-библиотеки: предполагается заполнить папку node_modules с и библиотекой имени и библиотеки-name.d.ts, но требует package.json содержать ссылку для обоих @ типы/имя библиотеки и имя библиотеки для работы в моем проекте VS 2015 ENT v3 и asp.net 4 mvc 5.

Проще говоря, это идет назад, чтобы отсоединить ваш передний конец от вашего заднего конца. Visual Studio и, конечно же, ASP.NET не имеют ничего общего с версиями пакетов типов.

  1. Если пакет поставляется со своими объявлениями типа, тогда вам не нужно устанавливать пакет вспомогательных типов, иначе вы это сделаете.

  2. В любом случае установите зависимости JavaScript и TypeScript с помощью JavaScript-менеджера пакетов (таких как NPM, JSPM или пряжа).

  3. Не используйте для этого NuGet!

  4. Как вы полагаете, есть проблемы с версированием, в настоящее время это сложная проблема в TypeScript. Однако в очередной раз это не имеет никакого отношения к ASP.NET или Visual Studio.

Какая версия ECMAScript: ES6, по-видимому слишком далеко вперед. es2015 , скорее всего, но это, по-видимому, имеет (возможно) отношения к нескольким другим вопросам.

ES6 - это то же самое, что и ES2015, причем последним является имя, под которым в конечном итоге было выпущено первое. ECMAScript теперь следует за ежегодной каденцией, примерно, с ES2017 не за горами.

Приятная вещь о наличии транспилятора, такого как TypeScript, заключается в том, что вы можете использовать последние функции из es2017 и по-прежнему нацеливать es5 на emit, и все будет в порядке.

Модульная система: CommonJS для NodeJS и автоматизированного тестирования и тестирования разработки VS автоматизирован только на стороне сервера, и VS UI тесты являются ручной процесс. Поэтому AMD/UMD требуют, чтобы JS, вероятно, была опцией для VS, но она добавляет свой собственный рабочий процесс и обслуживание и соображения. Использование ссылок с тройной косой чертой (надежный) может работать, но после того, как вы установили свои библиотеки в узловые модули, вы должны использовать полный путь к узловым модулям в файле slug в файле импорта . (решение всего этого элемента может быть «ключевым» для общего вопроса ).

Это очень сложный вопрос и, вероятно, единственный из ваших вопросов, который вам действительно нужно потратить много времени. Как я сказал ранее, используя NodeJS или нет, он ортогонален автоматическому тестированию. Но если вы нацеливаете NodeJS изначально на свой тестовый код, вам нужно будет использовать выход CommonJS.

Для фактического кода приложения выбор не имеет ничего общего с тем, используете ли вы Visual Studio или нет, я сожалею о повторении этого, но действительно важно, чтобы вы отделили эти идеи.

Вопрос о том, какой формат модуля использовать для кода вашего внешнего интерфейса, является очень важным и спорным.

  1. утроить /// ссылки не формат модуля, а скорее способ объявления зависимостей между глобальными переменными, которые объявлены и ссылки на несколько файлов.

    Они плохо масштабируются, работая приемлемо, когда у вас есть только несколько файлов.

    Тройной /// ссылки не должны использоваться. Они не являются модульным механизмом, и их использование полностью отличается от использования любых форматов модулей/модулей, которые вы упомянули, включая CommonJS.

    Не объединять их с модульной системой, что вам нужно было бы сделать, чтобы запускать тесты под NodeJS или загружать приложение с помощью RequireJS или чего-то еще.

  2. RequireJS - отличный вариант, который подразумевал бы модули AMD, как вы говорите. RequireJS не требует использования ссылок с тройной косой чертой. На самом деле их следует избегать как чуму при использовании этого формата или любого другого формата модуля!

    Я настоятельно рекомендую использовать модули UMD. Изоморфный JavaScript является проблематичной идеей, и он не предлагает вам никаких преимуществ, так как вы создаете приложение-браузер с бэкэндом .NET.

  3. Многие разработчики фактически do используют модули CommonJS в браузере. Это требует непрерывного связывания с такими инструментами, как Webpack. Этот подход имеет свои преимущества и недостатки. Основными преимуществами являются способность опереться на существующие серверные инструменты NodeJS JavaScript, такие как npm, с помощью Webpack или Browserify. Это может показаться не большим преимуществом, но количество богатого инструментария, доступного для модулей CommonJS, не издевается, что делает его сильным вариантом.

  4. Рассмотрите возможность использования формата модуля System и загрузчика SystemJS через jspm как для управления пакетами, так и для загрузки кода. Используя этот подход, вы получаете преимущества RequireJS, можете запускать свои тесты под NodeJS и браузером с помощью jspm run, не требуя переключения целевых форматов или связывания кода, чтобы проверить его. Также нет необходимости связывать ваш код во время разработки, хотя это поддерживается. Что еще более важно, вы получаете преимущество в написании будущего совместимого кода, поскольку он предлагает единственный формат модуля и загрузчик, который правильно моделирует семантику, которую в конечном итоге будут использовать модули ES, когда они реализованы изначально в браузерах. JSPM имеет поддержку первого класса для TypeScript, Babel и Traceur. Для потомков здесь есть описание формата модули системы, взятый из приведенной выше ссылки:

    System.register можно рассматривать как новый формат модуль, предназначенный для поддержки точной семантики модулей ES6 в ES5. Это формат, который был разработан из совместной работы и поддерживается как выход модуля в Traceur (как экземпляр), Babel и TypeScript (как система). В этом формате поддерживается все динамические привязки и циклические эталонные поведения, поддерживаемые модулями ES6. Таким образом, он действует как безопасный и всеобъемлющий целевой формат для полиполя в ES6-модули.

Отказ от ответственности: Я являюсь членом организации JSPM GitHub, играет определенную роль в поддержании реестра и внес очень незначительные взносы в JSPM кли.

+0

Это действительно потрясающий ответ! Тем не менее, я специально сосредоточился на машинописной интеграции с ASP.NET 4 и MVC 5 в проекте Visual Studio, который я не смог получить. Ваши соображения обобщены. В приложении node.js или на основе браузера в webstorm или в ядре ASP.NET можно получить все, что мне нужно, но я не могу найти рабочего руководства или полного руководства для ASP.NET 4 MVC 5. Как я уже сказал , «тот, кто сделал это, решит все упомянутые предметы и другие». Это информация, которую я ищу. –

+0

Интересно, я бы сказал, что TypeScript является одним из лучших документированных проектов. Visual Studio имеет встроенную поддержку в течение длительного времени. Вы можете получить последнюю версию плагина языковой службы на https://typescriptlang.org, где он заметно показан. Ключевым моментом является то, что в случае интеграции с TypeScript у вас есть по существу тот же набор параметров, который вы делали с интеграцией JavaScript, примерно не более и не менее. Ключевым выводом является то, что для платформ, таких как asp.net, нет специфических для машиностроения интеграций, потому что хорошо ... Это просто JavaScript. –

+0

Aluan, только сайт машинописного сайта надежный и скудный. Я сделал все многократное, и прочитал все книги и gitbooks. Карабкаться по сообщениям - это похоже на попытку найти левого водителя на своп-встрече. Единственный способ, которым это можно было бы выживать, - это работать в небольшой области энго-сферы. Для меня исследование является основной основой возможного решения. Я сдал машинописный текст в VS шесть раз за два года. Блоги TS git являются фрагментарными и неконкурентными. Вещи, исправленные один месяц, появляются, когда команда другой библиотеки «продвигается». На самом деле это отсутствие понимания. –

Смежные вопросы