教程|使用 Node.Js 开发服务器
Posted 创智俱乐部ISA
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了教程|使用 Node.Js 开发服务器相关的知识,希望对你有一定的参考价值。
点击蓝字关注,创智助你长姿势
上期,我们给大家简单地介绍了 Node.Js 以及简单的提了一下学习前的准备,不知道大家还记不记得呢?不记得的话,就回去翻一下第一期的教程哦!这一期就是剖析知识准备的三个点,大家拿好笔记本听课啦!
一、搭建Node.Js服务器
使用模块搭建服务器,这有助于快速开发,许多功能的实现不需要全部由自己编写,Node.Js 提供许多开源的模块,只需下载后,在程序中声明一下即可使用,例如通过 const express = require ('express'),即引入了 express 模块。
选择使用 express 网络框架搭建服务器,下载并在程序中声明后,指定在 6868 端口监听:
const express=require('express');//express网络框架
var server=express();
server.listen(6868); //在6868端口监听用户的请求
当服务器接收到用户的请求后,返回一个页面,一般来说,没有纯静态的页面,往往页面的某块信息要发生变化,例如新闻的更新。选择使用模板引擎后台渲染页面,好处就是页面是可以变化的,根据程序的数据生成。
Jade 和 ejs 是两大主流模板引擎,jade 书写起来简洁方便,但不能与其他 html、CSS 共存,ejs 的书写跟普通的 HTML 页面书写结构一样,因此也能跟 HTML、CSS 共存,各有各的好处,根据实际开发的需求选择合适的模板引擎。这里选择 ejs 模板引擎为例进行开发,引入模板引擎,并配置模板引擎,配置模板引擎需告诉程序输出什么东西,模板文件放在哪里以及使用哪种模板引擎:
const consolidate=require('consolidate');//模块引擎合并库
//配置模板引擎
//输出什么东西
server.set('view engine','html');
//模板文件放在哪儿
server.set('views','./template');
//哪种模板引擎
server.engine('html',consolidate.ejs);
最后编写接收用户的请求,并返回的结果:
server.get('/',(req,res)=>{ //接收url为localhost:6868的请求
//执行操作
if(err){
//提示错误信息
}else{
//返回页面
}
});
在开发中往往服务器在接收到用户的请求后,需要处理的步骤是比较多的,所有的步骤都写在一起,出错了往往比较难找,使用链式操作,处理完第一个步骤后,传递给下一级处理,下一级继承上一级的处理结果,例如上一级创建了一个字符串变量,下一级就能使用此变量,这样有便于调错,也使得程序的可读性增加了许多,改写 get 请求:
server.get('/',(req,res,next)=>{ //接收请求的url为localhost:6868
//执行操作
if(err){
//提示错误信息
}else{
next(); //链式操作,传递给下一级处理
}
});
server.get('/',(req,res)=>{ //接收请求的url为localhost:6868
//执行操作
if(err){
//提示错误信息
}else{
//返回页面
}
});
以上代码只传递了一次,根据步骤的复杂性,决定使用的传递次数,只需要在第二个操作中继续使用 next () 传递到下一级,直到最后一步操作即可。
二、查询数据库返回数据
在 node.js 中连接数据库需要引入 mysql 模块,接着连接数据库,使用数据库连接池能提高安全性以及连接效率:
const mysql=require('mysql');//一个用于mysql的node.js驱动程序。它是用javascript编写的,不需要编译
//使用数据库连接池,连接名为blog的数据库
const db=mysql.createPool({host:'localhost',user:'root',password:'',database:'blog'});
连接数据库后便可以对数据库进行增删改查的操作,使用的语句与 mysql 完全一样,例如select * from banner_table即表示查询表名为banner_table的所有数据。在 node.js 中执行查询数据库并返回结果:
server.get('/',(req,res,next)=>{
//查询banner的东西
db.query("select * from banner_table",(err,data)=>{
if(err){
res.status(500).send('database error').end(); //提示数据库操作出错
}else{
res.banners=data; //将查询到的结果赋值给banners
next(); //链式操作,传递给下一级处理
}
});
});
query 用来执行语句,拥有两个参数,第一个参数代表要执行的语句,第二个参数为一个函数,代表执行完语句后的一个反馈行为,这个反馈行为也有两个参数,如果出错,提示错误信息 err,如果成功,获取查询到的结果 data。
三、使用数据渲染页面
使用数据渲染页面,即一个页面的内容并不是在 ejs 文件中写好的,是非静态的,由数据来决定。
例如:想在一个页面中显示一张图片,如果按照平时的做法,会直接使用<img >插入一张图片,但如果想要用数据决定显示哪张图片,就需要对 src 属性值的书写做一些改变:<img >,此种写法,是将 src 属性值赋值为服务器返回来的一个 json 中的 src 值,而这个值是从数据库查询得来的,所以事先也需要在数据库中存放好该值,而该值一般存放的是图片的路径名,数据库一般不存放图片文件,那样子很耗费资源并且效率低,存放图片路径名,渲染页面时,程序会根据路径名去相应的文件夹找到图片并渲染。
这一期的教程就到这里啦,大家学会了吗?下一期将着手编程实现宠物网站,记得留意下一期推文哦!
创智俱乐部ISA
微信:sziitlSA
一个让你涨姿势的社团
长按二维码关注
以上是关于教程|使用 Node.Js 开发服务器的主要内容,如果未能解决你的问题,请参考以下文章