47

Ho un'attività che comporta la creazione di una libreria JavaScript che verrà quindi utilizzata da più progetti in una soluzione di Visual Studio. Idealmente mi piacerebbe trovare un tipo di progetto che, per il mio codice JavaScript, si comporta come se fosse una libreria di classi C#, vale a dire:Tipo di progetto JavaScript per Visual Studio?

  • Sarebbe "compilazione" (minify, controllare dalla chiusura, ...) il codice JavaScript in qualche output **. js * file
  • Questo output potrebbe essere "referenziato" da altri progetti, ad es. da un progetto ASP.NET MVC
  • ho potuto specificare una dei miei progetti (di serie VS funzione) "ordine di costruire"

Questo è possibile con VS 2010/11 o ho bisogno di scrivere un po 'di BAT/PowerShell file e lo script da solo?

simile ma leggermente diversa domanda: Visual Studio Project Template for JavaScript/VBScript?

+0

Dubito che avrai molto successo facendo * qualsiasi * con Visual Studio quando si tratta di JavaScript. Si potrebbe guardare [WebStorm] (http: //www.jetbrains.com/webstorm /) –

+0

Preferisco non usare un altro IDE, ma se dovessi, come suggeriresti di strutturare la soluzione che coinvolge sia il progetto JS di WebStorm che i progetti di Visual Studio .NET? Il progetto WebStorm si "distribuirebbe" nella cartella del progetto ASP.NET MVC o usereste alcuni script? – Borek

+0

Non ne sono sicuro. Per quanto mi riguarda, tengo WebStorm aperto per scrivere il mio codice e passo a VS per eseguire/distribuire il mio codice. Non è la configurazione più elegante del mondo, ma tutto è meglio che scrivere JS in VS! :) –

risposta

9

Sulla base della mia esperienza nello sviluppo di Asp.Net MVC, Visual Studio ha limitato il supporto per JavaScript. Suppongo che ci sia qualcosa che si può fare per imitare il comportamento desiderato:

  1. Creare un progetto per memorizzare i file JavaScript, forse un progetto Libreria di classi in realtà non importa, fintanto che supporta Eventi di generazione . Metti i tuoi file JavaScript all'interno del nuovo progetto.

  2. Creare un passaggio di post su questo progetto per ridurre al minimo il JavaScript utilizzando uno strumento esterno. Io uso YUI Compressor. La fase di creazione del post dovrebbe contenere righe simili alle seguenti:

    java -jar $ (ProjectDir) Script \ yuicompressor-2.4.7.jar $ (SolutionDir) Script \ il tuoJsFile.js -o $ (SolutionDir) Script \ tuoJsFile .min.js --charset utf-8

  3. Includi questo nuovo progetto nella soluzione. Quindi, per i tuoi progetti Asp.Net, configura le pagine Active Server in modo che facciano riferimento ai file JavaScript, sto usando la sintassi Razor come esempio. Potrebbe essere difficile da specifica il percorso corretto però:

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

Anche in questo caso potrebbe essere difficile da garantire che si può con precisione fare riferimento ai file JavaScript dal progetto Asp.Net. Ma sono sicuro che c'è un modo per farlo. Forse puoi fare in modo che la fase di post-produzione copi i file JavaScript in una posizione comune. Se lo fai, contrassegna l'evento post build sul tuo progetto JavaScript come "Esegui sempre", in modo che i file JavaScript vengano sempre copiati.

7

Buona domanda (+1). La mia decisione era quella di mettere tutti i file generali javascript per separare il progetto javascript e usare linked files per i file js necessari nel progetto web/mvc.

In questo modo si ottiene la possibilità di utilizzare il controllo di sovversione dal lato del progetto javascript e compattare e unire i file js dal lato di progetti generali separati utilizzando tutti gli strumenti disponibili.

+0

+1 questo è grande! – devlord

+0

Questo è fantastico. Ma quando si utilizza JavaScript nel progetto MVC ASP.NET utilizzando i file js collegati, si verifica un leggero problema durante il debug dell'applicazione. Poiché si trova all'esterno della directory dell'applicazione root, viene visualizzato un errore che dice "Impossibile utilizzare un derivazione .. per uscire sopra la directory principale". Qualche soluzione a questo? –

3

Sono davvero curioso di questo! Per favore @ commentami se qualcuno si presenta con altre/idee migliori.

Opzione 1: ASP.Progetto Web NET con Web Essentials

Se si desidera un progetto javascript front-end, questa è un'opzione semplice. Web Essentials è facile da usare e installare in Visual Studio. È possibile utilizzare questo per una facile minificazione. Quindi è possibile utilizzare Qunit per il test. Questo è un punto di ingresso abbastanza facile e leggero nello sviluppo del client javascript.

Opzione 2: Node.JS Tools per Visual Studio

Usa Node.js Tools for Visual Studio. Ti darà modelli di progetto per molte di queste cose positive. Non si può finire con l'uso di node.js specialmente se si sta creando una libreria js lato client, ma avere node.js è utile per il test e si vorrà/avrà bisogno di npm per installare tutte le altre cose buone menzionate nella mia risposta originale (Opzione 3).

C'è un sacco di installazione in questione con questo. Potrebbe essere una barriera all'ingresso per alcuni sviluppatori .NET.

Opzione 3: Sito Web Progetto

Ecco quello che ho fatto in passato:

enter image description here

ho effettivamente creato this project in Eclipse! (Non odiarmi). Successivamente ho creato una soluzione di Visual Studio con un progetto di sito Web . Ho installato node.js che non è certamente richiesto, ma lo stavo usando come server web leggero.

Quindi è possibile utilizzare Nuget o Bower per installare altre cose come:

  1. require.js per la gestione del modulo
  2. gelsomino per unit testing
  3. grugnito o gulp per le build (minificazione)
  4. È possibile installare jslint o jshint per la correzione del codice.

Non tutte queste cose sono richieste. Penso che Bower sia integrato in Visual Studio 2015. Alcuni di questi richiedono build di riga di comando, ma ci sono pochissimi comandi da eseguire dopo averlo configurato.

+0

Sto cercando di creare un progetto JavaScript in Visual Studio. Esistono prerequisiti per la creazione di un progetto JavaScript, ad esempio quali sono i modelli necessari e quali altri pacchetti sono necessari per Visual Studio? –

+0

@ tom_mai78101, prova ** Opzione 1 **. Non hai nemmeno bisogno di elementi essenziali web, anche se è utile per minimizzare. L'installazione di Web Essentials è semplice. – Jess

+0

Va bene, grazie. –

0

Se si desidera accedere a pre-build/pos-build (non proprio necessario con task runner explorer), creare un progetto ASP.net Core vuoto (nasconderà la cartella node_modules ei file verranno automaticamente inseriti nel progetto (semplicemente copiandoli, non è necessario aggiungerli manualmente) MA, questo genera una cartella obj e bin, che può essere fastidiosa. Una cosa buona è che se si crea il progetto nella cartella www, è possibile utilizzare il comando di pubblicazione da Visual Studio.

Se non ti interessa nulla di quanto sopra, un progetto C# condiviso non genera output, quindi è un buon modello per creare un progetto javascript (lo uso per tutti i miei vue spa progetti). Il rovescio della medaglia qui è che il nesting dei file non funziona = \

Problemi correlati