[记录十二] Vue(全家桶)+node+koa2+mysql+nginx+redis,博客全栈项目之管理员界面的编写

   日期:2020-09-05     浏览:101    评论:0    
核心提示:导语:暑假在家闲着无事,就琢磨着做一个web博客练练手,现在已经做完了,把过程分享出来给大家看看,分享一下学习经验。这是第十二篇,前面已经把客户端的界面和功能都做完了,现在写一下管理员界面。微信搜索 【web小馆】,回复 ”全栈博客项目“,即可获取 项目源码和后续的实战文章教程。本文的目录一,管理员界面1,模板介绍2,分析代码,编写接口(1)markdown(2)如何使用(3)编写上传接口(4)获取文章列表接口一,管理员界面1,模板介绍这里我们考虑到开发的速度,我就再网上找了一个开源的后台管

导语:
暑假在家闲着无事,就琢磨着做一个web博客练练手,现在已经做完了,把过程分享出来给大家看看,分享一下学习经验。这是第十二篇,前面已经把客户端的界面和功能都做完了,现在写一下管理员界面。

微信搜索 【web小馆】,回复 ”全栈博客项目“,即可获取 项目源码和后续的实战文章教程

本文的目录

  • 一,管理员界面
    • 1,模板介绍
    • 2,分析代码,编写接口
      • (1)markdown
      • (2)如何使用
      • (3)编写上传接口
    • (4)获取文章列表接口

一,管理员界面

1,模板介绍

这里我们考虑到开发的速度,我就再网上找了一个开源的后台管理员界面的模板,qadmin,这是一个功能界面都特别丰富的模板。




这里就是这个后台管理界面模板的部分截图,使用起来特别简单,使用jquery就可以了。至于这个模板怎么下载,大家自行在百度搜索“qadmin”就行了,开源下载。

2,分析代码,编写接口

(1)markdown

这里主要是有一个创建文章的markdown编辑器,我就上网搜索下载了一个markdown的编辑器。这个就是它的官网,下载到电脑,接下来教你怎么使用。https://github.com/pandao/editor.md


Editor.md 是一款开源的、可嵌入的 Markdown 在线编辑器(组件),基于 CodeMirror、jQuery 和 Marked 构建。

主要特性

  • 支持通用 Markdown / CommonMark 和 GFM (GitHub Flavored Markdown)

  • 风格的语法,也可变身为代码编辑器;

  • 支持实时预览、图片(跨域)上传、预格式文本/代码/表格插入、代码折叠、跳转到行、搜索替换、只读模式、自定义样式主题和多语言语法高亮等功能;

  • 支持 ToC(Table of Contents)、Emoji表情、Task lists、@链接等 Markdown 扩展语法; 支持TeX 科学公式(基于 KaTeX)、流程图 Flowchart 和 时序图 Sequence Diagram;

  • 支持识别和解析 HTML标签,并且支持自定义过滤标签及属性解析,具有可靠的安全性和几乎无限的扩展性;

  • 支持 AMD / CMD 模块化加载(支持 Require.js & Sea.js),并且支持自定义扩展插件;

  • 兼容主流的浏览器(IE8+)和 Zepto.js,且支持 iPad 等平板设备;

(2)如何使用

下载后,把文件放在static/markdown中,然后引用即可(注意html里面路径要写对)

这个是编辑页面的编辑栏。

<link rel="stylesheet" href="editor.md/css/editormd.min.css" />
<div id="editor">
    <!-- Tips: Editor.md can auto append a `<textarea>` tag -->
    <textarea style="display:none;">### Hello Editor.md !</textarea>
</div>
<script src="jquery.min.js"></script>
<script src="../static/markdown/editor.md/editormd.min.js"></script>
<script type="text/javascript">
    $(function() {
        var editor = editormd("editor", {
            // width: "100%",
            // height: "100%",
            // markdown: "xxxx", // dynamic set Markdown text
            path : "../static/markdown/editor.md/lib/"  // Autoload modules mode, codemirror, marked... dependents libs path
        });
    });
</script>

这是把提交的文件显示出来

<link rel="stylesheet" href="editormd/css/editormd.preview.css" />
<div id="test-markdown-view">
    <!-- Server-side output Markdown text -->
    <textarea style="display:none;">### Hello world!</textarea>             
</div>
<script src="jquery.min.js"></script>
<script src="../static/markdown/editormd/editormd.js"></script>
<script src="../static/markdown/editormd/lib/marked.min.js"></script>
<script src="../static/markdown/editormd/lib/prettify.min.js"></script>
<script type="text/javascript">
    $(function() {
	    var testView = editormd.markdownToHTML("test-markdown-view", {
            // markdown : "[TOC]\n### Hello world!\n## Heading 2", // Also, you can dynamic set Markdown text
            // htmlDecode : true, // Enable / disable HTML tag encode.
            // htmlDecode : "style,script,iframe", // Note: If enabled, you should filter some dangerous HTML tags for website security.
        });
    });
</script>  

(3)编写上传接口

这个模板里面基本都已经把代码写好了,你只需要把一些接口地址给改一下就行了

//文章缩略图左侧显示图片
upload.render({
    elem: '#pic' //绑定元素
    , url: "/api/admin/updata/pic" //上传接口 
    , done: function (res) {
        //上传完毕回调
        if (res.errno == 0) {
            $("#pic_url").val(res.data.avatar_url);
            $(".pic_url").attr("src", res.data.avatar_url);
        } else {
            layer.msg(res.info, function () { })
        }
    }, error: function () {
        layer.msg("上传异常");
    }
});
//文章内容提交
form.on('submit(submit)', function (data) {
    let config = {
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    }
    
    $.post(data.form.action, data.field, config, function (e) {
          layer.closeAll('loading');
        if (e.errno == 0) {
             layer.msg(e.msg, { icon: 1, shade: 0.5, });
             setTimeout(function () { window.location.href = "/qadmin-1.2/article_index.html"; }, 1000);
        } else {
            layer.msg(e.msg, { icon: 2, shade: 0.5, time: 2000, shadeClose: true });
        }
    })
    return false;
});

(4)获取文章列表接口

ajax获取之前写的文章列表接口,然后循环dom操作,写到页面上。

$(function() {
    $.ajax({
       url: '/api/article/list',
       type: 'GET',
       success: function (arg) {
           // console.log(arg.data[0]);
           for (let i in arg.data) {
               $(".layui-table tbody").append(`<tr class="id71"> <td>`+arg.data[i].id+`</td> <td><img src="`+arg.data[i].pic+`" height="50px"/></td> <td>17</td> <td>`+arg.data[i].title+`</td> <td>`+arg.data[i].hits+`</td> <td><input data-id="71" lay-filter="state" type="checkbox" checked lay-text="开启|关闭" lay-skin="switch"></td> <td><input data-id="71" lay-filter="top" type="checkbox" checked lay-text="开启|关闭" lay-skin="switch"></td> <td><input data-id="71" lay-filter="experiment" type="checkbox" lay-text="开启|关闭" lay-skin="switch"></td> <td><input data-id="71" lay-filter="works" type="checkbox" lay-text="开启|关闭" lay-skin="switch"></td> <td>`+createTime(arg.data[i].createtime)+`</td> <td><a href="/qadmin-1.2/article_updata.html?id=`+arg.data[i].id+`">修改</a> | <a class="del" data-id=".id71" href="/admin/article/del/id/71.html">删除</a></td> </tr>`);
           }  
       }
   })
});

你们的赞就是对我最大的鼓励。谢谢~

微信搜索【web小馆】,回复全栈博客项目,即可获取项目源码和后续的实战文章教程。每天用最简单朴实的语言,潜移默化的提升你的计算机基础知识和前端技术。小米粥,一个专注的web全栈工程师,我们下期再见!


 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服