Ich hab letztens
IronJS gefunden. Das ist eine auf der "Dynamic Language Runtime" (von .NET, es geht ja um C#) aufbauende JavaScript Implementierung. IronPython und IronRuby laufen auch auf Basis der DLR.
Was ich bei IronJS echt super finde, ist die Möglichkeit die Schnittstellen selbst anzugeben. Es ist also nicht möglich innerhalb des Scripts z.B. System.IO zu importieren und aufs Dateisystem zuzugreifen.
Hier mal ein kleines Beispiel mit einer Implementierung einer "print" Funktion. Math ist standardmäßig verfügbar (genauso wie Array, String, Object, etc)
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
using System;
using IronJS;
namespace JavaScriptTest
{
class Program
{
static void print(string value)
{
Console.WriteLine(value);
}
static void Main(string[] args)
{
var context = Hosting.Context.Create();
context.PutGlobal("print", IronJS.Native.Utils.createHostFunction(context.Environment, new Action<string>(print)));
context.InvokeCompiled(context.CompileSource("print(Math.PI);"));
Console.ReadLine();
}
}
}
|
Ich hab die DLL mit angefügt die braucht da ihr sonst IronJS selbst kompilieren müsstet, was eventuell etwas umständlicher ist, da es in F# geschrieben ist