In C / C ++, esiste una parola chiave che consente di inserire la lingua dell'assembly direttamente in un metodo.
Esempio
int Main()
{
__asm // notify the compiler that this block is assembly language.
{
push ax;
xor ax, ax;
int 33h;
mov ax, 1;
int 33h;
pop ax;
retf;
}
return 0;
}
Che ci crediate o no, la mia memoria ha questo piccolo frammento di linguaggio di assemblaggio impresso per la vita, o almeno finché non divento senile! È un piccolo comando DOS vecchia scuola che chiama l'interrupt del mouse e mostra il cursore del mouse. A parte questo, a seconda del compilatore C / C ++ in questione, questo sarebbe stato compilato per l'esecuzione del metodo Main ().
Pochi anni dopo, sono uno sviluppatore C # e JavaScript ... puoi indovinare dove sto andando con questo?
In ASP.NET, possiamo sviluppare le funzionalità lato server di un'applicazione web con C # (o altri linguaggi .NET) e la funzionalità lato client con JavaScript.
A volte dobbiamo essere in grado di passare script JavaScript al client, dal server, perché il server fornirà alcune informazioni che saranno richieste dallo script. Attualmente questi devono essere scritti come stringhe, che possono causare mal di testa quando si tratta di eseguire il debug!
Esempio
string js = "function test() { alert(\"" + message + "\"); }";
aspLiteral.Text = ScriptWrapper.Wrap(js); //assume this just wraps a script into a <script> tag.
E se potessimo inserire JavaScript direttamente nel codice lato server, dando così una maggiore esposizione al debugger, all'intelligence, al completamento del codice ecc.
Esempio
DateTime x = DateTime.Now;
string message = "Hello World";
var script = javascript //special keyword notifies the compiler that this block is JavaScript.
{
function test() {
alert(@message); //Tell the compiler to evaluate C# message to JS message
var x = @x; //Tell the compiler to evaluate C# x to JS x
}
}
aspLiteral.Content = ScriptWrapper.Wrap(script);
// output
<script type="text/javascript">
function test() {
alert("Hello World");
var x = \/Date(1371561853440)\/;
}
</script>
So che sembra una montagna monumentale da scalare, forse fino alla follia ... Sono l'unico a pensare che questo possa essere utile, o, se è un uso piuttosto limitato, non giustifica l'implementazione di questo in futuri compilatori / IDE?