Node.js Express博客项目实战 之 系统设置

系统设置在侧边栏的系统管理中:

在视图views的后台index.html中对应的系统设置写入跳转的路由:

<li><a href="/admin/system" target="right"><span class="icon-caret-right"></span>系统设置</a></li>

在后台路由中进行注册该路由system.js

// 系统管理
let systemRouter = require(‘./admin/system‘);
router.use(‘/system‘,systemRouter);

在视图views中新建文件夹system,加入页面index.html

 1 <!DOCTYPE html>
 2 <html lang="zh-cn">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 6 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
 7 <meta name="renderer" content="webkit">
 8 <title></title>
 9 <link rel="stylesheet" href="/public/admin/css/pintuer.css">
10 <link rel="stylesheet" href="/public/admin/css/admin.css">
11 <script src="/public/admin/js/jquery.js"></script>
12 <script src="/public/admin/js/pintuer.js"></script>
13 </head>
14 <body>
15 <div class="panel admin-panel">
16   <div class="panel-head"><strong><span class="icon-key"></span> 系统管理</strong></div>
17   <div class="body-content">
18     <form method="post" class="form-x" action="/admin/system/save" enctype="multipart/form-data">
19
20       <div class="form-group">
21         <div class="label">
22           <label for="sitename">网站标题:</label>
23         </div>
24         <div class="field">
25           <input type="text" class="input" id="mpass" value="<%= data.title %>" name="title" size="50" placeholder="请输入网站标题" data-validate="required:请输入网站标题" />
26         </div>
27       </div>
28       <div class="form-group">
29         <div class="label">
30           <label for="sitename">网站关键字:</label>
31         </div>
32         <div class="field">
33           <input type="text" class="input "  value="<%= data.keywords %>" name="keywords" size="50" placeholder="请输入网站关键字" data-validate="required:请输入网站关键字" />
34         </div>
35       </div>
36       <div class="form-group">
37         <div class="label">
38           <label for="sitename">网站的描述:</label>
39         </div>
40         <div class="field">
41           <input type="text" class="input "  value="<%= data.description %>" name="description" size="50" placeholder="请输入网站的描述" data-validate="required:请输入网站的描述" />
42         </div>
43       </div>
44
45       <div class="form-group">
46         <div class="label">
47           <label for="sitename">网站LOGO:</label>
48         </div>
49         <div class="field">
50           <input type="file" name="logo" class="input" id="">
51           <img src="<%= data.logo %>" alt="">
52           <input type="hidden" name="logo" value="<%= data.logo %>">
53         </div>
54       </div>
55
56       <div class="form-group">
57         <div class="label">
58           <label for="sitename">网站版权信息:</label>
59         </div>
60         <div class="field">
61           <input type="text" class="input " name="copyright"  value="<%= data.copyright %>" size="50" placeholder="请输入网站版权信息" data-validate="required:请输入网站版权信息" />
62
63         </div>
64       </div>
65
66       <div class="form-group">
67         <div class="label">
68           <label for="sitename">网站备案信息:</label>
69         </div>
70         <div class="field">
71           <input type="text" class="input "  value="<%= data.record %>" name="record" size="50" placeholder="请输入网站备案信息" data-validate="required:请输入网站备案信息" />
72
73         </div>
74       </div>
75
76
77       <div class="form-group">
78         <div class="label">
79           <label for="sitename">统计代码:</label>
80         </div>
81         <div class="field">
82           <textarea name="count" class="input " placeholder="请输入网站统计代码" id="" cols="30" rows="10"><%= data.count %></textarea>
83         </div>
84       </div>
85
86
87       <div class="form-group">
88         <div class="label">
89           <label></label>
90         </div>
91         <div class="field">
92           <button class="button bg-main icon-check-square-o" type="submit"> 提交</button>
93         </div>
94       </div>
95     </form>
96   </div>
97 </div>
98 </body></html>

index.html

效果如图所示:

写了一个json文件,让其路由获取其数据信息,让其显示在页面上,

该json文件为:

{
"title":"gyji博客项目",
"keywords":"web前端",
"description":"放弃很容易,但坚持一定很cool",
"copyright":"2019 gyji版权所有",
"record":"晋ICP123213131",
"count":"11111111",
"logo":"/upload//logo.png"

}

在路由中写入获取的信息,并可以对其中的内容进行修改;

let express = require("express");

let router = new express.Router();

const fs = require("fs");

// 上传图片设置

const multer = require("multer");

const upload = multer({dest:"tmp/"});

const uploads = require("../../common/uploads.js");
// 系统管理首页的路由

router.get("/",function(req,res,next){
    // 读取文件中的内容

    let fileData = fs.readFileSync(__dirname+"/../../config/webConfig.json");

    let data = JSON.parse(fileData.toString());

    // 加载页面
    res.render("admin/system/index.html",{data:data});
});

// 系统管理的更新方法

router.post("/save",upload.single("logo"),function(req,res,next){
    // 接受上传的资源
    let imgRes = req.file;
    // 接受表单提交的数据
    let {title,keywords,description,count,copyright,record,logo} = req.body;

    // 判断该用户是否修改图片
    let newlogo="";
    if (imgRes) {
        newlogo = uploads(imgRes);
    }

    // 格式化数据

    let data = {
        title:title,
        keywords:keywords,
        description:description,
        copyright:copyright,
        record:record,
        count:count,
        logo:newlogo?newlogo:logo
    }

    fs.writeFileSync(__dirname+"/../../config/webConfig.json",JSON.stringify(data));

    if (imgRes) {
        fs.unlinkSync(__dirname+"/../../"+logo);
    };

    res.send("<script>alert(‘修改成功‘);location.href=‘/admin/system‘</script>");
});

module.exports = router;

最终的效果显示:

原文地址:https://www.cnblogs.com/jiguiyan/p/11423334.html

时间: 2024-10-13 00:41:03

Node.js Express博客项目实战 之 系统设置的相关文章

Node.js Express博客项目实战 之 后台登录退出功能

登录后台 需要监听用户的访问地址,只有管理员才能登录后台 在后台的路由admin.js: // 监听用户的访问地址,只有管理员能登录后台 router.use(function(req,res,next){ // 判断url地址 // 是否可以直接进行访问 if (req.url != "/login" && req.url != "/check") { // 判断是否登录 if (req.session.YzmMessageIsAdmin &

NodeJS Express博客项目实战 之 轮播图管理

轮播图管理添加功能 后台轮播图管理的位置: 因此需在此处加一个路由的跳转: 在视图views中后台的index.html <h2><span class="icon-user"></span>系统管理</h2> <ul > <li><a href="/admin/slider" target="right"><span class="icon-ca

一款基于vue.js 和node构建个人博客项目

前言 本项目是一款个人学习的博客项目,主要是为了学习vue2 和 node.js.另外涉及到MySQL redis nginx 等技术栈知识 项目地址 预览地址 (PC或者手机) > 注意:PC端支持markdown编辑博客,但是手机端不支持编辑,仅支持查看博客内容 博客预览地址:node后台版本 预览账号 账号:test 密码:123 技术栈 前端:html.css.sass.ES6.webpack.vue-cli.vue2.vuex.vue-router.axios.element-ui 后

node.js开发博客系统前端项目搭建(一)

Express: https://github.com/petecoop/generator-express 安装node.js和npm 执行: npm install -g yo npm install -g generator-express 执行:yo 创建项目成功. 项目的目录: brew安装:MongoDb http://blog.csdn.net/moumaobuchiyu/article/details/54885306 http://www.cnblogs.com/junqili

基于node.js的博客搭建

一个博客应当具备哪些功能? 前台展示 点击下一页,可以点击分类导航. 可以点击进入到具体博文页面 下方允许评论.显示发表时间.允许留言分页. 右侧有登录注册界面. 后台管理 管理员账号:登陆后看到页面不一样,有后台页面. 允许添加新的分类.从后台添加新的文章. 编辑允许markdown写法. 评论管理. 安装模块 Express 一个简洁灵活的node.js WEB应用框架,提供一系列强大的特性帮助我们创建web应用. Mongodb 用于保存产生的数据 第三方模块和中间件: bodyParse

node+mysql简单博客项目

1.搭建开发环境 使用nodemon监听文件变化,自动重启node 使用cros-env设置环境变量,兼容mac linux 和windowns 原文地址:https://www.cnblogs.com/huanhuan55/p/12348544.html

node.js 开发博客系统

1. 安装yoman :npm install -g yo 2. 安装 generator-express :npm install -g generator-express 3. 安装 bower :npm install -g bower 前三项都是各种工具的安装,安装失败往往都是版本不兼容导致的.一般可以通过更新解决问题.

Node.js Express+Mongodb 项目实战

Node.js Express+Mongodb 项目实战 这是一个简单的商品管理系统的小项目,包含的功能还算挺全的,项目涵盖了登录.注册,图片上传以及对商品进行增.删.查.改等操作,对于新手来说是个很不错的练手项目,分享给大家. GitHub源码:https://github.com/oceanMin/cms 项目前准备 安装node.js 安装express 安装mongoDB 章节目录 快速开始 快速开始 模块 express商品管理系统介绍 框架搭建.ejs .express.static

Node.js 从零开发 web server博客项目

第1章 课程介绍 包括课程概述.核心模块.核心技术.课程安排.课程收获.讲授方式.学习前提等方面的介绍,让同学们对课程项目有一个直观的了解. 1-1 课程导读 试看第2章 nodejs 介绍 本章主要为了照顾尚未入门或者刚刚入门 nodejs 的同学,介绍 nodejs 的下载.安装和基本使用,以及 nodejs 和前端 javascript 的区别.另外,重点介绍了服务端开发和前端开发思路上的区别,为后续的开发做一个基础的铺垫. 2-1 下载和安装 2-2 nodejs和js的区别 2-3 c