brainbaking/content/wiki/code/javascript/serverside.md

46 lines
1.5 KiB
Markdown
Raw Normal View History

2017-02-26 13:28:18 +01:00
+++
title = "serverside"
draft = false
tags = [
"code",
"javascript",
"serverside"
]
date = "2013-03-12"
+++
# JS Serverside draaien
### JS Server Parsers
#### Java: Rhino
Vooral gericht op serverside integratie met bijvoorbeeld Java EE.
Zie http://www.mozilla.org/rhino/
#### C++: Google V8
Wordt bijvoorbeeld gebruikt in __Google Chrome__.
Zie http://code.google.com/p/v8/
-> Ook via CLI aan te spreken in .NET - zie http://jint.codeplex.com/
#### C: SpiderMonkey
Wordt bijvoorbeeld gebruikt in __Mozilla Firefox__.
Zie http://www.mozilla.org/js/spidermonkey/
### Headless DOM Manipulatie
Omdat serverside Javascript geen `window` object als toplevel scope bestaat, kunnen we ook geen DOM manipulatie uitvoeren. Er is hier echter een oplossing voor, bovenop bijvoorbeeld Rhino: `env.js`. Meer achtergrondinfo is hier te vinden: http://ejohn.org/blog/bringing-the-browser-to-the-server/
Envjs is een laag die het mogelijk maakt om aan de serverkant zelfs aan **screen scraping** te doen, door bijvoorbeeld:
```javascript
window.location = 'http://www.google.com';
var wowContentsAreAwasom = jQuery('#interesting').html();
```
Dit zónder de browser effectief open te hebben! Dit is ook makkelijk voor **test integratie**, bijvoorbeeld __QUnit__ testen met integratietesten die DOM manipulatie uitvoeren, te integreren in de build. Aangezien een Ant build Java is, kunnen we Rhino gebruiken samen met Envjs om de QUnit testen te runnen, en met een aangepaste report generator dit zelfs als JUnit test report te outputten.