Почему Джинт или Юрский не видят мой шаблон Handlebars?
Моя программа:
using Jurassic;
using System;
namespace JintScience
{
class Program
{
static void Main(string[] args)
{
ScriptEngine engine = new ScriptEngine();
engine.ExecuteFile("handlebars.runtime.min.js");
engine.ExecuteFile("compiledtemplates.js");
Console.WriteLine(engine.CallGlobalFunction<string>("Handlebars.templates.MyTemplate"));
Console.ReadKey();
}
}
}
Моя ошибка: "Handlebars.templates.MyTemplate" не является функцией.
Я проверил, что объект Handlebars существует, но, насколько я могу судить, у него нет полезных функций или свойств.
Ошибка, по сути, одна и та же, использую ли я юрский или Jint. Синтаксис тоже, так что я буду рад принять решение, которое использует либо.
Версия веб-страницы вышеуказанной программы работает просто отлично. У меня нет проблем с получением ожидаемого результата при вызове Handlebars.templates.MyTemplate() из консоли javascript моего браузера.
Я создал compiledtemplates.js, используя прекомпилятор handlebars. Я использую handlebars.runtime.min.js из этого источника.
Я ожидаю, что изо всех сил, потому что я не совсем понимаю, как юрский или Jint должны работать с javascripts, как мой.
Изменить: я думаю, это потому, что я использую CallGlobalFunction
Я получил это с помощью Evaluate вместо CallGlobalFunction. Кажется, CallGlobalFunction предназначен только для функций, которые находятся в глобальной области видимости. Но Handlebars.templates.MyTemplate не живет в глобальной области видимости. Я полагаю, что для запуска Handlebars внутри Jurassic я буду использовать только Evaluate. Короче, мне нужно было изменить одну строку:
Console.WriteLine(engine.Evaluate<string>("Handlebars.templates.MyTemplate"));