it-swarm.com.ru

Тип проекта JavaScript для Visual Studio?

У меня есть задача, которая включает создание библиотеки JavaScript, которая затем будет использоваться несколькими проектами в решении Visual Studio. В идеале я хотел бы найти тип проекта, который для моего кода JavaScript вел бы себя так, как если бы это была библиотека классов C #, т.е.

  • Он "скомпилирует" (минимизирует, проверит по Closure, ...) код JavaScript в некоторый выходной файл **. Js *
  • На этот вывод могут "ссылаться" другие проекты, например, по проекту ASP.NET MVC
  • Я мог бы указать «порядок сборки» моих проектов (стандартная функция VS)

Это возможно с VS 2010/11 или мне нужно написать несколько файлов BAT/PowerShell и самому написать сценарий?

Подобный, но немного другой вопрос: Шаблон проекта Visual Studio для JavaScript/VBScript?

49
Borek Bernard

Основываясь на моем опыте разработки Asp.Net MVC, Visual Studio имеет ограниченную поддержку JavaScript. Я предполагаю, что есть что-то, что вы можете сделать, чтобы имитировать поведение, которое вы хотите:

  1. Создайте проект для хранения ваших файлов JavaScript, возможно, проект библиотеки классов это не имеет особого значения, если он поддерживает события сборки. Поместите ваши файлы JavaScript в новый проект. 

  2. Создайте шаг пост-сборки в этом проекте, чтобы минимизировать ваш JavaScript с помощью внешнего инструмента. Я использую YUI Compressor . Ваш шаг пост-сборки должен содержать строки, подобные следующим:

    Сценарии Java -jar $ (ProjectDir)\yuicompressor-2.4.7.jar $ (SolutionDir)\yourJsFile.js -o $ (SolutionDir) Сценарии\yourJsFile.min.js --charset utf-8

  3. Включите этот новый проект в ваше решение. Затем для ваших проектов Asp.Net настройте свои активные серверные страницы так, чтобы они ссылались на файлы JavaScript, я использую синтаксис Razor в качестве примера. Это может быть сложно определить правильный путь, хотя:

@if (@Model.IsDebug)
{
<script src="@Url.Content("~/Scripts/yourJsFile.js")"  type="text/javascript"> </script>
}
else
{
<script src="@Url.Content("~/Scripts/yourJsFile.min.js")"  type="text/javascript"></script>
}

Опять же, может быть сложно убедиться, что вы можете точно ссылаться на файлы JavaScript из вашего проекта Asp.Net. Но я уверен, что есть способ сделать это. Возможно, вы можете сделать так, чтобы ваш шаг после сборки скопировал файлы JavaScript в какое-то общее место. Если вы сделаете это, вы также захотите пометить событие post build в вашем проекте JavaScript как «Always Run», чтобы файлы JavaScript всегда копировались.

9
Bojin Li

Хороший вопрос (+1). Я решил поместить все общие файлы javascript в отдельный проект javascript и использовать связанные файлы с необходимыми js-файлами в проекте web/mvc.

Таким образом, вы получаете возможность использовать управление подрывной деятельностью со стороны проекта javascript, а также сжатие и объединение js-файлов со стороны отдельных общих проектов с использованием всех доступных инструментов.

7
Saulius

Мне действительно интересно это! Пожалуйста, @ комментируйте мне, если кто-нибудь придумает другие/лучшие идеи 

Вариант 1: веб-проект ASP.NET с помощью Web Essentials

Если вам нужен только проект javascript, это простой вариант. Web Essentials прост в использовании и установке в Visual Studio. Вы можете использовать это для легкого минимизации. Затем вы можете использовать Qunit для тестирования. Это довольно простая и легкая точка входа в разработку на стороне клиента javascript.

Вариант 2: инструменты Node.js для Visual Studio

Используйте инструменты Node.js для Visual Studio . Это даст вам шаблоны проектов для многих из этих хороших вещей. Вы не можете в конечном итоге использовать node.js, особенно если вы просто создаете библиотеку js на стороне клиента, но наличие node.js полезно для тестирования, и вам понадобится/нужно npm для установки всех других полезных вещей, упомянутых в моем исходном ответе ( Вариант 3).

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

Вариант 3: проект веб-сайта

Вот что я сделал в прошлом:

 enter image description here

Я действительно создал этот проект в Eclipse! (Не ненавидь меня). Позже я создал решение Visual Studio с Web Site Project. Я установил node.js, который, разумеется, не требуется, но я использовал его в качестве облегченного веб-сервера.

Затем вы можете использовать Nuget или Bower для установки других вещей, таких как:

  1. require.js для управления модулем
  2. жасмин для модульного тестирования
  3. grunt или gulp для сборок (минификация)
  4. Вы можете установить jslint или jshint для исправления кода.

Не все эти вещи требуются. Я думаю, что Bower интегрирован в Visual Studio 2015. Некоторые из них потребуют сборок из командной строки, но после настройки их очень мало для запуска.

3
Jess

Если вы хотите получить доступ к pre-build/pos-build (на самом деле не требуется для проводника задач), создайте пустой проект ASP.net Core (он скроет папку node_modules, и файлы будут автоматически помещены в проект (просто скопировав их, не требуется добавлять их вручную). НО, это создает папку obj и bin, что может раздражать. Здесь хорошо то, что если вы строите свой проект в wwwfolder, вы можете использовать команду публикации из Visual Studio.

Если вас не волнует ни одно из вышеперечисленного, общий проект C # не генерирует выходные данные, поэтому это хороший шаблон для создания проекта javascript (я использую его для всех своих проектов vue spa). Недостатком является то, что вложение файлов не будет работать = \ 

0
JCKödel