需求:在服務器端使用js渲染引擎arttemplate,生成HTML。以實現在后台配置模板,動態生成HTML
微軟提供了Microsoft.AspNetCore.NodeServices這個庫,專門用來調用nodejs服務
1、安裝包Microsoft.AspNetCore.NodeServices、安裝nodejs
2、在ConfigureServices方法中添加 services.AddNodeServices();
3、注入INodeServices服務,通過模板獲取html
public async Task<IActionResult> Index([FromServices]INodeServices nodeService) { //js模板 var htmlTemplate = @" OrderID:{{model.ID}}<br> UserName:{{model.UserName}}<br> {{each model.OrderItems as item index}} {{item.OrderID}}-{{item.Price}} {{/each}}"; //數據 var orderModel = new Order { ID = 1, UserName = "fan", OrderItems = new List<OrderItem> { new OrderItem { OrderID = 1, Price = 10.00M }, new OrderItem { OrderID = 1, Price = 15.00M }, new OrderItem { OrderID = 1, Price = 13.00M } } }; var orderJSON = JsonConvert.SerializeObject(orderModel); //獲取html string html = await nodeService.InvokeAsync<string>("./nodejs_handler.js", htmlTemplate, orderJSON); return View(); }
項目根目錄添加nodejs_handler.js
const template = require('art-template'); module.exports = function (callback, htmlTemplate, dataJSON) { var compile = template.compile(htmlTemplate); var html = compile({ "model": JSON.parse(dataJSON) }); callback(null, html); }
4、在項目根目錄安裝art-template的npm包
npm install art-template
5、完成,運行即可