Node.js创建一个Express服务的方法详解


Posted in Javascript onJanuary 06, 2020

本文实例讲述了Node.js创建一个Express服务的方法。分享给大家供大家参考,具体如下:

1、创建一个HttpServer服务端

在node.js官网下载好node的Windows版本后一路下一步安装好了node,新建一个server.js文件,开始第一个node文件。首先在文件开头需要使用require包含所需要的模块,然后利用http.createServer创建一个server,并执行回调函数。在回调函数内对请求req进行处理,并返回res结果。

利用url的parse方法将req请求中的url转换为json后,得到其中的请求文件名pathname。然后利用fs的readFile方法读取文件,在回掉函数中进行错误判断并设定文件头的状态码以及"Content-Type",之后将文件写入res返回。最后记得在createServer的回掉方法内结束res.end();

在文件最后调用server.listen();一直监听localhost的3000端口。

启动node服务,在文件夹内通过控制台输入:node server.js。打开浏览器的localhost:3000/index.html,通过server.js访问index.html页面内容。  

const http=require('http');
const url=require('url');
const fs=require('fs');
//1、创建server
let server=http.createServer((req,res)=>{
//2、获取网页请求的文件路径
 let pathname=url.parse(req.url).pathname;
//3、利用fs读取文件
 fs.readFile(pathname.substring(1),function (err,data) {
  if (err){             //有错误err,文件未找到,返回状态404
   res.writeHead(404,{
    "Content-Type":"text/html"
   });
  }else{              //否则正常,设定返回状态为200
   res.writeHead(200,{
    "Content-Type":"text/html"
   });   
   res.write(data.toString());  //将找到的文件写入返回
  }
  res.end();           //在函数readFile()内关闭链接
 });
});
//4、让server一直监听localhost的3000端口的请求
server.listen(3000,'localhost');

2、Node请求数据

Node作为服务器有时候还需要请求其他服务器的数据,此时node就成了“客户端”了,通过HTTP的get方法可以对指定的网址接口进行api调用、数据请求,例如:

const http=require('http');
//利用HTTP请求第三方接口服务
http.get('http://www.imooc.com/u/card',(res)=>{
 let data='';
 res.on('data',(temp)=>{        //检测到数据,追加到data中
  data+=temp;
 });
 res.on('end',()=>{          //检测到数据传输结束,控制台输出数据
  console.log(data);
 });
});

在get的回调函数中对res进行处理,如果有数据传输on('data'),则将temp追加到data,如果传输完成on('end'),则进行相关处理。

3、搭建Express框架

①、安装Express

Node安装之后自带npm软件包管理工具,通过npm命令可以获取npm平台上的插件、软件,由于被墙,国内可以使用淘宝镜像进行安装,通过以下命令设置,就可以使用cnpm代替npm了。

npm install -g cnpm --registry=https://registry.npm.taobao.org

通过cnpm全局安装express框架:

cnpm install -g express-generator

安装完成后可以通过express --version来查看express版本。

②、初始化项目

通过express命令来初始化一个服务框架:express server,之后就可以看到生成了一个server文件夹。

Node.js创建一个Express服务的方法详解

其中bin/www.js用于创建一个HTTP的服务器并且启动、监听某个端口,一般不用修改。public文件夹用于存放img、js、css等静态文件,routes文件夹存放路由js文件。view中存放视图文件,默认提供的是用jade类型文件。app.js文件中设置视图及通过app.use()调用相关模块。例如:

//app.js文件内指定根目录
var index = require('./routes/index');
app.use('/', index);
//index.js文件内渲染index页面
router.get('/', function(req, res, next) {
 res.render('index', { title: 'Express' });
});

首先在app.js内将网站的根目录指定为routes下的index.js文件,在index.js中调用router.get方法请求view下的视图文件,在回调函数render中渲染index.jade界面,从而当你在浏览器输入localhost:3000时会默认显示view/index.jade页面。

express官方提供.jade文件作为网页默认视图,因此如果需要使用html则需要进行配置:

首先通过cnpm install ejs --save安装ejs插件,然后在app.js文件中view engine setup下进行配置引擎:

Node.js创建一个Express服务的方法详解

之后在views文件夹下删除原有.jade文件,新建你想要展示的index.html文件即可。例如:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>express index</title>
</head>
<body>
  <h1>Express</h1>
  <p>Welcome use express in HTML</p>
</body>
</html>

3、启动Express,在server所在文件夹下执行命令:node bin/www,在浏览器localhost:3000显示为:

Node.js创建一个Express服务的方法详解

希望本文所述对大家node.js程序设计有所帮助。

Javascript 相关文章推荐
强制设为首页代码
Jun 19 Javascript
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
Jan 15 Javascript
javascript从image转换为base64位编码的String
Jul 29 Javascript
JavaScript中的值类型转换介绍
Dec 31 Javascript
学习Javascript面向对象编程之封装
Feb 23 Javascript
利用vue.js插入dom节点的方法
Mar 15 Javascript
微信JS-SDK选取手机照片上传功能
Apr 21 Javascript
JS 中LocalStorage和SessionStorage的使用
Aug 17 Javascript
js使用xml数据载体实现城市省份二级联动效果
Nov 08 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
Dec 24 Javascript
vue的全局提示框组件实例代码
Feb 26 Javascript
vue项目出现页面空白的解决方案
Oct 31 Javascript
JS正则表达式验证端口范围(0-65535)
Jan 06 #Javascript
基于jQuery实现挂号平台首页源码
Jan 06 #jQuery
JS实现音乐导航特效
Jan 06 #Javascript
使用vue实现一个电子签名组件的示例代码
Jan 06 #Javascript
Vuejs中的watch实例详解(监听者)
Jan 05 #Javascript
Node中对非阻塞I/O、事件循环的知识点总结
Jan 05 #Javascript
原生js实现文件上传、下载、封装等实例方法
Jan 05 #Javascript
You might like
《PHP边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
php array_flip() 删除数组重复元素
2009/01/14 PHP
php笔记之:文章中图片处理的使用
2013/04/26 PHP
PHP经典面试题集锦
2015/03/19 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
用js+xml自动生成表格的东西
2006/12/21 Javascript
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
基于JQuery的列表拖动排序实现代码
2013/10/01 Javascript
javascript的document.referrer浏览器支持、失效情况总结
2014/07/18 Javascript
基于jQuery实现最基本的淡入淡出效果实例
2015/02/02 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
JQuery点击行tr实现checkBox选中的简单实例
2016/05/26 Javascript
关于动态执行代码(js的Eval)实例详解
2016/08/15 Javascript
js实现String.Fomat的实例代码
2016/09/02 Javascript
原生Javascript插件开发实践
2017/01/18 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
css和js实现弹出登录居中界面完整代码
2017/11/26 Javascript
js最简单的双向绑定实例讲解
2018/01/02 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
javascript实现拖拽碰撞检测
2020/03/12 Javascript
[01:03:27]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[00:08]DOTA2勇士令状等级奖励“天外飞星”
2019/05/24 DOTA
python抓取网页图片并放到指定文件夹
2014/04/24 Python
python selenium 对浏览器标签页进行关闭和切换的方法
2018/05/21 Python
python中的单引号双引号区别知识点总结
2019/06/23 Python
Python+threading模块对单个接口进行并发测试
2019/06/25 Python
CSS3+js实现简单的时钟特效
2015/03/18 HTML / CSS
html5与css3小应用
2013/04/03 HTML / CSS
购房协议书范本
2014/04/11 职场文书
酒店开业策划方案
2014/06/02 职场文书
申报优秀教师材料
2014/12/16 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书
经典励志格言:每日一句,让你每天充满能量
2019/08/16 职场文书