diff options
Diffstat (limited to 'files/pt-pt/learn/server-side/node_server_without_framework/index.html')
-rw-r--r-- | files/pt-pt/learn/server-side/node_server_without_framework/index.html | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/files/pt-pt/learn/server-side/node_server_without_framework/index.html b/files/pt-pt/learn/server-side/node_server_without_framework/index.html new file mode 100644 index 0000000000..85bd786b58 --- /dev/null +++ b/files/pt-pt/learn/server-side/node_server_without_framework/index.html @@ -0,0 +1,94 @@ +--- +title: Servidor de Node.js sem uma framework +slug: Learn/No-servidor/Servidor_node_sem_framework +tags: + - JavaScript + - Nodo + - Precisa de Conteúdo + - Servidor + - sem estrutura +translation_of: Learn/Server-side/Node_server_without_framework +--- +<div>{{LearnSidebar}}</div> + +<p> </p> + +<p class="summary">Este artigo fornece um servidor de ficheiros estático simples com Node.js puro, sem a utilização de uma framework.</p> + +<p><a href="https://nodejs.org/en/">NodeJS</a> tem muitas frameworks para ajudá-lo a ter o seu servidor configurado e a funcionar.</p> + +<ul> + <li><a href="http://expressjs.com/">Express</a>: uma framework mais utilizada.</li> + <li><a href="https://hapijs.com/">Hapi.js</a>: uma framework rica para criar aplicações e serviços</li> + <li><a href="https://www.totaljs.com/">Total</a>: a framework de Node.js "tudo-em-um", que não depende de qualquer outra framework, ou módulo.</li> +</ul> + +<p>Estas não irão corresponder a todas as situações. Um programador pode precisar de criar o seu próprio servidor sem outras dependências.</p> + +<h2 id="Exemplo">Exemplo</h2> + +<p>Um servidor de ficheiros estático simples, criado com Node.js:</p> + +<p> </p> + +<pre class="brush: js">var http = require('http'); +var fs = require('fs'); +var path = require('path'); + +http.createServer(function (request, response) { + console.log('request ', request.url); + + var filePath = '.' + request.url; + if (filePath == './') { + filePath = './index.html'; + } + + var extname = String(path.extname(filePath)).toLowerCase(); + var contentType = 'text/html'; + var mimeTypes = { + '.html': 'text/html', + '.js': 'text/javascript', + '.css': 'text/css', + '.json': 'application/json', + '.png': 'image/png', + '.jpg': 'image/jpg', + '.gif': 'image/gif', + '.wav': 'audio/wav', + '.mp4': 'video/mp4', + '.woff': 'application/font-woff', + '.ttf': 'application/font-ttf', + '.eot': 'application/vnd.ms-fontobject', + '.otf': 'application/font-otf', + '.svg': 'application/image/svg+xml' + }; + + contentType = mimeTypes[extname] || 'application/octet-stream'; + + fs.readFile(filePath, function(error, content) { + if (error) { + if(error.code == 'ENOENT'){ + fs.readFile('./404.html', function(error, content) { + response.writeHead(200, { 'Content-Type': contentType }); + response.end(content, 'utf-8'); + }); + } + else { + response.writeHead(500); + response.end('Sorry, check with the site admin for error: '+error.code+' ..\n'); + response.end(); + } + } + else { + response.writeHead(200, { 'Content-Type': contentType }); + response.end(content, 'utf-8'); + } + }); + +}).listen(8125); +console.log('Server running at http://127.0.0.1:8125/');</pre> + +<p> </p> + +<h2 id="A_efetuar">A efetuar</h2> + +<p>Estenda este artigo, explicando como é que o código acima funciona. Talvez, uma versão estendida que sirva os ficheiros estáticos e lide com pedidos dinâmicos.</p> |