Java Script / Type Script для .Net-разработчика
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 15.11.17 09:26
Оценка:
Коллеги, добрый день

У меня возникла следующая ситуация: сам я являюсь .Net разработчиком и пока менять основную область не планирую, однако сейчас встала задача разработки небольшой JS/TS — библиотеки (и, подозреваю, будет вставать еще, но так же эпизодически).
Поэтому хочется подобрать/настроить под себя среду максимально близкую к текущей.

Т.е. если примерно рассмотреть процесс разработки небольшой библиотеки под .Net в VS он выглядит примерно так:
  1. Создаем проект Class Library — для основного кода
  2. Создаем отдельно проект тестов. Этот проет ссылается на первый + мы в него подключаем свой любимый фремворк для Unit Tests (NUnit, XUnit, MSTest, ...) и для мокирования (Moq, MS Shims, ...)
  3. Пишем тесты и код (ну или наоборот — кому как нравится). Для проверки и отладки используем запуск тестов из VS (либо из Resharper, либо из стандартного интерфейса — средствами соответсвующего тестадаптера).
  4. Для публикации, либо включаем библиотеку в нужный Solution (если таковых не много, и всем так удобнее), либо делаем NuGet-пакет, который размещаем или в закрытом репозитории пактов, или выкладываем наружу.
  5. Дополнительно можем настроить статический анализ синтаксиса и/или логики, CI, ...

На сколько подобный процесс реально воспроизвести под VS? И вообще, на сколько он соответсвует тому, что принято в разработке на JS/TS?

Из того, что я смог отыскать и понять на текущий момент, и какие есть вопросы:
  1. Если я хочу "просто библиотеку", то мне следует смотреть в сторону средств разработки Node.js. Все остальные варианты тащат за собой еще и серверную Web-инфраструктуру. Так?
  2. Однако из стандартных проектов, которые доступны под VS для Node, есть только Console Application. Следует использовать его, или поискать что-то еще?
  3. Где и как принять писать тесты? В отдельном проекте или в том, же где основной код?
  4. Есть ли какие-то устоявшиеся решения для написания Unit tests и создания моков? Принято ли использовать какие-то фреймворки или все пишут руками? Есть ли что-то подобное подходу NUnit / MSTest (т.е. когда пишется класс с публичными методами, а потом размечают специальными аттрибутами, которые указывают, что этот метод делает — инициализацию, очистку, само тестирование, ...)?
  5. Как принято запускать и отлаживать код под тестами? Я наткнулся на вот такое расширение студии (Test Adapter / Runner) Chutzpah он поддерживает такие фреймворки как Jasmine, Mocha, QUnit. Достаточно ли будет этого расширения или стоит поискать что-то иное? Если да, то на каком из поддерживаемых им фреймворков стоит остановиться?
  6. Как публиковать/распространять свою библиотеку? Тут как я понимаю, моменты следующие: референсы между JS проектами в Visual Studio не поддерживаются, поэтому остаются 2 варианта — передавать вручную или создать пакет. Соответсвенно, какой именно пакет? Исходя из того, что VS вроде начала более-менее не плохо работать с NPM, нет смысла заморачиваться чем-то еще, правильно?
  7. Как правильно работать с TS? Я так понимаю, артефактами моей работы будут: файл(ы) с JS-кодом и описания тиов (.d.ts) Или я не прав и TS библиотеки распространяют прямо в исходных .ts файлах? Но если я прав в первом предположении, то как принято распространять в таком случае: JS-в одном пакете, .d.ts — в другом, или всё в одном?

Ну и несколько дополнительных вопросов:
  1. Как принято запускать код для тестирования под разными браузерами? И принято ли вообще? Какими средствами это можно делать?
  2. Есть ли какие-то статические анализаторы/чекеры которые способны выявлять потенциальные проблемы несовместимости? Например, что используемый в моем коде или в сторонней библиотеке метод/класс не поддерживается в таких-то браузерах.
  3. Какие в принципе используются средства статического (или иного) анализа кода, помимо тех, что я упомянул в тексте?

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

Заранее спасибо
Отредактировано 15.11.2017 9:33 Михаил Романов . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.