这个留言板是基于express框架,和ejs模板引擎,首先需要在根目录安装express框架,然后安装ejs模块和body-parser(获取用户表单提交的数据);建立项目目录 message,然后依次建立views文件夹  (存放ejs模板文件)、public(存放静态资源css js images,使用express内置中间件static托管静态)、routers(路由文件,创建路由级中间件);

然后建立一个入口文件app.js .

// 项目入口文件
'use strict';
const express = require('express');
const path = require('path');
const app = express();
const bodyParser = require('body-parser');
//引入获取表单的第三方中间件
//托管静态资源
app.use(express.static(path.join(__dirname, 'public'))); //将public的资源全部托管 // 使用bodyparser中间件
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
//实现跟路由;可以通过message二级路由来实现
const message = require('./routers/message');
app.use('/', message);
//之后的显示全部在二级路由message中处理
app.listen(3000, () => {
console.log('3000 is on!');
});

  再在routers文件夹中建立一个message路由如下

const express = require('express');
const router = express.Router();
const path = require('path');
const fs = require('fs');
const app = express();
// 实现载入页面的路由;需要载入的页面中含有静态资源和用户的留言 router.get('/', (req, res) => {
// 显示用户的留言
//读取数据
let arr = [];
// 渲染ejs页面
if (fs.existsSync('msg.json')) { //判断是否存在这个文件 ,如果存在就直接读取,如果不存在就写入
let str = fs.readFileSync('msg.json', 'utf8');
arr = JSON.parse(str);
}
res.render('index.ejs', { data: arr }, (err, html) => {
if (err) throw err;
console.log(html);
res.send(html);
});
});
// 处理用户的提交留言
router.post('/publish', (req, res) => {
let msg = req.body; //提取用户提交的数据
msg.time = new Date().toLocaleString();
let arr = [];
// 保存用户的留言
if (fs.existsSync('msg.json')) {
// 如果msg.json存在文件就先读取文件再写入
let str = fs.readFileSync('msg.json', 'utf8');
arr = JSON.parse(str);
}
arr.push(msg);
// 将数据写入msg.json中
fs.writeFile('msg.json', JSON.stringify(arr), (err) => {
if (err) throw err;
res.send('<p>发布成功<a href="/">返回</a></p>');
});
});
module.exports = router;

在views文件夹中放ejs模板文件index.ejs,代码如下;

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<link rel="stylesheet" href="style/base.css" type="text/css" />
<link rel="stylesheet" href="style/global.css" type="text/css" />
<title>LD Studio 留言板---很靠谱的留言板</title>
</head> <body>
<div class="wrapper">
<!-- 公共头部 -->
<div class="header">
<h1><a href="">LD Stuido留言板</a></h1>
<h2>很靠谱的留言板</h2>
<img src="data:images/hanoi.jpg" alt="" />
<ul>
<li><a href="/">首页</a></li>
<li><a href="/">关于</a></li>
</ul>
</div> <div class="main">
<div class="content">
<% for (var i = 0; i < data.length; i++) { %>
<div class="msg">
<h2>
<%= data[i].title %>
</h2>
<p>发表于
<a href="">
<%= data[i].time %>
</a> 由
<a href="">
<%= data[i].author %>
</a>
</p>
<p>
<%= data[i].content %>
</p>
</div>
<% } %> <div class="msg_form">
<h2>发表留言</h2>
<form action="/publish" method="post">
<ul>
<li>
<label for="">标题:</label>
</li>
<li>
<input type="text" name="title" class="txt" />
</li>
<li>
<label for="">作者:</label>
</li>
<li>
<input type="text" name="author" class="txt" />
</li>
<li>
<label for="">内容:</label>
</li>
<li>
<textarea name="content" id="" cols="70" rows="5"></textarea>
</li>
<li>
<input type="submit" value="提 交" class="btn" />
</li>
</ul>
</form>
</div>
</div> <div class="sidebar">
<h2>最新留言</h2>
<ul>
<li><a href="">LAMP架构</a></li>
<li><a href="">JavaScript程序设计</a></li>
<li><a href="">CSS样式</a></li>
<li><a href="">XTHML结构</a></li>
</ul>
</div>
</div>
<div style="clear:both;"></div>
<!-- 公共底部 -->
<div class="footer">
<p><a href="">LD Studio</a> 2009-2012 版权所有</p>
</div>
</div>
</body> </html>

  

最后启动app.js

留言板实现完成!

基于express框架的留言板实现步骤的更多相关文章

  1. 基于express框架的应用程序骨架生成器介绍

    作者:zhanhailiang 日期:2014-11-09 本文将介绍怎样使用express-generator工具高速生成基于express框架的应用程序骨架: 1. 安装express-gener ...

  2. 【Node.js】一、搭建基于Express框架运行环境+更换HTML视图引擎

      1)安装express generator生成器 这个express generator生成器类似于vue-cli脚手架工具,用来创建一个后端项目,首先我们要对生成器进行全局安装,在cmd中输入下 ...

  3. Node.js基于Express框架搭建一个简单的注册登录Web功能

    这个小应用使用到了node.js  bootstrap  express  以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...

  4. 【Node.js】二、基于Express框架 + 连接MongoDB + 写后端接口

    在上节,我们讲了如何搭建express环境,现在我们说说如何通过node.js写服务接口给前端调用 1. 首先通过MongoDB建好数据库与表格 例如,我的数据库名字为db_demo,数据库表格为go ...

  5. 基于express框架的Token实现方案

    什么是Token? 在计算机身份认证中是令牌(临时)的意思,在词法分析中是标记的意思.一般我们所说的的token大多是指用于身份验证的token Token的特点 随机性 不可预测性 时效性 无状态. ...

  6. 搭建基于Express框架运行环境

    安装express generator生成器 通过生成器自动创建项目 配置分析 一.安装 cnpm i -g express-generator express --version // 查看版本 e ...

  7. 解决前端向后端请求静态资源的问题(基于express框架)

    请求js,css,image资源: 前端 <script src='后端url/assets/js/xxx.js'>,<link href='后端url/assets/css/xxx ...

  8. NODE 基于express 框架和mongoDB的cookie和session认证 和图片的上传和删除

    源码地址 https://gitee.com/zyqwasd/mongdbSession 本项目的mongodb是本地的mongodb 开启方法可以百度一下 端口是默认的27017 页面效果 1. 注 ...

  9. Node.js下基于Express + Socket.io 搭建一个基本的在线聊天室

    一.聊天室简单介绍 采用nodeJS设计,基于express框架,使用WebSocket编程之 socket.io机制.聊天室增加了 注册登录模块 ,并将用户个人信息和聊天记录存入数据库. 数据库采用 ...

随机推荐

  1. HarmonyOS小白入门设备开发的“芯”路历程

    HarmonyOS Connect设备开发,相信不少刚入门的开发者都被这些问题所困扰,面对五花八门的开发板不知道该怎么选取?芯片.模组.开发板傻傻分不清?如何使用代码控制开发板? 本期,我们将一一为你 ...

  2. laravel报错 : laravel Please provide a valid cache path

    这是因为laravel的缓存路径没有找到 laravel缓存文件路径是在 config/cache.php中设置,默认存在storage文件夹中 'file' => [ 'driver' =&g ...

  3. JavaScript的事件循环机制浅析

    前言 JavaScript是一门单线程的弱类型语言,但是我们在开发中,经常会遇到一些需要异步或者等待的处理操作. 类似ajax,亦或者ES6中新增的promise操作用于处理一些回调函数等. 概念 在 ...

  4. 做一个能对标阿里云的前端APM工具(上)

    APM 全称是 Application Performance Monitor,即性能监控 这篇文章有三个前提: 从产品形态上看这肯定不是一个能够媲美阿里产品的竞品,所以抱歉我碰瓷了.你可以把这里的阿 ...

  5. buffer 和 cache (转)

    Cache是把最常用的工具放在手边, Buffer是你家的垃圾桶,你平时的垃圾先扔在垃圾桶里,等垃圾桶满了再扔垃圾. Cache的存在原因是对资源调用的空间局部性,你现在在看一本数学书,那么极有可能你 ...

  6. linux mac 命令行 远程连接ssh提示IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY解决

    ➜ ~ ssh adleytales@192.168.1.10 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNIN ...

  7. 关于IIS应用程序池的默认参数设置解决

    关于IIS应用程序池的默认参数设置,一般如下设置以满足IIS站点的需要. 1.关于IIS站点的启动模式,以及处理请求的管道模式设置. 2.回收机制设置, A)若IIS站点程序中存在单例模式访问DB数据 ...

  8. STM32控制永磁同步电机 | FOC电机控制算法概述

    1. FOC基本概念 参考:https://www.sohu.com/a/432103720_120929980 FOC(field-oriented control)为磁场导向控制,又称为矢量控制( ...

  9. VT 入门番外篇——初识 VT

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...

  10. espnet中的transformer和LSTM语言模型对比实验

    摘要:本文以aishell为例,通过对比实验为大家介绍transformer和LSTM语言模型. 本文分享自华为云社区<espnet中的transformer和LSTM语言模型对比---以ais ...