NodeServices

Microsoft ASP.NET Core JavaScript Services

Subscribe to updates I use NodeServices


Statistics on NodeServices

Number of watchers on Github 2819
Number of open issues 26
Average time to close an issue 2 days
Main language C#
Average time to merge a PR 6 days
Open pull requests 35+
Closed pull requests 75+
Last commit 3 months ago
Repo Created over 2 years ago
Repo Last Updated 2 months ago
Size 7.38 MB
Organization / Authoraspnet
Latest Releaserel/2.0.0
Contributors5
Page Updated
Do you use NodeServices? Leave a review!
View open issues (26)
View NodeServices activity
View on github
Latest Open Source Launches
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating NodeServices for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

JavaScriptServices

AppVeyor: AppVeyor

This project is part of ASP.NET Core. You can find samples, documentation and getting started instructions for ASP.NET Core at the Home repo.

What is this?

JavaScriptServices is a set of client-side technologies for ASP.NET Core. It provides infrastructure that you'll find useful if you:

  • Use Angular / React / Vue / Aurelia / Knockout / etc.
  • Build your client-side resources using Webpack.
  • Execute JavaScript on the server at runtime.

Read Building Single Page Applications on ASP.NET Core with JavaScriptServices for more details.

This repo contains:

  • A set of NuGet/NPM packages that implement functionality for:
    • Invoking arbitrary NPM packages at runtime from .NET code (docs)
    • Server-side prerendering of SPA components (docs)
    • Webpack dev middleware (docs)
    • Hot module replacement (HMR) (docs)
    • Server-side and client-side routing integration (docs)
    • Server-side and client-side validation integration
    • Lazy loading for Knockout apps
  • Samples and docs

It's cross-platform (Windows, Linux, or macOS) and works with .NET Core 2.0 or later.

Creating new applications

Prerequisites:

With these prerequisites, you can immediately create new ASP.NET Core applications that use Angular, React, or React+Redux without having to install anything extra.

Option 1: Creating Angular/React/Redux applications from the command line (cross-platform)

In an empty directory, run (for example) dotnet new angular. Other supported SPA frameworks include React and React+Redux. You can see the list of available SPA templates by running dotnet new spa.

Once the generator has run and restored all the dependencies, you can start up your new ASP.NET Core SPA:

npm install
dotnet run 

Option 2: Creating Angular/React/Redux applications using Visual Studio 2017 Update 3 or later (Windows only)

Using the File->New Project dialog, select ASP.NET Core Web Application. You will then be offered the option to create an application with Angular, React, or React+Redux. When the application is created, you can build and run it in the normal way.

More info and other SPA frameworks

For a more detailed (albeit somewhat outdated) walkthrough, see getting started with the aspnetcore-spa generator.

If you want to build an ASP.NET Core application with Aurelia, Knockout, or Vue, you can use the Microsoft.AspNetCore.SpaTemplates package. On the command line, run dotnet new --install Microsoft.AspNetCore.SpaTemplates. Then you will be able to run dotnet new aurelia (or dotnet new vue, etc.) to create your new application.

Adding to existing applications

If you have an existing ASP.NET Core application, or if you just want to use the underlying JavaScriptServices packages directly, you can install these packages using NuGet and NPM:

  • Microsoft.AspNetCore.NodeServices
    • This provides a fast and robust way for .NET code to run JavaScript on the server inside a Node.js environment. You can use this to consume arbitrary functionality from NPM packages at runtime in your ASP.NET Core app.
    • Most applications developers don't need to use this directly, but you can do so if you want to implement your own functionality that involves calling Node.js code from .NET at runtime.
    • Find documentation and usage examples here.
  • Microsoft.AspNetCore.SpaServices
    • This provides infrastructure that's generally useful when building Single Page Applications (SPAs) with technologies such as Angular or React (for example, server-side prerendering and webpack middleware). Internally, it uses the NodeServices package to implement its features.
    • Find documentation and usage examples here

There were previously other packages called Microsoft.AspNetCore.AngularServices and Microsoft.AspNetCore.ReactServices but these are not currently needed - all applicable functionality is in Microsoft.AspNetCore.SpaServices, because it's sufficiently general.

If you want to build a helper library for some other SPA framework, you can do so by taking a dependency on Microsoft.AspNetCore.SpaServices and wrapping its functionality in whatever way is most useful for your SPA framework.

Samples

The samples directory contains examples of:

  • Using the JavaScript services family of packages with Angular and React.
  • A standalone NodeServices usage for runtime code transpilation and image processing.

To run the samples:

  • Clone this repo
  • At the repo's root directory (the one containing src, samples, etc.), run dotnet restore
  • Change directory to the sample you want to run (for example, cd samples/angular/MusicStore)
  • Restore Node dependencies by running npm install
    • If you're trying to run the Angular Music Store sample, then also run gulp (which you need to have installed globally). None of the other samples require this.
  • Run the application (dotnet run)
  • Browse to http://localhost:5000

Contributing

If you're interested in contributing to the various packages, samples, and project templates in this repo, that's great!

Before working on a pull request, especially if it's more than a trivial fix (for example, for a typo), it's usually a good idea first to file an issue describing what you're proposing to do and how it will work. Then you can find out if it's likely that such a pull request will be accepted, and how it fits into wider ongoing plans.

NodeServices open issues Ask a question     (View All Issues)
  • over 1 year Update solution to show Aurelia Template
  • over 1 year Can't get data from server when publish to IIS
  • over 1 year Issue with Angular2 - 2.1.1
  • over 1 year Consider removing redux-typed
  • over 1 year Add Promise polyfill for IE
  • almost 2 years Hot swap stops working when you enable HTTPS
  • almost 2 years Invalid provider error with CACHE_PRIMED_HTTP_PROVIDERS
  • almost 2 years When returning a binary stream, Socket hosting model's error handling isn't consistent with Http hosting model's
  • almost 2 years angular-cli compliant scaffolding, localization and Azure AD authentication
  • over 2 years Verify that cleanup is working as intended
NodeServices open pull requests (View All Pulls)
  • change Range Attribute typeof double to decimal to match Price type
  • Removed one of the comment blocks about Web API 2
  • Use "nameof" instead of string
  • Add sudo recommendation for dnu restore
  • Bump to Angular beta 14 & Universal 90.2
  • fix typo in README.md
  • feat(ng2-template): upgrade to rc1
  • wip: Cookies issue and payload provider
  • feat(yo-gen): add option for client folder Closes #59
  • chore(package): ignore node_modules
  • Add React Redux template in ES6 syntax #117
  • upgrade netstandard, point to 1.6 (according to latest MVC)
  • feat(prerender): ability to push payload and model to boot func
  • In order to use this package in traditional .NET setups and NuGet env…
  • Fix issue with ASPNET_ENV always undefinied
  • docs(readme): Show how to get started with yeoman
  • chore(typescript): Upgrade to 2.0 & Types
  • Make the Webpack Dependency in the aspnet-webpack NPM Package a Peer Dependency
  • Improve prerender error message
  • bug(dev-webserver): Allow HTTPS from Startup.cs
  • Update all projects to TypeScript 2.0 - remove typings - etc
  • Add AureliaSpa template
  • Updated all template project.json tools to use 1.1
  • Templates: update React's component's State and Property type
  • V1.0.x
  • Implemented react router v4 to ReactSPA template
  • Re-add bootstrap import
  • Organize webpack config to match as much as possible
  • Implement IE polyfills to for IE9-11 (fixes apply on undefined error)
  • Update boot-client.ts to handle IE 11 shim issues
  • Added nonce to prerender script output to support CSP
  • Added a more updated alternative to isomorphic-fetch.
  • The response from fetch is now typed as "Response" instead of "any", …
  • Fix #1505
  • Update peerDependency to support webpack 3
NodeServices list of languages used
Other projects in C#