c# - spider - Incorporando o mecanismo JavaScript ao.NET




spider monkey js (15)

É possível agora com o ASP.Net MVC4 Razor View. o código será este:

// c# class
public class A
{
    public string Hello(string msg)
    {
        return msg + " whatewer";
    }
}

// js snippet
<script type="text/javascript">
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 :)
</script>

e o Razor não é apenas para MVC4 ou outros aplicativos da Web e você pode usá-lo em aplicativos de área de trabalho offline.

https://code.i-harness.com

apenas imaginando se alguém já tentou incorporar e realmente integrar qualquer mecanismo js ao ambiente .net. Eu poderia encontrar e realmente usar (depois de muita dor e esforço, já que é muito desatualizado e não terminou) projeto spidermonkey-dotnet. Alguém com experiência nesta área? Motores como SquirrelFish, V8 ..

Não que eu não esteja satisfeito com o Spidermonkey da Mozilla (usando-o para miniframework do tipo Rails para componentes customizados dentro do núcleo do aplicativo ASP.NET), mas eu ainda adoraria explorar um pouco mais com as opções. As soluções de linha de comando não são o que eu preciso, não posso confiar em nada além do CLR, preciso chamar métodos de / para objetos JavaScript / C #.

// 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 :)

Só para esclarecer - eu não estou tentando realmente programar o aplicativo em si no javascript do lado do servidor. É usado apenas para escrever sub-aplicativos de usuários personalizados (pode ser visto como algum tipo de DSL). É muito mais fácil (e seguro) permitir que pessoas normais programem em js que C #.




Ei, dê uma olhada para o Javascript .NET no codeplex ( http://javascriptdotnet.codeplex.com/ ) com a versão 0.3.1, há alguns novos recursos bastante interessantes que provavelmente lhe interessam.

Confira um exemplo de código:

// Initialize the context
JavascriptContext context = new JavascriptContext();

// Setting the externals parameters of the context
context.SetParameter("console", new SystemConsole());
context.SetParameter("message", "Hello World !");
context.SetParameter("number", 1);

// Running the script
context.Run("var i; for (i = 0; i < 5; i++) console.Print(message + ' (' + i + ')'); number += i;");

// Getting a parameter
Console.WriteLine("number: " + context.GetParameter("number"));

Eu criei uma solução muito mais simples.

Eu construí um arquivo .dll usando JavaScript e, em seguida, compilado usando o compilador de JavaScript que está disponível em um prompt de comando do desenvolvedor VS2013.

Uma vez que temos o .dll , basta adicioná-lo à pasta \Support e, em seguida, referenciá-lo no projeto que precisava avaliar as instruções JavaScript.

Etapas detalhadas para criar um .dll :

  1. Crie um arquivo no Bloco de Notas apenas com estes conteúdos:

    class EvalClass { function Evaluate(expression: String) { return eval(expression); } } 
  2. Salve o arquivo como C:\MyEval.js

  3. Abra um Prompt de Comando do VS2005 (Iniciar, Programas, VS2005, Ferramentas do VS2005)

  4. Digite Cd\ para ir para C:\

  5. Tipo

    jsc /t:library C:\MyEval.js
  6. Um novo arquivo é criado chamado MyEval.dll .

  7. Copie MyEval.dll para o projeto e referência-lo (também referência Microsoft.Jscript.dll ).

  8. Então você deve poder chamá-lo assim:

    Dim jScriptEvaluator As New EvalClass
    Dim objResult As Object
    objResult = jScriptEvaluator.Evaluate(“1==1 && 2==2”)

objResult é True .


Eu sei que estou abrindo um thread antigo, mas eu tenho feito muito trabalho no smnet (spidermonkey-dotnet). Nos últimos anos. Seu principal foco de desenvolvimento tem sido a integração perfeita de objetos .net no mecanismo do spidermonkey. Ele suporta uma ampla variedade de conversões de valores js para objetos .net. Alguns desses incluindo delegados e eventos.

Basta dizer que vale a pena verificar agora que há algum desenvolvimento constante nele :). Mantenho o repo do SVN atualizado com correções de bugs e novos recursos. Os arquivos de soluções de origem e projeto são configurados para serem construídos com êxito no download. Se houver algum problema, sinta-se à vontade para abrir uma discussão.

Eu entendo o desejo de ter uma solução gerenciada de javascript, mas de todos os javascript gerenciados que usei, todos eles são muito carentes de alguns recursos importantes que ajudam a torná-los robustos e fáceis de trabalhar. Eu mesmo estou esperando no IronJS para amadurecer um pouco. Enquanto espero, me divirto brincando com spidermonkey-dotnet =)

projeto spidermonkey-dotnet e página de download

Edit: criou a página wiki da documentação esta tarde.


Experimente o ReoScript , um interpretador JavaScript de código aberto implementado em C #.

O ReoScript faz com que seu aplicativo possa executar o JavaScript. Possui uma ampla variedade de métodos de extensão, como SetVariable, Function Extension, usando CLR Type, .Net Event Binding e etc.

Olá Mundo:

ScriptRunningMachine srm = new ScriptRunningMachine();
srm.Run(" alert('hello world!'); ");

E aqui está um exemplo de script que cria uma winform e a mostra.

import System.Windows.Forms.*;        // import namespace

var f = new Form();                   // create form
f.click = function() { f.close(); };  // close when user clicked on form

f.show();                             // show 



Se a linguagem não for um problema (qualquer script baseado em sandbox), haverá LUA para .NET . A versão do Silverlight do .NET framework também é afaik em sandbox.


Use o JSCRIPT.NET para obter uma biblioteca (dll) do js. Em seguida, faça referência a essa dll em seu aplicativo .NET e você está aí. FEITO!




Você também pode estar interessado no Microsoft ClearScript, que está hospedado no GitHub e publicado sob a licença Ms-Pl.

Eu não sou fanboy da Microsoft, mas devo admitir que o suporte V8 tem as mesmas funcionalidades do Javascript.Net, e mais importante, o projeto ainda é mantido. Tanto quanto eu estou preocupado, o suporte para os delegados também funciona melhor do que com Spidermonkey-dotnet.

ps: Ele também suporta JScript e VBScript, mas não estávamos interessados ​​por este material antigo.

ps: É compatível com o .NET 4.0 e 4.5+


V8.NET é um novo garoto no bloco (a partir de abril de 2013) que envolve mais de perto a funcionalidade do mecanismo V8 nativo. Isso permite mais controle sobre a implementação.





spidermonkey