Search code examples
htmlvisual-studio-2015single-page-applicationvisual-studio-templates

Do HTML5 development using grunt and bower with WebSite project or create HTML5 Web app in Visual Studio 2015?


I want to build a custom PURE HTML5 Web Template, for HTML5/CSS3/JavaScript single page application development, and then use that as a starting place for SPA HTML5 web development.

Microsoft clearly recommends using Web Applications, but provides NO pure HTML5 web application template, thus this task is left to end users.

I am not asking if I should use an ASP.NET Web Site or ASP.NET Web Application instead I am asking, what template configuration can I arrange that will let me use the most modern HTML5 tools and workflows, and is it the Web Application (with .csproj or .xproj project file) or Web Site project (a folder based project)?

For projects where a developer needs to build a pure HTML5 SPA, maybe with ExtJS or maybe with Angular, or something equivalent, the first choice made is between File-> New Web Site and File -> New Web Application.

If it may be that later my HTML5 project may get some ASP.NET added later, it is clear I should choose File -> New Web application, but there is NO HTML5 template provided, so I am looking to build my own Template and use that. But what should it be based on?

For the WebSite option, you click file New Web Site, and you get a folder-based project, but none of the new grunt/bower support.

I am looking for a way to get the best of both choices. Can I get grunt/bower support if I click File New WebSite? Or can I do pure HTML5 work somehow if I click File New Project?

It is possible to crib a pure HTML5 Web Development .csproj + .sln project together myself, starting with some examples that used to be on codeplex and are now on GitHub It seems to me that the benefits of a .csproj or .xproj based root for pure HTML5 development are:

  • I can specify only the files I want to see in my project explorer.

  • I can easily add ASP.NET webapi controllers to my "pure" project without rebuilding the project.

Can I use one of the ASP.NET 5 (DNX) Web Application templates (.xproj), and just delete all the C# stuff, to get a working pure HTML5 development template, and retain all the new javascript grunt/bower tooling? Or do I have to stick with Web Site (folder level) projects, and their visual studio 2005 era website development features, for pure HTML5 html/css/javascript development?

Update: If close voters who voted "opinion" based would be so kind enough as to point out where I call for any opinion, that'd be great. I'm asking for help DEVELOPING a template for Visual Studio, and I believe that is on topic and not at all a call for opinion. To develop a template you must make a choice. Which one will provide the most complete HTML5 tooling including grunt and bower and full javascript syntax highlighting, jslint, bundle, minify, etc?


Solution

  • When developing a template, my research so far shows that:

    • Patience, grasshopper, it's early days. ASP.NET Core 1.0 just released, but does not include certain elements, including a new .xproj style set of projects for basic pure HTML 5 web project development (name not yet even announced, but let's hypothesize, it might be called Core Pages), whatever it is, the Microsoft "franchise reboot" for Pure HTML5 Development with Microsoft Visual studio either doesn't exist yet, or is in early stages of internal development. Whatever template I could make today might be obsolete in three weeks or three months if Microsoft makes a move here.

    • For now, for people who can live with it, File -> New Web sites works fine, and I haven't found any technical documented reason why you CAN'T use it for new development, just a caution from Microsoft that it might not be the best choice, if a File -> New Project template can meet your needs. You can see from the way that ASP.NET Core 1.0 today works (just in time automatic-recompile without rebuilding in ASP.NET Core brings a core feature of the WebSite world over into the WebApp world at last) that its new tooling and the new .NET Core features inside dnx and dnvm will finally "restore the Balance of Nature" that I feel has now been divided over the last 10 years by the WebSite/WebApp dichotomy. Not yet, but that's part of the core design elements I have understood from studying the ASP.NET Core architecture.

    • For ExtJS, the Sencha Ext JS plugin for Visual Studio provides a File -> New Web Site option, and this works fine. I downloaded and tested it yesterday evening and it works fine. If I want to invoke grunt or bower, or bundle and minify, or any other web-dev workflow task, I can do so manually using an external command prompt window as well. So while it might not be as shiny as I was looking for, it's possible to get work done. The Ext JS plugin provides full Ext class hierarchy code-completion, and starter templates for both pure HTML5 (via file New Website) and HTML5+ASP.NET (via File New Project). When evaluating their plugin I initially thought there was NO way to do a pure HTML5 app inside visual studio because I was totally unaware of the File New Website option, and thought (incorrectly) of this area of VS as deprecated.

    • For Angular SPA development INCLUDING .NET there is this template, and it appears you could use it and just not write any ASP.NET server side stuff if you wanted to do a pure HTML5 SPA.

    • I would probably suggest starting with the angular SP development template linked above and modifying it to subtract angular and insert ExtJS, or using the ASP.NET 4.6 plus ExtJS template provided by Sencha's IDE plugin, and just subtracting all the ASP.NET code from that template. I don't yet have a starter template suggestion for the ASP.NET Core 1.0 .xproj world yet.

    • It should be possible, and seems quite easy to use .NET Core and ASP.NET Core as a key part of the tooling for a pure HTML5 development environment. In particular "dnx web" is a useful way of locally developing, as it is even more lightweight than using IIS Express. It should be equally feasible to develop for HTML5 with "DNX web" (kestrel) as the lightweight static server for pure HTML5, and either a full Visual Studio 2015 project (either website or webapp), or using just a modern web-editor like Visual Studio Code.

    I hope that other developers who are still confused, as I was about the now-10-years-long split-personality issue in visual Studio with regards to New Web Site and New Web Application, may finally see some light at the end of the tunnel.

    Update: Q4/2016: It actually looks like the two way split personality issues in VS 2015 will get worse in VS 2016 (Currently in preview as VS15) because there will be THREE ways to open a project, open solution/csproj via one menu item, open web project via another, and open folder via a third.