教程|使用 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 开发服务器的主要内容,如果未能解决你的问题,请参考以下文章

node.js零基础详细教程:express 路由

你可能不知道的JavaScript代码片段和技巧(下)

你可能不知道的JavaScript代码片段和技巧(上)

Node.js JavaScript 片段中的跳过代码

如何在CentOS 7安装Node.js

方便大家学习的Node.js教程:理解Node.js