1.首先使用express创建一个项目
使用npm安装Express开发框架:
//命令行输入命令 注意这是cmd
npm install -g express
npm install -g express-generator
新建一个项目
//命令行输入命令 cmd
express -t ejs newsproject //使用express的创建命令创建一个名为newsproject的项目
如果此处出现错误:'express'不是内部或外部命令,也不是可运行的程序或批处理文件。
原因是版本问题:当前版本是4.0.0,改成3.5.0即可运行,在cmd中输入下面命令
npm install -g express-generator@3.5.0
或
npm install -g express@3.5.0
成功安装express之后
进入项目目录,运行npm安装
//进入项目目录
cd newsproject //打开项目目录
//输入命令安装
npm install //npm安装
运行项目
//项目目录下运行命令
node app.js //运行此项目
至此,我们已经使用express框架自动搭建了一个node服务器,并启动了express提供的一个demo应用,我们可以按照cmd中的提示修改下面的端口号,使用浏览器访问即可得到demo应用的响应。
浏览器访问:http://127.0.0.1:3000/即可见nodejs站点页面,页面输出:Express
Node.js创建第一个应用
在我们创建 Node.js 第一个 “Hello, World!” 应用前,让我们先了解下 Node.js 应用是由哪几部分组成的:
1、引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。
2、创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
3、接收请求与响应请求, 服务器很容易创建,创建成功之后客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据
步骤一、引入 required 模块
我们使用 require 指令来载入 http 模块,并将实例化的 HTTP 赋值给变量 http,实例如下:
var http = require(“http”);
步骤二、创建服务器
接下来我们使用 http.createServer() 方法创建服务器,并使用 listen 方法绑定 8888 端口。 函数通过 request, response 参数来接收和响应数据。
实例如下,在你项目的根目录下创建一个叫 server.js 的文件,并写入以下代码:
var http = require('http');
http.createServer(function (request, response) {
// 发送 HTTP 头部
// HTTP 状态值: 200 : OK
// 内容类型: text/plain
response.writeHead(200, {'Content-Type': 'text/plain'});
// 发送响应数据 "Hello World"
response.end('Hello World\n');
}).listen(8888);
// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');
分析Node.js 的 HTTP 服务器:
第一行请求(require)Node.js 自带的 http 模块,并且把它赋值给 http 变量。
接下来我们调用 http 模块提供的函数: createServer 。这个函数会返回 一个对象,这个对象有一个叫做 listen 的方法,这个方法有一个数值参数, 指定这个 HTTP 服务器监听的端口号。
以上代码我们完成了一个可以工作的 HTTP 服务器,也就是说上面的代码我们就可以完成了一个本地服务器的搭建,当我们运行上面的代码的时候,一个本地服务器就开始运行了,我们只需要打开浏览器向此服务器发送请求,此服务器就会给浏览器返回你定义的返回数据。
使用 node 命令执行以上的代码:
node server.js
Server running at http://127.0.0.1:8888 //cmd输出信息
接下来,打开浏览器访问 http://127.0.0.1:8888/,你会看到一个写着 “Hello World”的网页。
nodejs-helloworld
现在node.js创建一个应用就完成了:
以下补充:
什么是web服务器?
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,Web服务器的基本功能就是提供Web信息浏览服务。它只需支持HTTP协议、HTML文档格式及URL,与客户端的网络浏览器配合。
大多数 web 服务器都支持服务端的脚本语言(php、python、ruby)等,并通过脚本语言从数据库获取数据,将结果返回给客户端浏览器。
目前最主流的三个Web服务器是Apache、Nginx、IIS。
Node.js 提供了 http 模块,http 模块主要用于搭建 HTTP 服务端和客户端,使用 HTTP 服务器或客户端功能必须调用 http 模块,代码如下:
var http = require('http');
在通常的服务器中,数据流通的方式是客户先通过浏览器进行发送请求,服务器在项目中进行查找,然后进入客户所需要的页面进行返回,在查找的过程中可能存在两种情况,就是存在和不存在,当然,我们会做出判断,下面就是:
简单服务器的实现过程:
1.编写服务器代码server.js
var http=require('http');
var fs = require('fs');
var url = require('url');
//创建服务器
http.createServer(function(request,response) {
//解析请求,包括文件名
var pathname= url.parse(request.url).pathname;
//输出请求的文件名
console.log("Request for "+ pathname + " received.");
//从文件系统中都去请求的文件内容
fs.readFile(pathname.substr(1),function(err, data) {
if(err) {
console.log(err);
//HTTP 状态码 404 : NOT FOUND
//Content Type:text/plain
response.writeHead(404,{'Content-Type': 'text/html'});
}
else {
//HTTP 状态码 200 : OK
//Content Type:text/plain
response.writeHead(200,{'Content-Type': 'text/html'});
//写会相应内容
response.write(data.toString());
}
//发送响应数据
response.end();
});
}).listen(8888);
console.log('Server running at http://127.0.0.1:8888/');
通过上面代码,我们就能够实现服务器对于文件的查找,下面,我们就进行创建一个html文件,然后通过浏览器进行访问
2.编写html文件(web_server.html),用于浏览器进行请求
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
这是我创建的,创建一个html文件进行访问
</body>
</html>
创建完成后,我们进行测试,现在我的目录结构是:
3 .进行测试
(1)首先启动服务器,
(2)在浏览器进行访问,
后台效果:
把样式写道另外单独一个文件中,然后通过引用的方式引入,于是就会有人使用下面代码:
<link rel="stylesheet" href="http://127.0.0.1:8081/WebServer/index.css">
但是不可以:
因为传递给前端的方式Content-Type是有问题的,需要我们的服务器进行下一步操作,也就是处理静态文件。既然传给前端时需要告诉type是css,那么我们就进行区分对待,如下面代码,我们对server.js进行修改如下
var http=require('http');
var fs = require('fs');
var url = require('url');
//创建服务器
http.createServer(function(request,response) {
//解析请求,包括文件名
var pathname= url.parse(request.url).pathname;
//输出请求的文件名
console.log("Request for "+ pathname + " received.");
//当请求static文件夹时,设置文件返回类型是text/css
var firstDir = pathname && pathname.split('/')[2];
var ContentType = null;
if (firstDir && firstDir === 'static') {
ContentType = {'Content-Type': 'text/css'};
} else {
ContentType = {'Content-Type': 'text/html'}
}
//从文件系统中去请求的文件内容
fs.readFile(pathname.substr(1),function(err, data) {
if(err) {
console.log(err);
//HTTP 状态码 404 : NOT FOUND
//Content Type:text/plain
response.writeHead(404, {'Content-Type': 'text/html'});
}
else {
//HTTP 状态码 200 : OK
//Content Type:text/plain
response.writeHead(200, ContentType);
//写会回相应内容
response.write(data.toString());
}
//发送响应数据
response.end();
});
}).listen(8081);
console.log('Server running at http://127.0.0.1:8081/');
接着,我们需要在项目中创建一个static文件夹,如下面所示结构:
在static文件下面放入css样式表