tylko zastanawiam się, czy ktoś kiedykolwiek próbował osadzić i faktycznie zintegrować silnik js ze środowiskiem .net. Mógłbym znaleźć i faktycznie użyć (po DUŻO bólu i wysiłku, ponieważ jest to dość przestarzałe i niezupełnie ukończone) projekt spidermonkey-dotnet. Ktoś z doświadczeniem w tej dziedzinie? Silniki takie jak SquirrelFish, V8 ..
Nie, że nie jestem zadowolony ze Spidermonkey Mozilli (używając go do minifruktury Railsowej dla niestandardowych komponentów w podstawowej aplikacji ASP.NET), ale nadal chciałbym zbadać nieco więcej z tymi opcjami. Rozwiązania wiersza polecenia nie są tym, czego potrzebuję, nie mogę polegać na niczym innym niż CLR, muszę wywoływać metody z / do JavaScript / C # obiektów.
// c# class
public class A
{
public string Hello(string msg)
{
return msg + " whatewer";
}
}
// js snippet
var a = new A();
console.log(a.Hello('Call me')); // i have a console.log implemented, don't worry, it's not a client-side code :)
Tylko dla wyjaśnienia - nie próbuję programować samej aplikacji w javascript po stronie serwera. Służy wyłącznie do pisania niestandardowych podaplikacji użytkowników (może być postrzegane jako pewnego rodzaju DSL). O wiele łatwiej (i bezpieczniej) pozwala normalnym ludziom programować w js niż C #.
źródło
Tłumacz Jint ( http://jint.codeplex.com ) z otwartym kodem JavaScript robi dokładnie to, czego szukasz.
Edycja:
Projekt został całkowicie przepisany i jest teraz hostowany w Github pod adresem https://github.com/sebastienros/jint
źródło
Być może zainteresuje Cię także Microsoft ClearScript, który jest hostowany na GitHub i opublikowany na licencji Ms-Pl.
Nie jestem fanboyem Microsoftu, ale muszę przyznać, że obsługa V8 ma mniej więcej takie same funkcje jak Javascript.Net, a co ważniejsze, projekt jest nadal utrzymywany. Moim zdaniem wsparcie dla delegatów również działa lepiej niż w przypadku Spidermonkey-dotnet.
ps: Obsługuje również JScript i VBScript, ale te stare rzeczy nie interesowały nas.
ps: jest kompatybilny z .NET 4.0 i 4.5+
źródło
Każdy, kto tylko dostraja, sprawdź także Jurassic:
http://jurassic.codeplex.com/
edycja: przeniesiono to do github (i wydaje się aktywne na pierwszy rzut oka)
https://github.com/paulbartrum/jurassic
źródło
Możesz spróbować ironJS, wygląda obiecująco, chociaż jest w fazie intensywnego rozwoju. https://github.com/fholm/IronJS
źródło
Wydaje mi się, że wciąż nie jestem pewien, co próbujesz zrobić, ale warto zajrzeć do JScript.NET, chociaż Managed JScript wydaje się być bardziej odpowiedni dla twoich potrzeb (bardziej przypomina JavaScript niż JScript.NET) .
Osobiście pomyślałem, że fajnie byłoby w jakiś sposób zintegrować V8, ale nie przeoczyłem pobierania kodu źródłowego; chciałbym mieć czas, żeby coś z tym zrobić.
źródło
Jeśli język nie stanowi problemu (dowolnego skryptu w piaskownicy), istnieje LUA dla platformy .NET . Wersja .NET frameworku Silverlight jest również piaskownicą afaik.
źródło
Hej, spójrz na Javascript .NET na codeplex ( http://javascriptdotnet.codeplex.com/ ). W wersji 0.3.1 pojawiły się całkiem słodkie nowe funkcje, które prawdopodobnie Cię zainteresują.
Sprawdź przykładowy kod:
źródło
Możesz użyć silnika Chakra w C #. Oto artykuł na temat msdn pokazujący, jak:
http://code.msdn.microsoft.com/windowsdesktop/JavaScript-Runtime-Hosting-d3a13880
źródło
Zamiast tego wpadłem na znacznie prostsze rozwiązanie.
Zbudowałem
.dll
plik za pomocą Javascript, a następnie skompilowałem go za pomocą kompilatora JavaScript, który jest dostępny w wierszu polecenia programisty VS2013.Kiedy już to
.dll
zrobimy, po prostu dodajemy go do\Support
folderu, a następnie odwołujemy się do niego w projekcie, który musiał ewaluować instrukcje JavaScript.Szczegółowe kroki, aby utworzyć
.dll
:Utwórz plik w Notatniku zawierający tylko te treści:
Zapisz plik jako
C:\MyEval.js
Otwórz wiersz polecenia VS2005 (Start, Programy, VS2005, Narzędzia VS2005)
Wpisz,
Cd\
aby dostać się doC:\
Rodzaj
Zostanie utworzony nowy plik o nazwie
MyEval.dll
.Skopiuj
MyEval.dll
do projektu i odwołaj się do niego (również odwołanieMicrosoft.Jscript.dll
).Powinieneś być w stanie to tak nazwać:
objResult is
True
.źródło
Właśnie próbowałem RemObjects Script dla .Net .
Działa, chociaż musiałem użyć statycznej fabryki (
var a=A.createA();
) z JavaScript zamiastvar a=new A()
składni. (Funkcja ExposeType ujawnia tylko statykę!) Niewiele dokumentacji, a źródło jest napisane za pomocą Delphi Prism, co jest dość niezwykłe dla mnie i dla RedGate Reflector.Więc: Łatwy w użyciu i konfiguracji, ale niewiele pomocy w zaawansowanych scenariuszach.
Również instalowanie czegoś zamiast upuszczania zestawów w katalogu jest dla mnie negatywne ...
źródło
Udokumentowanym sposobem dodawania przez Microsoft rozszerzalności skryptu do czegokolwiek jest IActiveScript. Możesz użyć IActiveScript z dowolnej aplikacji .NET, aby wywołać logikę skryptu. Logika może imprezować na obiektach .NET umieszczonych w kontekście skryptowym.
Ta odpowiedź zawiera aplikację, która to robi, z kodem:
źródło
Istnieje implementacja hosta silnika skryptów ActiveX w C # dostępna tutaj: parsowanie i wykonywanie JS przez C #
Pozwala na używanie Javascript (lub VBScript) bezpośrednio z C #, w natywnych procesach 32-bitowych lub 64-bitowych. Pełne źródło to ~ 500 linii kodu C #. Ma tylko domyślną zależność od zainstalowanej biblioteki DLL silnika JScript (lub VBScript).
Na przykład następujący kod:
wyświetli 1.66666666666667
źródło
Istnieje również MsieJavaScriptEngine, który korzysta z silnika Chakra przeglądarki Internet Explorer
źródło
Wierzę, że wszystkie główne silniki JS typu open source (JavaScriptCore, SpiderMonkey, V8 i KJS) zapewniają interfejsy API do osadzania. Jedyny, z kim tak naprawdę jestem bezpośrednio zaznajomiony, to JavaScriptCore (czyli nazwa silnika JS, w którym mieszka SquirrelFish), który zapewnia czysty interfejs API języka C. Jeśli pamięć działa (minęło trochę czasu, odkąd użyłem .NET) .NET ma dość dobrą obsługę łączenia w C API.
Szczerze mówiąc, nie jestem pewien, jakie są interfejsy API dla innych silników, ale wiem, że wszystkie je zapewniają.
To powiedziawszy, w zależności od twoich celów JScript.NET może być najlepszy, ponieważ wszystkie inne silniki będą wymagały dołączenia ich do Twojej aplikacji, ponieważ JSC jest jedynym, który faktycznie jest dostarczany z systemem operacyjnym, ale tym systemem operacyjnym jest MacOS: D
źródło
Wiem, że otwieram stary wątek, ale dużo pracy nad smnetem (spidermonkey-dotnet). W ostatnich latach. Głównym celem projektu jest płynne osadzanie obiektów .net w silniku spidermonkey. Obsługuje szeroką gamę konwersji z wartości js na obiekty .net. Niektóre z nich, w tym delegaci i wydarzenia.
Powiem tylko, że warto się teraz przyjrzeć, ponieważ jest w nim pewien stały rozwój :). Aktualizuję repozytorium SVN na bieżąco z poprawkami błędów i nowymi funkcjami. Pliki rozwiązań źródłowych i projektów są skonfigurowane tak, aby pomyślnie budować po pobraniu. W przypadku problemów z korzystaniem z niego możesz otworzyć dyskusję.
Rozumiem pragnienie posiadania zarządzanego rozwiązania javascript, ale spośród wszystkich zarządzanych skryptów javascript, których używałem, bardzo brakuje im niektórych kluczowych funkcji, które sprawiają, że są one zarówno solidne, jak i łatwe w obsłudze. Sam czekam na IronJS, żeby trochę dojrzał. Podczas gdy czekam, dobrze się bawię grając ze spidermonkey-dotnet =)
spidermonkey-dotnet projekt i strona pobierania
Edycja: utworzono stronę wiki dokumentacji po południu.
źródło
Wypróbuj ReoScript , interpreter JavaScript typu open source zaimplementowany w języku C #.
ReoScript sprawia, że Twoja aplikacja może wykonywać JavaScript. Ma szeroką gamę metonów rozszerzeń, takich jak SetVariable, Extension Function, przy użyciu CLR Type, .Net Event Binding itp.
Witaj świecie:
A oto przykład skryptu, który tworzy winform i pokazuje go.
źródło
Użyj JSCRIPT.NET, aby uzyskać bibliotekę (dll) js. Następnie odwołaj się do tej biblioteki DLL w aplikacji .NET i już tam jesteś. GOTOWE!
źródło
Możesz użyć Rhino - silnika Mozilla JavaScript napisanego na Javie i używać go z IKVM, oto kilka instrukcji
Instrukcje: https://www.codeproject.com/Articles/41792/Embedding-JavaScript-into-C-with-Rhino-and-IKVM
źródło
V8.NET to nowe dziecko na bloku (od kwietnia 2013 r.), Które ściślej otacza natywną funkcjonalność silnika V8. Pozwala na większą kontrolę nad wdrożeniem.
źródło
Teraz jest to możliwe dzięki
ASP.Net MVC4 Razor
silnikowi View. kod będzie taki:i
Razor
nie jest przeznaczony tylko dla MVC4 lub innych aplikacji internetowych i można go używać w aplikacjach stacjonarnych offline.źródło