项目包含:

1)、Node.js的Express框架

2)、Angular、bootstrap、JQuery.

3)、MySQL数据库

设计数据存储结构:

数据库名称:blog

表名:annoymous

字段:

name --- char

time --- datetime

content --- text

sec_id --- int32

新建Express工程

更改APP.js中的view engine为html

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'html');

后端接口设计:

1、/data/newMessage

请求格式:{name:'xxx',content:'xxx'},name为用户昵称,content为留言内容.

作用:将对应留言存储下来

返回:{flag:true/false}

2、/data/Message

请求格式:{page:int}

作用:返回对应页数处的留言

返回:[{name:'xxx',time:'xxx',content:'xxx'},{name:'xxx',time:'xxx',content:'xxx'},{name:'xxx',time:'xxx',content:'xxx'}](数组)

搭建后端接口:

建立新的路由文件来相应数据post请求(实际上user.js就够,在这里新建一个是用来展示node.js express如何添加新的路由文件)

app.js中注册这个文件

var dataResponser = require('./routes/Datas/index');
app.use('/data', dataResponser);

安装node.js的mysql模块

进入项目目录

SHIFT+右键->打开power shell

输入 npm install mysql --save

 安装完成后引入


var mysql=require('mysql');

配置连接信息:

var connection = mysql.createConnection({host     : 'localhost',user     : ,password : ,database : 'blog'
});
connection.connect();

相应路由请求、页面,前端JS文件如下

var express = require('express');
var router = express.Router();
var mysql=require('mysql');
var connection = mysql.createConnection({host     : 'localhost',user     : 'root',password : '密码',database : 'blog'
});
connection.connect();
router.post('/asd', function(req, res, next) {console.log(req.body);console.log("get post request");res.send(req.body);
});router.post('/newMessage', function(req, res, next) {data = req.body;var date = new Date();strYear = (date.getYear()+1900).toString();strMonth = (date.getMonth()+1).toString();strdate = date.getDate().toString();strHour = date.getHours().toString();strMinute = date.getMinutes().toString();date=strYear+"-"+strMonth+"-"+strdate+" "+strHour+":"+strMinute;sql+=datevar sql = "INSERT into anonymous(name,time,content) value(\"";sql+=data.name;sql+="\",\"";sql+=date;sql+="\",\"";sql+=data.content;sql+="\")";console.log("Now time: "+date);console.log("Run SQL: "+sql);connection.query(sql,function (err,result) {res.send({flag:true});});
});
router.post('/Message', function(req, res, next) {var sql = "select name,time,content from anonymous order by sec_id  desc limit 3";connection.query(sql,function (err,result) {console.log(result);res.send({data:result});});
});module.exports = router;
var app=angular.module('DeskTop-main',[]);
app.controller('ctrl',function ($scope,$http,$window) {$http.post('/data/Message',{page:'1'}).then(function (respond) {msg = respond.data.data;console.log(msg);$scope.messages=msg;},function () {});$scope.submit= function(){if($scope.input!=undefined)json = {name:"匿名用户",content:$scope.input};elsealert("内容为空");$http.post('/data/newMessage',json).then(function (respond) {$window.location.reload();},function () {alert("failed");});}
})
<!DOCTYPE html>
<html>
<head><title>匿名留言板</title><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="css/lib/bootstrap.min.css" rel="external nofollow" ><script src="/js/lib/jquery-3.3.1.min.js"></script><script src="/js/lib/bootstrap.min.js"></script><link rel="stylesheet" href="/css/lib/bootstrap.min.css"><script src="/js/lib/angular.min.js"></script><script src="/js/Desktop/Controller/DeskTop-main.js"></script><link rel="stylesheet" href="css/style.css" rel="external nofollow" ><link rel="stylesheet" href="css/Desktop/index.css" rel="external nofollow" >
</head>
<body class=" container" ng-app="DeskTop-main" ng-controller="ctrl"><div class="m-auto title text-center">留言板</div><div class="main m-auto"><div class="m-auto Messages" ng-repeat="v in messages"><div class="name text-center">{{v.name}}&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp{{v.time}}</div><div class="content text-center">{{v.content}}</div></div><textarea class="m-auto input" ng-model="input"></textarea><div class="m-auto submit text-center" ng-click="submit()">提交</div><div class="m-auto information">2018-09-12 author:coding_jiang@outlook.com</div></div>
</body>
</html>

.container{background-color: black;
}
.main{height:1200px;width: 600px;}
.title{display: block;font-size: 48px;width: 500px;color: black;background-color: white;border-bottom-width: 5px;border-bottom-color: black;border-bottom-style: solid;
}
.input {display: block;height: 120px;width: 500px;
}
.submit{display: block;margin-top: 5px;display: block;height: 50px;font-size: 28px;width: 500px;background-color: white;color:black;border-top-width: 5px;border-top-color: black;border-top-style: solid;transition: 1s;
}
.submit:hover{display: block;margin-top: 100px;display: block;height: 50px;font-size: 28px;width: 500px;background-color: black;color:white;border-width: 5px;border-color: white;border-style: solid;cursor: pointer;transition: 1s;
}
.Messages{height:200px;width:500px;background-color: white;border-bottom-width: 5px;border-bottom-color: black;border-bottom-style: solid;
}
.name{float: left;height:30px;width:500px;font-size: 20px;border-bottom-width: 5px;border-bottom-color: black;border-bottom-style: solid;
}
.content{font-size: 20px;float: left;width:400px;display: inline-block;}
body {padding: 50px;font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
}a {color: #00B7FF;
}
.information{height: 25px;text-align: center;font-size: 15px;color: white;
}

访客留言簿/日志——允许人们添加评论或者日记,可以设置开启/关闭评论,并且可以记录下每一条目的时间。也可以做成喊话器。相关推荐

  1. 网站访客 简易日志记录

    摘要 header 查看header 模拟header php中的使用 IP接口 接口介绍 PHP访问接口并解析 简易方式 略繁方式 解析JSON数据 记录器 操作系统信息 获取浏览器信息 核心 最终 ...

  2. 基于博客系统的访客日志记录

    当我们做的一些应用需要记录一些接口被访问时用户的信息时,我们就需要用到一些记录请求的技术,并记录日志到数据库.本文章使用的方法:注解+AOP 原理:事先在数据库中建立一个记录访客日志的一张表.先自定义 ...

  3. 【文本分析】基于粤港澳大湾区博物馆访客评价的文本分析

    此文是2021年初在深圳大学文化产业研究院黄老师的指导下,与吴同学合作完成的,且于2021年4月发表于<文化深圳>杂志第一期. 文章目录 1 背景 2 研究思路 3 数据来源 4 数据基本 ...

  4. SSM+天山产业园访客与疫情防控系统 毕业设计-附源码191123

    摘  要 如今计算机行业的发展极为快速,搭载于计算机软件运行的数据库管理系统在各行各业得到了广泛的运用,其在数据管理方面具有的准确性和高效性为大中小企业的日常运营提供了巨大的帮助.自从2020年新冠疫 ...

  5. Microsoft Teams中的访客(三)--访客的管控

    相信最近很多企业Teams用起来以后,除了对自己内部人员的管控和监察,也避免不了要对访客进行一些类似的监管. 这里介绍4个方法: 审核日志 Access Review Secure Communica ...

  6. 简单HQL练习-统计店铺访客数

    题目: 1.每个店铺的UV(访客数) 2.每个店铺访问top3的信息(店铺名称,访客id,访问次数) 输出结果: a 4 b 4 c 3输出结果: a u5 1 a u1 2 a u2 3 b u4 ...

  7. 多说最近访客通用代码使用方法

    添加[最近访客],请在页面中添加如下代码: <ul class="ds-recent-visitors"></ul> <!--多说js加载开始,一个页 ...

  8. 巧妙利用Chrome访客模式实现多用户登录

    首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的.教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈-我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转 ...

  9. 安卓访客模式_Android 5.0利用访客模式设置双桌面教程

    小编一直都在疑惑,为何Android系统不能够像电脑一样设置一个不同的桌面,以免别人在玩自己手机的时候把自己的系统弄得乱七八糟.这么方便的功能为何没有被考虑在内,难道是工程师们都忘记了?事实其实并不是 ...

最新文章

  1. 从我开始学单片机到完成一个智能小车的制作我都需要掌握哪些知识?
  2. VMware大会宋家瑜言虚拟化2015年方至巅峰
  3. 项目中用到的BAPI合集
  4. php ci nginx 伪静态rewrite配置方法
  5. 全网最详细SpringBatch读(Reader)跨多行文件讲解
  6. 百老汇原版音乐剧《摇滚学校》2月开启中国巡演
  7. 高等数学下-赵立军-北京大学出版社-题解-练习8.4
  8. 前端学习(582):实现观看和调试dom节点
  9. java filter教程_Java Web Filter 过滤器学习教程(推荐)
  10. 2019年Q4中国云市场报告:阿里腾讯百度位居前三
  11. 权限系统(第一次测试)
  12. java代码如何降低重复率_JAVA 如何实现大文本去除重复行
  13. 太完整了!java编程思想电子书下载
  14. 2020年9月程序员工资统计,平均14469元
  15. ios逆向工具theos tweak make编译错误集合
  16. python 期货现货差价监测_期货现货价差小工具——天勤量化(TqSdk)
  17. 洛谷P3647 [APIO2014] 连珠线 题解
  18. MYSQL数据库备份导出
  19. JAVA基础:面向对象的例外处理
  20. 分享互联网宣传推广的操作要点

热门文章

  1. sqlplus system/password@orcl
  2. SpringBoot整合Dubbo报错: java.lang.ClassCastException
  3. 函数返回vector类型
  4. 一文掌握vscode远程gdb调试
  5. js 余数 取_JavaScript_js取整数、取余数的方法,1.丢弃小数部分,保留整数部分 - phpStudy...
  6. Kubespray v2.21.0 离线部署 Kubernetes v1.25.6 集群
  7. 分享几个开源的android项目的源码,基本上用androidstudio都可以编译成功
  8. 面向对象编程-贪吃蛇小游戏
  9. 网摘_技能_IT_后端_存储_简单卷、跨区卷、带区卷、镜像卷和 RAID-5 卷 区别
  10. “十四五”数字经济发展规划发布,百度超级链持续深耕产业区块链