ExpressJs是否可以作为服务器?

时间:2017-08-23 18:05:52

标签: node.js express

我是Node.js的学习者。

  1. NodeJs中Express的目的是什么?
  2. 是否用作NodeJs应用程序的服务器?
  3. 如果是,那用于部署我们的nodeJs代码以及如何?
  4. 由于

2 个答案:

答案 0 :(得分:1)

Express是一个在Node.js中创建Web服务器的框架。你不需要一个框架来编写node.js服务器,但像Express这样的框架使你的编程工作变得更加容易。

是否使用Express对启动节点服务器没有任何影响。

没有Express的简单node.js服务器:

// index.js
const http = require('http')  
const port = 3000

const requestHandler = (request, response) => {  
  console.log(request.url)
  response.end('Hello Node.js Server!')
}

const server = http.createServer(requestHandler)

server.listen(port, (err) => {  
  if (err) {
    return console.log('something bad happened', err)
  }

  console.log(`server is listening on ${port}`)
})

运行node index.js

启动此服务器

带有Express的简单node.js服务器

// index.js
const express = require('express')
const app = express()

app.get('/', function (req, res) {
  res.send('Hello World!')
})

app.listen(3000, function () {
  console.log('Example app listening on port 3000!')
})

由于此应用程序具有Express作为依赖项,因此必须安装Express。运行npm i express以安装快速。

再次,使用node index.js启动此服务器。

您会注意到这两个示例都在端口3000上启动HTTP服务器。如果计算机的防火墙允许端口3000上的连接,则人们可以访问http://<your_domain>:3000处的node.js服务器或http://<your_ip_address>:3000

如果端口3000被防火墙阻止,另一种可能性是用nginx代理你的node.js服务器。这具有使用nginx的功能进行初始连接的额外好处,例如TLS。

您还可以修改上面的代码,让node.js服务器在端口80上运行。如果计算机已经使用了端口80,那将无法工作,例如,如果apache,nginx等是已经运行。 Node.js也可以直接接受TLS(https)连接。

答案 1 :(得分:0)

Node.js Frameworks Comparison在这里,您可以看到生产级别中使用的 nodejs框架与其性能的比较。