Visual Studio的JavaScript项目类型?

时间:2012-03-02 21:43:52

标签: javascript visual-studio visual-studio-2010 visual-studio-2015

我的任务涉及创建一个JavaScript库,然后由Visual Studio解决方案中的多个项目使用。理想情况下,我想找到一个项目类型,对于我的JavaScript代码,它的行为就好像它是一个C#类库,即:

  • 它将“编译”(缩小,通过Closure检查,......)将JavaScript代码转换为某些输出**。js * file
  • 此输出可由其他项目“引用”,例如通过ASP.NET MVC项目
  • 我可以指定项目的“构建顺序”(标准VS功能)

VS 2010/11可以实现这一点,还是我需要编写一些BAT / PowerShell文件并自行编写脚本?

类似但略有不同的问题:Visual Studio Project Template for JavaScript/VBScript?

4 个答案:

答案 0 :(得分: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语法作为示例。具体而言,确定正确的路径可能很棘手:

  4. @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项目上的post build事件标记为“Always Run”,因此始终会复制JavaScript文件。

答案 1 :(得分:7)

好问题(+1)。我的决定是将所有javascript通用文件放在单独的javascript项目中,并使用linked files在web / mvc项目中使用所需的js文件。

通过这种方式,您可以使用所有可用工具从javascript项目端使用subversioning控件,并从单独的常规项目侧压缩和合并js文件。

答案 2 :(得分:3)

我真的好奇这个!如果有人提出其他/更好的想法,请@评论给我。

选项1:使用Web Essentials的ASP.NET Web项目

如果您只想要一个前端javascript项目,这是一个简单的选择。 Web Essentials易于使用并在Visual Studio中安装。您可以使用它来轻松缩小。然后您可以使用 Qunit 进行测试。这是javascript客户端开发的一个非常简单和轻量级的切入点。

选项2:Visual Studio的Node.js工具

使用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或Bower 来安装其他内容,例如:

  1. require.js 进行模块管理
  2. 用于单元测试的
  3. jasmine
  4. grunt或gulp for builds(缩小)
  5. 您可以安装 jslint或jshint 进行代码更正。
  6. 并非所有这些都是必需的。我认为Bower已经集成到Visual Studio 2015中。其中一些需要命令行构建,但是一旦设置它就会运行很少的命令。

答案 3 :(得分:0)

如果你想访问pre-build / pos-build(不需要使用任务运行器浏览器),创建一个空的ASP.net Core项目(它将隐藏node_modules文件夹,文件将自动放入项目中(只是复制它们,不需要手动添加它们。)但是,这会生成一个obj和bin文件夹,这可能很烦人。这里有一件好事,如果你在www文件夹中构建你的项目,你可以使用来自Visual Studio。

如果您不关心上述任何一项,那么共享的C#项目不会生成输出,因此它是制作javascript项目的好模板(我将其用于所有我的vue spa项目)。这里的缺点是文件嵌套赢得了工作= \