摘 要:学生就业网站的开发,给企业、学生提供一个供需双方交流的平台。在服务器端,通过搭建Node.js的Express服务器框架,创建MySql数据库对象,通过路由设计,实现服务器端的各项操作。在客户端,运用HTML5、JavaScript、Ajax等技术,实现网站的前后端分离设计。在开发过程中,结合chrome的开发者工具、postman测试软件,快速开发就业网站项目,该项目的实施为学生就业拓宽了渠道。
关键词:Express;MySql;开发者工具;postman
中图分类号:TP311;TN820 文献标识码:A文章编号:2096-4706(2021)15-0019-04
Abstract: The development of student employment website provides a platform for enterprises and students to communicate between supply and demand. On the server side, the Express server framework of Node.js is built, MySql database is created, and various operations on the server side are realized by route design. In the client, HTML5, JavaScript, Ajax and other technologies are used to realize the separation of the front and back ends of the website design. In the development process, the developer tools of chrome and postman testing software are combined to rapidly develop the employment website project. The implementation of this project expands the channels for students to obtain employment.
Keywords: Express; MySql; developer tools; postman
0 引 言
网站服务器端开发所用语言有Java Web、ASP.NET、PHP等开发语言,目前绝大多数网站开发都使用这些技术。网站开发离不开JavaScript,Node.js是让JavaScript运行在服务器端的开发平台,可以安装很多第三方插件,非常适合各类项目的开发,包括服务器端网站的开发。本项目开发的目的是给高职学生提供一个就业的平台,通过该网站,企业和学生有一个交流的平台,能够相互了解,互动交流,企业和学生各取所需,为学生提供一个就业的机会。
1 MySQl数据库
MySQl是一个多线程的SQL数据库服务器,执行性能高,运行速度快,并且容易使用,在中小型网站上普遍使用。使用Navicat操作MySQl数据库,该软件使用图形界面操作数据库、数据表、视图、查询语句。创建的数据表包括用户表(用来保存企业、学生、管理员的信息)、学生的基本信息表、学生各个学期的成绩表、学生各个学期的评价表、企业的基本信息表、企业的招聘信息表。这6张数据表能够满足网站的基本需求。在网站运行过程中,可以根据需要,补充一些数据表。
网站管理的核心是管理员收集学生资料、企业资料,将这些数据添加到对应的数据表中。有错误、误差时,对记录进行更新。不用的、过期的、重复的记录要删除,将各类数据发布到网站上。網站提供企业的招聘信息,供学生浏览,提供企业信息,让学生主动联系企业,供需双方有一个交流的通道,学生有更多的选择,更容易就业,也能够促进学生在校努力学习,多掌握一些技能,尽早适应企业的用工需求。
2 Express框架
2.1 Express服务器的创建
Node.js作为服务器端JavaScript的运行平台,将Web前端中一些思想(如事件机制等)迁移到服务端的环境中。使用模块系统进行编程,它提供了很多第三方控件供用户使用。用户可通过npm下载安装所需的第三方包,在js代码中,导入安装的包,就可以使用这个包提供的方法、属性。
2.1.1 Express服务器框架
Express服务器框架提供了服务器的侦听方法、requst请求对象、response响应对象,提供Get、Post路由服务。搭建服务器框架的流程如下:首先,导入Express包,创建Express对象。其次,创建基本的Get、Post路由,在Get、Post方法的回调函数里面,使用requst请求对象,取出前端发送给服务器的数据;使用response响应对象,将服务器处理的结果,返回给客户端。通过requst请求对象、response响应对象,实现客户端和服务器之间的通信。最后,创建Express服务器的侦听,服务器在某个端口上侦听,接收客户端的连接请求。一旦有客户端的连接请求,请求URL符合Get、Post方法的路由规则,执行Get、Post方法。通过这三步操作,一个基本的服务器框架就搭建起来了。具有与tomcat、IIS Express等服务器相同的功能。
2.1.2 Ajax跨域问题
Node.js逐渐成为网站开发的一个主流方向,原因之一是后端服务器与前端界面设计分离。前端开发人员专注HTML网页的设计,服务器开发人员专注数据库的开发、网站安全等。前后端开发分开的核心是前后端人员规划好数据接口规则。这个数据通信接口非常重要,在开发过程中,双方按照约定的规则,接收和提交数据即可。前后端分离开发有很多优点,如互不干扰、提高网站开发的效率等。
前端HTML网页发送数据给服务器,接收服务器传递回来的数据,在HTML网页上渲染。不同的开发工具,使用不同的方法。一般使用Ajax作为开发工具。前端HTML网页文件和Express服务器可能不在同一个IP地址或同一个端口上。因此,在HTML网页上,使用Ajax发送请求给服务器的时候,出现跨域问题。Ajax能够将数据提交给服务器;服务器接收到数据,进行相关的处理;处理完成后,将数据返回给客户端,在返回给客户端的时候,出现跨域现象,客户端接收不到服务器返回的数据。
出于安全考虑,从同一个IP地址的同一个端口上访问服务器的数据才是安全的。出现跨域现象,需要导入第三方的cors包,Express对象引入cors对象即可解决跨域问题。
2.1.3 Get和Post请求
Get、Post请求是Epress对象的路由方法,该方法第一个参数是路由,符合路由规则,才进入这个请求方法;第二个参数是一个回调函数,回调函数里面有两个参数,分别是request请求对象、response响应对象。Get请求可以直接从客户端获取数据,Post请求表单数据的时候,取出的数据是空值。原因是Express服务器框架只提供一个处理服务器运行的基本平台,平台尽量简洁,能不影响使用的,都从系统上予以删除。Express服务器没有表单处理的内容,需要引入第三方控件body-parser,由它处理表单数据。服务器与客户端通信的基本数据类型是JSON格式的数据,在HTML前端的Ajax代码、后端代码中,都需要使用JSON数据。因此,还需要对body-parser插件进行JSON格式的数据处理。
2.2 Router路由
Express服务器中,只是使用简单的Get、Post请求,这个路由太简单,不符合网站开发的需求。服务器必须和数据库相连,才能够发挥服务器的作用。从前面数据库的介绍中,了解到网站开发需要学生的基本信息表、学生成绩表、学生的评价表,企业的基本信息表、企业用工信息表,网站的用户信息表等。根据网站开发的基本要求,每个数据表都涉及添加、分页浏览、查询、更新、删除等基本功能。按最基本的6张数据表,每个数据表具有5个功能,共有30个功能,对应有30个路由。使用简单的Get、Post请求处理,缺点很多。需要使用Express的路由对象来处理。
Node.js是模块化处理,一个模块是一个js文件,使用 module.exports将模块的方法、属性暴露出去。另一个模块,同样是一个js文件,使用import导入前面的模块,就可以在该模块中,使用导入模块中的方法和属性。例如,在Express服务器对象所在的js文件中,使用const studentRoute = require(‘../route/student’),导入student路由;其他的路由对象的引入,使用相同的方法。在student路由文件中,const express = require(‘express’),创建一个Express框架对象;onst studentRoute = express.Router(),创建路由对象;module.exports = studentRoute,将这个路由对象暴露出去,供其他js模块使用。
通过Node.js的模块化处理,使用module.exports将这6个路由对象暴露出去。在Express的代码中,使用import引入这6个路由文件。服务器启动后,客户端通过Ajax的get或post方法访问这些路由,网站基本框架就搭建成功。
使用Express的Router方法,创建路由对象,一个数据表对应一个路由对象。首先,创建一个路由的js文件;其次,在文件中,创建路由对象,路由对象有5个基本功能,每个功能都有一个Get、Post请求,需要有10个Get、Post请求方法,对应有10个路由;第三,编写每一个路由处理方法;最后,使用 module.exports 将路由对象暴露出去,让其他的js文件使用。
图1是添加学生信息数据的路由。使用req对象的body属性,取出前端表单提交的数据,组成数组数据,作为MySql的query方法的参数。数据库操作要使用try/catch捕捉异常,调用数据库的queryFun方法,执行添加语句,data是添加数据后,返回的数据,1表示添加成功,-1表示添加失败。res响应对象的send方法,发送的是一个JSON格式的数据,数据的内容由用户自己设计,主要是给客户端一个反馈信息。
使用postman模拟前端提交数据,不用编写前端界面,简单实用,具有与前端界面相同的效果,如图2所示。使用post方法,提交表单数据。路由地址是本地服务器,端口是3000,一级路由是student,二級路由是add,对应上面的学生表的添加路由。表单数据是JSON格式。
res返回给客户端的数据,数据格式是JSON格式,第一个参数是返回代码,1表示添加成功。第二个参数是数据库添加后的反馈信息。第三个参数是提示信息。依次打开Navicat、itcast 数据库、student 数据表,可以看见数据已经被添加到数据表中。
学生数据表的浏览对应的路由,代码流程为:studentRoute.post(‘/listPage’,async function(req,res,next) {})。在这个路由方法里,通过/listPage地址,访问浏览路由,回调函数的req是请求对象,res是响应对象。首先,sql的select查询语句;其次,调用数据库的操作方法,返回一个List集合数据;再次,将集合数据返回给前端。同样,数据库操作,需要使用try/catch,进行异常处理。chrome浏览器的F1,打开开发者工具窗口,浏览的数据如图3所示。
返回的状态是200,data对象,是返回给客户端的自定义的JSON数据。第一个数据是code,第二个参数data是一个数组,数组中的元素是后端取出来的student数据表的数据。前端使用Ajax向服务器发送post强求,在回调函数里面,取出服务器返回的数据,在前端界面,通过循环方式显示。
学生数据表的更新对应的路由,代码流程为:studentRoute.post(‘/update’,async function(req,res,next) {})。通过/update地址,访问更新路由。首先,在这个路由方法里,通过req请求对象的body属性,获取前端提交的表单数据;其次,构建sql的update更新语句;再次,调用数据库的操作方法,返回一个int数据;最后,将整型数据返回给前端。同样,数据库操作,需要使用try/catch,进行异常处理。
学生数据表的删除对应的路由,代码流程为:studentRoute.post(‘/delete’,async function(req,res,next) {})。在这个路由方法里,通过/delete地址,访问浏览路由。首先,通过req对象的query属性,取出提交的参数id,构建sql的delete删除语句;其次,调用数据库的操作方法,返回一个int数据;再次,将int数据返回给前端。同样,数据库操作,需要使用try/catch,进行异常处理。
2.3 MySql数据库操作
MySql使用连接池技术,有助于减少连接到MySql服务器花费的时间。允许多个连接,默认最大连接数量是10个,可以调整连接数量。Node.js中,使用的MySql操作非常简单,支持Promise。
MySql数据库操作的第一个核心操作是调用query方法,执行所有的增查改删操作。query有几种重载方法,方法中一般需要调用三个参数。第一个参数是包含sql的语句,为了防止SQL的注入问题,使用“?”作为占位符;第二个参数是给sql语句提供的数据,如添加的数据表的字段的数据、删除某个记录的Id等。第三个参数是回调函数,在回调函数中,将query方法执行的结果,返回给调用它的方法。
MySql数据库第二个核心操作是Promise,MySql的连接是异步连接,当很多的客户端连接Express服务器的时候,通过调用MySql操作方法,获取MySql服务器中的数据。各个客户端的网络连接过程中,可能会出现各种各样的问题,不能保证所有的连接都能够正常连接到MySql数据库,连接到Express服务器。异步操作的缺点是无法确定什么时候完成指定操作,因此,使用async/await方法,将Promise的异步操作转换为同步操作,对于连接超时的客户端,要记录下来,及时断开连接,释放资源。
3 结 论
Node.js网站开发的主要内容是数据表的增删改查,只要掌握一个数据表的操作即可(其他数据表的操作基本相似),后端开发人员要熟练运用Express服务器框架,结合MySql编程技术,Promise异步处理等开发技术,实现服务器端的各类操作。前端开发人员需要熟练使用HTML的布局、CSS样式、JavaScript脚本编程,尤其是表单的验证、正则表达式的编程,掌握Ajax的调用方法,以及向服务器发送各类请求,将服务器发送回来的数据,在前端渲染显示。总之,使用Node.js框架开发的就业网站,具有开发快捷高效的优势,在网站运行过程中,能够满足日常的访问,具有一定的实用性。
参考文献:
[1] 黑马程序员.Node.js核心技术教程 [M].北京:中国铁道出版社,2017.
[2] 王伶俐,张伟国.基于Node.js+Express框架的轻应用定制平台的设计与实现 [J]. 计算机科学,2017,44(S2):596-599.
[3] 邱均平文獻计量学:第2版 [M].北京:科学出版社,2019.
[4] 闫锦彪,杨冬梅,张进.校园二手教材网络交易平台的构建方法研究 [J].现代信息科技,2021,5(2):107-110.
[5] 崔莹,刘兵.Node.js与Express技术在计算机课程教学中的应用 [J].软件导刊,2016,15(9):190-192.
[6] 徐秋榕.省级网上办事系统的需求分析 [J].福建电脑,2021,37(4):38-42.
[7] 张艳,吴晓翔.基于Node.js的前端教程网站设计与开发 [J].福建电脑,2018,34(9):37-38.
作者简介:朱克武(1968—),男,汉族,安徽寿县人,讲师,硕士,研究方向:网站项目开发、大数据分析。
3629500338218