共计 4324 个字符,预计需要花费 11 分钟才能阅读完成。
这篇文章给大家介绍 Node.js 如何快速上手并部署网站,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
Node.js 快速上手并部署到好雨云
网站的错误不经常发生,但当我们遇到的时候非常令人懊恼,比如当我们想要在线挂号的时候,遇到了这个:
为什么会出现这种情况,背后的服务器发生了什么?我们将使用 Node.js 做一个简单的 web 服务器并利用好雨应用管理平台将我们本地的服务放到互联网上面。
Node.js 是一个开源的跨平台运行环境,允许我们构建一个服务器端和网络应用的运行环境。使用 JavaScript 语言开发可以通过 Node.js 运行时环境跑在任何平台。当然,开始使用前我们需要先进行安装,通过这个下载地址找到适合我们系统的安装包进行安装。
简单的开始
首先我们需要写一个 JavaScript 文件,我们叫它 server.js,这个就是我们运行 web 服务器的程序。
var http = require( http
http.createServer(function(request, response) { response.writeHead(200, { Content-Type : text/plain});
response.write( It s work!
response.end();}).listen(5000);
相信我,这是你看到的最简单的服务器程序了,是不是很简单,接着我们在命令行下运行这个文件。
node server.js
这样我们的 web 服务器就已经运行了,打开浏览器让我们确认一下它正常工作了。
Node.js 可以用很少的资源,应付大流量访问,因为 node 采用了 event loop 机制来解决单线程的问题,这种运行方式称为 异步模式(asynchronous I/O)或 非堵塞模式(non-blocking mode)。
让我们通过这幅图解释的更详细一些:
这幅图很好的展示了在 Node.js 服务内部是如何工作的。一个用来处理外部事件并且把它们转换成对回调的调用的实体。
这些工作都是在服务内服实现的,我们在写代码的过程中不会接触到这些问题。所以我们只需要了解 Node 运行如此快的原因正是基于这种 异步 I / O 模式 就可以了。
部署到网上
我的服务器已经正常运行了,可是它只是跑在我的本地,如果想要让更多的人访问我的网站,我需要将它放到互联网上我们需要选择一个云平台来部署我们的网站。对于云平台我们有很多选择,比如亚马逊、Heroku 等等,但因为众所周知的原因,国外的云服务我们使用起来并不方便,甚至无法访问。所以我选择了丸趣 TV 来部署网站,丸趣 TV 是一个云端的应用管理平台,也就是我们通常所说的 PaaS(platform as a service),它允许你自动部署 web 应用,支持几种构建方式,比如我使用就是源码构建,这节省了我很多时间,可以让我专心写代码,不用为服务器、网络以及代码运行环境的配置操心。
写个博客
好,在部署之前,我们需要进行一些开发的工作,让我们写个简单网站,新建项目目录名为 myblog,并创建 server.js(上面说过的,还记得吗?)首先声明一些变量:
var http = require( http
var fs = require( fs
var path = require( path
var mime = require(mime
这里包含了一个第三方的依赖 mime,他不是 node 的一部分,我们需要先安装这些第三方依赖才能让程序工作。为了解决依赖问题我们需要写一个 package.json 文件将我们项目需要的依赖放进去。
就像这样:
{
name : myblog ,
version : 0.0.1 ,
description : a simple blog ,
dependencies : {
mime : ~1.2.7
},
scripts : { start : node server.js
},
engines : {
node : 4.7.2
}
}
语法很简单,但要注意一些语法细节,不然经常会发生因为少了逗号或者引号造成构建失败这种低级的错误。这里我们声明依赖的 mime 的版本、启动命令以及 node 的版本。
如果我们代码的根目录下存在 package.json 文件那么丸趣 TV 就会判断这是 Node.js 程序并安装相应的依赖以及调用我们声明的命令来启动程序。
接着我们需要为 web 服务器增加一些功能来处理不同的请求,send404 是当请求到不存在的文件时,我们要如何处理:
function send404(response) { response.writeHead(404, { Content-type : text/plain});
response.write( Error 404: resource not found
response.end();}
sendFile 文件数据服务:
function sendFile(response, filePath, fileContents) { response.writeHead(200, { Content-type : mime.lookup(path.basename(filePath))});
response.end(fileContents);
}
定义服务器如何执行请求:
function serverWorking(response, absPath) { fs.exists(absPath, function(exists) { if (exists) { fs.readFile(absPath, function(err, data) { if (err) { send404(response)
} else { sendFile(response, absPath, data);
}
});
} else { send404(response);
}
});
}
创建 http 服务器:
var server = http.createServer(function(request, response) {
var filePath = false;
if (request.url == /) {
filePath = public/index.html
} else {
filePath = public + request.url;
}
var absPath = ./ + filePath;
serverWorking(response, absPath);
});
配置服务的监控端口:
var port_number = server.listen(process.env.PORT || 5000);
为啥是 5000 呢?因为好雨云默认分配 5000 的监控端口。所以我们将这里配置好,就可以直接被访问到。
然后我们开始写内容,在项目目录 (myblog) 下新建几个目录:public、stylesheets 和 images。我们将 index.html 放到 public 下,将我们样式文件 style.css 放到 stylesheets 下,静态资源图片放到 images 下。
博客的首页 index.html 代码如下:
!DOCTYPE html
html
head
title 我的博客 /title
link rel= stylesheet type= text/css href= http://oe5ahutux.bkt.clouddn.com/style.css
/head
body
div id= header
span 一个简单的博客 /span
/div
div id= content
h3 a href= http://www.amazon.cn/gp/product/B007VISQ1Y/ref=as_li_ss_tl?ie=UTF8 camp=536 creative=3132 creativeASIN=B007VISQ1Y linkCode=as2 tag=jysperm07-23 JavaScript 权威指南 /a /h3
p 这本书事无巨细地介绍了 JasvaScript 语言核心、标准库以及浏览器提供的 DOM 和 BOM. 本书并没有由浅入深的结构,而是通篇平铺直叙地介绍,因此适合有一定 JavaScript 基础的人从头至尾阅读来掌握一些相对细节的 JavaScript 知识,或遇到具体问题时查阅相关章节。/p
h3 a href= something.html JavaScript 异步编程 /a /h3
p 这本书介绍了 JavaScript 中事件模型、Promise、async.js 等异步抽象的设计和实现,同时也介绍了 Web Woerk 等在浏览器中优化性能的技巧。这本书适合所有 JavaScript 程序员增加对 Promise 等异步模型的理解,并在实践中挑选合适的异步模型。/p
/div
/body
/html
浏览器中访问的样子:
首页代码中,我故意写了一个可以访问的正确链接和一个不可访问的错误链接,这样我可以试一下 404 返回内容。
### 部署到丸趣 TV
OK,到这里我们的网站写好了,需要将代码提交到丸趣 TV 来部署,点新建应用后,好雨平台会给我们一个 git 代码仓库的地址,我们只需要将代码提交到这个地址就可以了。
在我们本地的 myblog 项目目录中执行
# 初始化本地 git 仓库
git init
# 添加远程仓库地址
git remote add goodrain http://code.goodrain.com/app/simtime_gr8904c4.git
# 执行提交
git add .
git commit -m first commit
git push -u goodrain master
提交后,平台自动识别了我们的语言
在自动构建和部署之后,我们就可以访问到我们的网站了。
总结
我们写了不到 60 行代码,将我们的 web 服务器构建了起来,并写了一个演示用的博客页面,也许你会说这太简单了,没错,确实是这样,但通过这些你可以快速的了解到 web 服务器是如何工作。你还可以将 Node.js 与更多技术结合,比如 HTML5、CSS3 以及 JavaScript,当然还包括种类丰富的库和框架支持。
PaaS 云平台的选择也是一个重点,可以帮助我们快速学习、试验我们的代码,将我们从复杂的配置和运维工作中解脱了出来。
关于 Node.js 如何快速上手并部署网站就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。