mirror of
https://github.com/aspnet/JavaScriptServices.git
synced 2025-12-24 18:47:30 +00:00
Add XML docs to core packages
This commit is contained in:
@@ -1,14 +1,36 @@
|
||||
using System;
|
||||
|
||||
namespace Microsoft.AspNetCore.SpaServices.Prerendering
|
||||
{
|
||||
/// <summary>
|
||||
/// Describes how to find the JavaScript code that performs prerendering.
|
||||
/// </summary>
|
||||
public class JavaScriptModuleExport
|
||||
{
|
||||
/// <summary>
|
||||
/// Creates a new instance of <see cref="JavaScriptModuleExport"/>.
|
||||
/// </summary>
|
||||
/// <param name="moduleName">The path to the JavaScript module containing prerendering code.</param>
|
||||
public JavaScriptModuleExport(string moduleName)
|
||||
{
|
||||
ModuleName = moduleName;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the path to the JavaScript module containing prerendering code.
|
||||
/// </summary>
|
||||
public string ModuleName { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// If set, specifies the name of the CommonJS export that is the prerendering function to execute.
|
||||
/// If not set, the JavaScript module's default CommonJS export must itself be the prerendering function.
|
||||
/// </summary>
|
||||
public string ExportName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Obsolete. Do not use. Instead, configure Webpack to build a Node.js-compatible bundle and reference that directly.
|
||||
/// </summary>
|
||||
[Obsolete("Do not use. This feature will be removed. Instead, configure Webpack to build a Node.js-compatible bundle and reference that directly.")]
|
||||
public string WebpackConfig { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,9 @@ using Newtonsoft.Json;
|
||||
|
||||
namespace Microsoft.AspNetCore.SpaServices.Prerendering
|
||||
{
|
||||
/// <summary>
|
||||
/// A tag helper for prerendering JavaScript applications on the server.
|
||||
/// </summary>
|
||||
[HtmlTargetElement(Attributes = PrerenderModuleAttributeName)]
|
||||
public class PrerenderTagHelper : TagHelper
|
||||
{
|
||||
@@ -24,6 +27,10 @@ namespace Microsoft.AspNetCore.SpaServices.Prerendering
|
||||
private readonly string _applicationBasePath;
|
||||
private readonly INodeServices _nodeServices;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new instance of <see cref="PrerenderTagHelper"/>.
|
||||
/// </summary>
|
||||
/// <param name="serviceProvider">The <see cref="IServiceProvider"/>.</param>
|
||||
public PrerenderTagHelper(IServiceProvider serviceProvider)
|
||||
{
|
||||
var hostEnv = (IHostingEnvironment) serviceProvider.GetService(typeof(IHostingEnvironment));
|
||||
@@ -39,25 +46,51 @@ namespace Microsoft.AspNetCore.SpaServices.Prerendering
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the path to the JavaScript module containing prerendering code.
|
||||
/// </summary>
|
||||
[HtmlAttributeName(PrerenderModuleAttributeName)]
|
||||
public string ModuleName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// If set, specifies the name of the CommonJS export that is the prerendering function to execute.
|
||||
/// If not set, the JavaScript module's default CommonJS export must itself be the prerendering function.
|
||||
/// </summary>
|
||||
[HtmlAttributeName(PrerenderExportAttributeName)]
|
||||
public string ExportName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Obsolete. Do not use. Instead, configure Webpack to build a Node.js-compatible bundle and reference that directly.
|
||||
/// </summary>
|
||||
[Obsolete("Do not use. This feature will be removed. Instead, configure Webpack to build a Node.js-compatible bundle and reference that directly.")]
|
||||
[HtmlAttributeName(PrerenderWebpackConfigAttributeName)]
|
||||
public string WebpackConfigPath { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// An optional JSON-serializable parameter to be supplied to the prerendering code.
|
||||
/// </summary>
|
||||
[HtmlAttributeName(PrerenderDataAttributeName)]
|
||||
public object CustomDataParameter { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The maximum duration to wait for prerendering to complete.
|
||||
/// </summary>
|
||||
[HtmlAttributeName(PrerenderTimeoutAttributeName)]
|
||||
public int TimeoutMillisecondsParameter { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The <see cref="ViewContext"/>.
|
||||
/// </summary>
|
||||
[HtmlAttributeNotBound]
|
||||
[ViewContext]
|
||||
public ViewContext ViewContext { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Executes the tag helper to perform server-side prerendering.
|
||||
/// </summary>
|
||||
/// <param name="context">The <see cref="TagHelperContext"/>.</param>
|
||||
/// <param name="output">The <see cref="TagHelperOutput"/>.</param>
|
||||
/// <returns>A <see cref="Task"/> representing the operation.</returns>
|
||||
public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
|
||||
{
|
||||
// We want to pass the original, unencoded incoming URL data through to Node, so that
|
||||
@@ -79,7 +112,9 @@ namespace Microsoft.AspNetCore.SpaServices.Prerendering
|
||||
new JavaScriptModuleExport(ModuleName)
|
||||
{
|
||||
ExportName = ExportName,
|
||||
#pragma warning disable CS0618 // Type or member is obsolete
|
||||
WebpackConfig = WebpackConfigPath
|
||||
#pragma warning restore CS0618 // Type or member is obsolete
|
||||
},
|
||||
unencodedAbsoluteUrl,
|
||||
unencodedPathAndQuery,
|
||||
|
||||
@@ -4,6 +4,9 @@ using Microsoft.AspNetCore.NodeServices;
|
||||
|
||||
namespace Microsoft.AspNetCore.SpaServices.Prerendering
|
||||
{
|
||||
/// <summary>
|
||||
/// Performs server-side prerendering by invoking code in Node.js.
|
||||
/// </summary>
|
||||
public static class Prerenderer
|
||||
{
|
||||
private static readonly Lazy<StringAsTempFile> NodeScript;
|
||||
@@ -17,6 +20,17 @@ namespace Microsoft.AspNetCore.SpaServices.Prerendering
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Performs server-side prerendering by invoking code in Node.js.
|
||||
/// </summary>
|
||||
/// <param name="applicationBasePath">The root path to your application. This is used when resolving project-relative paths.</param>
|
||||
/// <param name="nodeServices">The instance of <see cref="INodeServices"/> that will be used to invoke JavaScript code.</param>
|
||||
/// <param name="bootModule">The path to the JavaScript file containing the prerendering logic.</param>
|
||||
/// <param name="requestAbsoluteUrl">The URL of the currently-executing HTTP request. This is supplied to the prerendering code.</param>
|
||||
/// <param name="requestPathAndQuery">The path and query part of the URL of the currently-executing HTTP request. This is supplied to the prerendering code.</param>
|
||||
/// <param name="customDataParameter">An optional JSON-serializable parameter to be supplied to the prerendering code.</param>
|
||||
/// <param name="timeoutMilliseconds">The maximum duration to wait for prerendering to complete.</param>
|
||||
/// <returns></returns>
|
||||
public static Task<RenderToStringResult> RenderToString(
|
||||
string applicationBasePath,
|
||||
INodeServices nodeServices,
|
||||
|
||||
@@ -2,10 +2,28 @@ using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace Microsoft.AspNetCore.SpaServices.Prerendering
|
||||
{
|
||||
/// <summary>
|
||||
/// Describes the prerendering result returned by JavaScript code.
|
||||
/// </summary>
|
||||
public class RenderToStringResult
|
||||
{
|
||||
/// <summary>
|
||||
/// If set, specifies JSON-serializable data that should be added as a set of global JavaScript variables in the document.
|
||||
/// This can be used to transfer arbitrary data from server-side prerendering code to client-side code (for example, to
|
||||
/// transfer the state of a Redux store).
|
||||
/// </summary>
|
||||
public JObject Globals { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The HTML generated by the prerendering logic.
|
||||
/// </summary>
|
||||
public string Html { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// If set, specifies that instead of rendering HTML, the response should be an HTTP redirection to this URL.
|
||||
/// This can be used if the prerendering code determines that the requested URL would lead to a redirection according
|
||||
/// to the SPA's routing configuration.
|
||||
/// </summary>
|
||||
public string RedirectUrl { get; set; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user