47

我有一個任務,涉及創建一個JavaScript庫,然後將由Visual Studio解決方案中的多個項目使用。理想情況下,我想找到一個項目類型會,爲我的JavaScript代碼,表現得好像自己是一個C#類庫,即:Visual Studio的JavaScript項目類型?

  • 這將「編譯」(縮小,由閉止回閥,... )將JavaScript代碼轉換爲一些輸出**。js *文件
  • 該輸出可以被其他項目「引用」,例如由ASP.NET MVC項目
  • 我可以指定一個「建立秩序」我的項目(標準VS功能)

這是可能的VS 2010/11或做我需要寫一些BAT/PowerShell的文件和腳本它自己?

相似但略有不同的問題:Visual Studio Project Template for JavaScript/VBScript?

+0

我懷疑當涉及到JavaScript時,你會用Visual Studio做很多事情。你可能會看[WebStorm](http://www.jetbrains。com/webstorm /) – 2012-03-02 21:58:32

+0

我寧可不使用其他IDE,但如果必須的話,您會如何建議構建涉及WebStorm JS項目和Visual Studio .NET項目的解決方案? WebStorm項目會「部署」到ASP.NET MVC項目文件夾還是會使用一些腳本? – Borek 2012-03-02 22:03:56

+0

我不確定。對我而言,我保持WebStorm處於開放狀態來編寫我的代碼,並且我可以切換到VS來運行/部署我的代碼。這不是世界上最優雅的設置,但是任何事情都比在VS編寫JS更好! :) – 2012-03-02 22:08:02

回答

9

根據我的經驗開發Asp.Net MVC,Visual Studio中限制了對JavaScript的支持。我想,有什麼可以做,以模仿你想要的行爲:

  1. 創建一個項目來存儲您的JavaScript文件,或許是一個類庫項目它其實並不重要,只要它支持生成事件。將你的JavaScript文件放入新項目中。

  2. 在此項目上創建後期構建步驟,以便使用外部工具最小化JavaScript。我使用YUI Compressor。您的構建後步驟應包含類似於以下內容的行:

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

  3. 將此新項目包含在您的解決方案中。然後,爲您的Asp.Net項目,設置您的Active Server Pages,以便它們引用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> 
} 

同樣可能會非常棘手,以確保您可以準確地從你的Asp.Net項目中引用的JavaScript文件。但我確信有一種方法可以做到這一點。也許你可以讓你的後期構建步驟將JavaScript文件複製到一些常見的位置。如果你這樣做,你也會想把你的JavaScript項目的構建事件標記爲「永遠運行」,所以JavaScript文件總是被複制。

7

好問題(+1)。我的決定是把所有的JavaScript通用文件分開的JavaScript項目,並使用linked files到web/mvc項目中需要的js文件。

這樣你就可以從javascript項目端使用subversioning控件,並使用所有可用工具壓縮和合並來自單獨常規項目端的js文件。

+0

+1這是大! – devlord 2013-11-30 00:22:06

+0

這個很棒。但是,當您使用鏈接的js文件在ASP.NET MVC項目中使用JavaScript時,在調試應用程序時會遇到一些小問題。因爲它位於根應用程序目錄之外,所以會出現一條錯誤消息,提示「無法使用前導..以退出頂層目錄」。任何解決方案? – 2014-06-26 12:27:46

3

我對此很好奇!如果有人提出其他/更好的想法,請@對我評論。

選項1:ASP。NET Web項目與Web Essentials

如果您只是想要一個前端JavaScript項目,這是一個簡單的選擇。 Web Essentials易於使用並在Visual Studio中安裝。你可以使用它來簡化縮小。然後您可以使用Qunit進行測試。這是一個非常簡單和輕量級的JavaScript客戶端開發入口點。

選項2:Node.js加載工具Visual Studio的

使用Node.js Tools for Visual Studio。它會給你很多這些好東西的項目模板。你可能不會最終使用node.js,特別是如果你只是創建一個客戶端的js庫,但是讓node.js有助於測試,你會希望/需要npm來安裝我原來的答案中提到的所有其他好東西(選項3)。

這個有很多設置。對於某些.NET開發人員來說,這可能是一個入門障礙。

方案3:網站項目

這是我在過去所做的那樣:

enter image description here

我實際創建在Eclipse this project! (不要恨我)。後來,我用網站項目創建了一個Visual Studio解決方案。我安裝了肯定不需要的node.js,但我將它用作輕量級的Web服務器。

然後你可以使用的NuGet或鮑爾安裝其他的東西,如:

  1. require.js的模塊管理
  2. 茉莉單元測試
  3. 咕嚕或吞掉 (縮小)
  4. 您可以安裝jslint或jshint用於代碼更正。

並非所有這些東西都是必需的。我認爲Bower已經集成到Visual Studio 2015中。其中一些需要命令行構建,但是一旦設置完成,就會運行很少的命令。

+0

我正在研究在Visual Studio中創建JavaScript項目。是否有創建JavaScript項目的任何先決條件,例如需要哪些模板以及Visual Studio需要哪些其他軟件包? – 2017-01-11 15:04:55

+0

@ tom_mai78101,嘗試**選項1 **。你甚至不需要網絡必需品,儘管它可以方便地縮小。 Web Essentials安裝非常簡單。 – Jess 2017-01-12 21:41:53

+0

好的,謝謝。 – 2017-01-13 03:24:45

0

如果你想訪問預建/ pos-build(不是真的需要使用任務運行器資源管理器),創建一個空的ASP.net核心項目(它將隱藏node_modules文件夾和文件將被自動放入項目中只是複製它們,不需要手動添加它們)但是,這會生成一個obj和bin文件夾,這可能很煩人。這裏的一個好處是,如果您在www文件夾中構建項目,則可以使用publish命令如果你不關心上述任何一個,共享的C#項目不會生成輸出,所以它是一個很好的模板來製作一個javascript項目(我用它來處理所有我的vue spa項目)。這裏的缺點是文件嵌套不起作用= \

相關問題