Node.js rendering engine
The Node.js rendering engine uses a node.js
instance running on your Sitecore Content Management (CM) server to render your applications built with the JavaScript Rendering SDK (JSS). If using integrated mode in production, the node.js
instance must run on the Content Delivery (CD) server.
The Node.js rendering engine is not usable with JSS for Next.js or ASP.NET Rendering SDK applications.
Architectural overview
The ASP.NET and the Sitecore MVC infrastructure are extensible and allow for custom JavaScript renderers plugging in.
When the browser sends a page request, the JavaScript renderers hand off the JavaScript bundle and Layout Service JSON-formatted data to node.js through the ASP.NET NodeServices
. Node.js returns a response containing the HTML string.
The page-level items that correspond to the route are expected to have conventional presentation details set on them:
Using a layout based on the /sitecore/templates/Foundation/JavaScript Services/JSS Layout
template, in the previous image, JSS App
triggers rendering by Headless Services using the rendering engine configured for the JSS application. The layouts, in this case, serve only as indicators and point at empty Razor views. The WelcomeRendering
is a real Sitecore rendering item of the type React JavaScript Rendering
, defined under /sitecore/layout/renderings
.
In their server bundle, the JSS applications export and invoke a renderView
function that consumes the response to produce the static rendering of the application. Data passed into this function is double encoded to preserve JSON formatting and must be parsed with JSON.parse()
before use.
Pros and cons of the Node.js rendering engine
Pros
-
It is simple to set up. Install
node.js
on the Sitecore server and add the node executable to thePATH
. -
You do not have to manage
node.js
instances manually. -
Built-in pooling.
Cons
-
You have limited customization options of
node.js
startup, profiling, debugging. -
You have limited control over pooling/clustering.
-
You need to install
node.js
on Sitecore servers. -
You must deploy JSS app artifacts to the Sitecore server.
-
Not usable with Next.js or ASP.NET Core