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 相关文章推荐
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
Jul 09 Javascript
jquery中animate动画积累的解决方法
Oct 05 Javascript
jQuery实现图片上传和裁剪插件Croppie
Nov 29 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
Nov 09 Javascript
Java与JavaScript中判断两字符串是否相等的区别
Mar 13 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
Oct 14 jQuery
vue webpack实用技巧总结
Apr 24 Javascript
JS中实现隐藏部分姓名或者电话号码的代码
Jul 17 Javascript
vue服务端渲染缓存应用详解
Sep 12 Javascript
微信小程序实现弹出层效果
May 26 Javascript
js变量值传到php过程详解 将php解析成数据
Jun 26 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
Jul 17 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&amp;java(三)
2006/10/09 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
2013/09/28 PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
2014/07/28 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
javascript网页关闭时提醒效果脚本
2008/10/22 Javascript
javascript hashtable实现代码
2009/10/13 Javascript
JQuery 动画卷页 返回顶部 动画特效(兼容Chrome)
2010/02/15 Javascript
ajax处理php返回json数据的实例代码
2013/01/24 Javascript
JsRender for object语法简介
2014/10/31 Javascript
Vue.js每天必学之内部响应式原理探究
2016/09/07 Javascript
RequireJs的使用详解
2017/02/19 Javascript
关于Promise 异步编程的实例讲解
2017/09/01 Javascript
js截取字符串功能的实现方法
2017/09/27 Javascript
jQuery中each方法的使用详解
2018/03/18 jQuery
手把手教你vue-cli单页到多页应用的方法
2018/05/31 Javascript
jQuery实现的滑块滑动导航效果示例
2018/06/04 jQuery
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
详解利用eventemitter2实现Vue组件通信
2019/11/04 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
2020/02/10 Javascript
[01:07:13]TNC vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[40:03]RNG vs VG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
matplotlib绘制动画代码示例
2018/01/02 Python
Django model select的多种用法详解
2019/07/16 Python
html5之Canvas路径绘图、坐标变换应用实例
2012/12/26 HTML / CSS
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
C/C++有关内存的思考题
2015/12/04 面试题
护理实习自我鉴定
2013/12/14 职场文书
宣传标语大全
2014/07/01 职场文书
开票员岗位职责
2015/02/12 职场文书
毕业生个人总结
2015/02/28 职场文书
2016中秋节月饼促销广告语
2016/01/28 职场文书
团组织关系介绍信
2019/06/24 职场文书
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS
如何解决flex文本溢出问题小结
2022/07/15 HTML / CSS