Тип проекта JavaScript для Visual Studio? - PullRequest
49 голосов
/ 03 марта 2012

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

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

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

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

Ответы [ 4 ]

9 голосов
/ 03 марта 2012

Основываясь на моем опыте разработки 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 всегда копировались.

7 голосов
/ 12 апреля 2012

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

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

3 голосов
/ 14 апреля 2016

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

Вариант 1. Веб-проект ASP.NET с Web Essentials

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

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

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

Существует множество настроек, связанных с этим. Для некоторых разработчиков .NET это может быть препятствием для входа.

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

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

enter image description here

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

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

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

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

0 голосов
/ 24 февраля 2018

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

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

...