Edit in JSFiddle

var numbers = document.getElementById("numbers");
var output = document.getElementById("output");
var accum = [], gutter = [], size = 0;
var callback = function(string, style) {
    if (string == "\n") {
        accum.push("<br>");
        gutter.push('<pre>'+(++size)+'</pre>');
    }
    else if (style)
        accum.push("<span class=\"cm-" + CodeMirror.htmlEscape(style) + "\">" + CodeMirror.htmlEscape(string) + "</span>");
    else
        accum.push(CodeMirror.htmlEscape(string));
}
CodeMirror.runMode(document.getElementById("code").value, "text/javascript", callback);
output.innerHTML = accum.join('');
numbers.innerHTML = gutter.join('');
<!--https://gist.github.com/1484191-->
<div class="CodeMirror">
    <div class="CodeMirror-gutter"><div class="CodeMirror-gutter-text"><div id="numbers"></div></div></div>
    <div class="CodeMirror-lines">
        <div style="position: relative; margin-left: 33px">
            <pre id="output" class="cm-s-default"></pre>
        </div>
    </div>
</div>

<textarea id="code">
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
</textarea>
#code {display: none;}

External resources loaded into this fiddle: