Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境,也可以理解为服务器端运行的 JavaScript。JS 作为一门编程语言,是运行在称为 JS 运行时的虚拟机中的,而在 I/O 功能上,JS 更多依赖于宿主环境。一般我们遇到的宿主环境主要是浏览器,Node.js 则是在服务器端运行的高速 JavaScript 解释器。
近期遇到一个小型网站需要建立一个简单的 Web 服务器,原本想用 SpringMVC 解决,无奈 Spring 的哲学博大精深,自己才疏学浅,不能快速出货,因此决定用 Node.js 试试,这里就简单介绍下如何快速启动一个简单易用的 Web Server。这里我使用的开发环境是基于 Ubuntu 14.04 的 Elementary OS。
1. 准备工作
1.1 安装 NodeJS 环境和 npm 模块管理器
sudo apt-get install nodejs sudo apt-get install npm
npm 是一个优秀的 Node 模块管理器,在开发中帮助我们解决很多第三方代码库的依赖管理事务。
1.2 设置 npm 代理
假如没有提前做任何额外措施,那么必然当你使用 npm 从网络下载自己需要的 NodeJs 模块时,速度会非常慢,甚至会因超时而失败,具体原因不多讲,推荐使用淘宝的 npm 镜像,问题会得到解决。
打开 ~/.npmrc 文件
输入 registry = https://registry.npm.taobao.org
保存退出
注意如果你曾设置过全局穿墙但是 npm 依然速度很慢,可以试试在 ~/.npmrc 文件中继续添加
proxy=false
2. 用 Express Generator 搭建开发环境
Express 是目前最流行的基于 Node.js 的 Web 开发框架,可以快速地搭建一个完整功能的网站。
Express Generator 是 Express 的应用程序生成器工具,使用它可以快速建立完整的项目文件目录。
2.1 安装 Express Generator
$ npm install express-generator -g
2.2 建立 Express 应用程序
express --view=pug NodeApp
这里 view 参数是用来预设开发中使用的模板引擎的。更多参数如下
express -h Usage: express [options] [dir] Options: -h, --help output usage information --version output the version number -e, --ejs add ejs engine support --pug add pug engine support --hbs add handlebars engine support -H, --hogan add hogan.js engine support -v, --view <engine> add view <engine> support (ejs|hbs|hjs|jade|pug|twig|vash) (defaults to jade) -c, --css <engine> add stylesheet <engine> support (less|stylus|compass|sass) (defaults to plain css) --git add .gitignore -f, --force force on non-empty directory
2.3 解决模块依赖
进入刚刚建立的 NodeApp 文件夹,可以看到里面有一个 package.json 文件,它定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据),npm可以依据它来管理项目模块。
打开 package.json 可以看到里面的内容如下
{ "name": "NodeApp", "version": "0.0.0", "private": true, "scripts": { "start": "node ./bin/www" }, "dependencies": { "body-parser": "~1.16.0", "cookie-parser": "~1.4.3", "debug": "~2.6.0", "express": "~4.14.1", "morgan": "~1.7.0", "pug": "~2.0.0-beta10", "serve-favicon": "~2.3.2" } }
现在在终端执行 npm 命令解决模块依赖,npm 会按照 package.json 文件的内容下载相应模块,当然,如果没有设置穿墙措施这一步是无法执行的
npm intsall
3. 初次启动服务器
基本上该有的配置和基本的逻辑代码 Express Generator 都帮我们做好了,那么我们其实已经可以用一行命令启动服务器了。
执行以下命令
npm start
访问 localhost:3000 即可看到 Express 欢迎页面了。
4. 设置访问地址
可以看到在之前建立的文件目录下还有一个 app.js 文件,其实它就充当了一个项目中的main函数的角色,里面使用了很多 Express 中间件和 Express 语法,这里不一一叙述。
在实际生产环境中,我们需要自己设定外部访问端口,比如通过 Http 的 80 端口访问我们的服务器,那么就可以在app.js文件的 "module.exports = app;" 语句前加上如下代码
var server = app.listen(80, "0.0.0.0", function () { console.log("服务器IP地址:" + ip.address()); var host = server.address().address; var port = server.address().port; console.log("应用已启动,访问地址为 %s:%s", host, port) });
这里简单解释下,80 意味着我们的服务器程序将监听本机的80端口,0.0.0.0 意味着本地和外部访问请求都将由我们的服务器程序进行处理。
同时启动了服务器后我们在终端也可以看到当前主机的IP地址以及服务器程序接受的访问地址。
5. 设置 index 页面内容