47

Tengo una tarea que implica la creación de una biblioteca de JavaScript que luego será utilizada por varios proyectos en una solución de Visual Studio. Idealmente me gustaría encontrar un tipo de proyecto que, para mi código JavaScript, se comporta como si fuera una biblioteca de clases C#, es decir:Tipo de proyecto de JavaScript para Visual Studio?

  • Sería "compilar" (Minify, comprobar por el cierre, ...) el código JavaScript en alguna salida ** .js * archivo
  • Esta salida podría ser "referenciada" por otros proyectos, por ejemplo por un proyecto ASP.NET MVC
  • pude especificar una "Orden de composición" de mis proyectos (de serie VS función)

¿Es esto posible con VS 2010/11 o necesito para escribir algunas MTD/PowerShell archivos y script yo mismo?

similar pero ligeramente diferente pregunta: Visual Studio Project Template for JavaScript/VBScript?

+0

Dudo que tenga mucho éxito haciendo * cualquier cosa * con Visual Studio cuando se trata de JavaScript. Puede consultar [WebStorm] (http: //www.jetbrains.com/webstorm /) –

+0

Prefiero no usar otro IDE, pero si tuviera que hacerlo, ¿cómo sugeriría estructurar la solución que implica el proyecto WebStorm JS y los proyectos de Visual Studio .NET? ¿El proyecto WebStorm se "implementaría" en la carpeta del proyecto ASP.NET MVC o utilizaría algunos scripts? – Borek

+0

No estoy seguro. Para mí, mantengo WebStorm abierto para escribir mi código, y me desplazo a VS para ejecutar/implementar mi código. No es la configuración más elegante del mundo, ¡pero cualquier cosa es mejor que escribir JS en VS! :) –

Respuesta

9

Con base en mi experiencia en el desarrollo Asp.Net MVC, Visual Studio ha limitado soporte para JavaScript. Supongo que hay algo que puede hacer para imitar el comportamiento que desea:

  1. Crear un proyecto para almacenar sus archivos JavaScript, tal vez un proyecto de biblioteca de clases que en realidad no importa, siempre y cuando se apoya eventos de generación . Coloque sus archivos de JavaScript dentro de un nuevo proyecto.

  2. Cree un paso de creación posterior en este proyecto para minimizar su JavaScript utilizando una herramienta externa. Yo uso YUI Compressor. Su paso posterior a la acumulación debe contener líneas similares a las siguientes:

    java-jar $ Scripts (projectdir) \ yuicompressor-2.4.7.jar $ (SolutionDir) Scripts \ yourJsFile.js -o $ (SolutionDir) Scripts \ yourJsFile .min.js --charset utf-8

  3. Incluya este nuevo proyecto en su solución. Luego, para sus proyectos Asp.Net, configure sus páginas Active Server para que hagan referencia a los archivos JavaScript, y estoy usando la sintaxis Razor como ejemplo. Puede ser que sea difícil de concretar el camino correcto sin embargo:

@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> 
} 

Una vez más, podría ser difícil para asegurarse de que se puede hacer referencia con precisión los archivos JavaScript de su proyecto Asp.Net. Pero estoy seguro de que hay una forma de hacerlo. Tal vez pueda hacer que su paso posterior a la compilación copie los archivos JavaScript en alguna ubicación común. Si hace esto, también querrá marcar el evento de compilación posterior en su proyecto de JavaScript como "Ejecutar siempre", para que los archivos de JavaScript siempre se copien.

7

Buena pregunta (+1). Mi decisión fue poner todos los archivos generales de javascript en un proyecto de javascript por separado y usar linked files en los archivos js necesarios en el proyecto web/mvc.

De esta manera se obtiene la posibilidad de utilizar el control de subversión desde el lado del proyecto javascript y compactar y combinar archivos js del lado de proyectos generales separados utilizando todas las herramientas disponibles.

+0

+1 esto es ¡estupendo! – devlord

+0

Este es genial. Pero cuando usa JavaScript en el proyecto ASP.NET MVC utilizando archivos js vinculados, hay un pequeño problema al depurar la aplicación. Debido a que está fuera del directorio de la aplicación raíz, aparece un mensaje de error que dice "No se puede usar una guía ... para salir por encima del directorio superior". Alguna solucion a eso? –

3

¡Tengo mucha curiosidad por esto! Por favor, comenten @ si alguien viene con otras/mejores ideas.

Opción 1: ASP.NET Proyecto web con Web Essentials

Si solo desea un proyecto de javascript, esta es una opción fácil. Web Essentials es fácil de usar e instalar en Visual Studio. Puedes usar esto para una fácil minificación. Luego puede usar Qunit para realizar pruebas. Este es un punto de entrada bastante fácil y ligero en el desarrollo del lado del cliente de JavaScript.

Opción 2: Node.js Herramientas para Visual Studio

Uso Node.js Tools for Visual Studio. Le dará plantillas de proyectos para muchas de estas cosas buenas. Puede que no termine usando node.js especialmente si solo está creando una biblioteca js del lado del cliente, pero tener node.js es útil para probar y querrá/necesitará npm para instalar todas las otras cosas buenas mencionadas en mi respuesta original (Opción 3).

Hay una gran cantidad de configuración involucrada con este. Puede ser una barrera de entrada para algunos desarrolladores de .NET.

Opción 3: Sitio Web del Proyecto

Aquí es lo que he hecho en el pasado:

enter image description here

realidad creé this project en Eclipse! (No me odies) Más tarde creé una solución de Visual Studio con un proyecto de sitio web . Instalé node.js, que ciertamente no es necesario, pero lo estaba usando como un servidor web liviano.

continuación, puede utilizar Nuget o Bower para instalar otras cosas como:

  1. require.js para la gestión del módulo
  2. jazmín para las pruebas unitarias
  3. ronco o trago para construcciones (minificación)
  4. Puede instalar jslint o jshint para la corrección de código.

No se requieren todas estas cosas. Creo que Bower está integrado en Visual Studio 2015. Algunos de estos requerirán compilaciones de línea de comando, pero hay muy pocos comandos para ejecutar una vez que lo haya configurado.

+0

Estoy buscando crear un proyecto de JavaScript en Visual Studio. ¿Existen requisitos previos para crear un proyecto de JavaScript, como qué plantillas son necesarias y qué otros paquetes son necesarios para Visual Studio? –

+0

@ tom_mai78101, prueba ** Opción 1 **. Ni siquiera necesita elementos esenciales de la web, aunque es útil para minimizar. La instalación esencial de la web es fácil. – Jess

+0

Muy bien, gracias. –

0

Si desea acceder a pre-build/pos-build (no es necesario con el explorador de tareas), cree un proyecto ASP.net Core vacío (ocultará la carpeta node_modules y los archivos se incluirán automáticamente en el proyecto (simplemente copiándolos, no es necesario agregarlos manualmente). PERO, esto genera una carpeta obj y bin, que puede ser molesta. Una cosa buena aquí es que si construyes tu proyecto en la carpeta www, puedes usar el comando publish de Visual Studio.

Si no te importa nada de lo anterior, un proyecto de C# compartido no genera resultados, por lo que es una buena plantilla para hacer un proyecto de javascript (lo uso para todos mis vue spa proyectos). La desventaja aquí es que la anidación de archivos no funcionará = \

Cuestiones relacionadas