Bootstrap 可视化HTML编辑器,summernote(1)

简介: Bootstrap 可视化HTML编辑器,summernote

Bootstrap 可视化HTML编辑器之summernote,用其官网上的介绍就是“Super Simple WYSIWYG editor”,不过在我看来,与bootstrap中文官网上提供的“bootstrap-wysiwyg”要更simple,更漂亮,更好用!


虽然我之前尝试过使用bootstrap-wysiwyg,可参照Bootstrap wysiwyg富文本数据如何保存到mysql,但事后诸葛亮的经验告诉我,summernote绝对是更佳的富文本编辑器,这里对其工作team点三十二个赞!!!!!


经过一天时间的探索,对summernote有所掌握,那么为了更广大前端爱好者提供便利,我将费劲一番心血来介绍一下summernote,超级福利啊。


##一、官方API和源码下载

工欲善其事必先利其器,首先把summernote的源码拿到以及对应官方API告诉大家是首个任务!


官网(demo和api)

github源码下载,注意下载开发版


##二、效果图

效果图1

image.png


效果图2

image.png


效果图3

image.png


##三、开讲内容

大的方向为以下三个内容:


summernote的页面布局(资源引入、初始参数)

summernote从本地上传图片方法(前端onImageUpload方法、后端springMVC文件保存)

summernote所在form表单的数据提交

###①、summernote的页面布局

<!DOCTYPE html>
<html lang="zh-CN">
<%@ include file="/components/common/taglib.jsp"%>
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
  <title>summernote - bs3fa4</title>
  <!-- include jquery -->
<script type="text/javascript" src="${ctx}/components/jquery/jquery.js"></script>
  <!-- include libs stylesheets -->
 <link type="text/css" rel="stylesheet" href="${ctx}/components/bootstrap/css/bootstrap.css" />
<script type="text/javascript" src="${ctx}/components/bootstrap/js/bootstrap.min.js"></script>
  <!-- include summernote -->
<link type="text/css" rel="stylesheet" href="${ctx}/components/summernote/summernote.css" />
<script type="text/javascript" src="${ctx}/components/summernote/summernote.js"></script>
<script type="text/javascript" src="${ctx}/components/summernote/lang/summernote-zh-CN.js"></script>
  <script type="text/javascript">
    $('div.summernote').each(function() {
    var $this = $(this);
    var placeholder = $this.attr("placeholder") || '';
    var url = $this.attr("action") || '';
    $this.summernote({
      lang : 'zh-CN',
      placeholder : placeholder,
      minHeight : 300,
      dialogsFade : true,// Add fade effect on dialogs
      dialogsInBody : true,// Dialogs can be placed in body, not in
      // summernote.
      disableDragAndDrop : false,// default false You can disable drag
      // and drop
      callbacks : {
        onImageUpload : function(files) {
          var $files = $(files);
          $files.each(function() {
            var file = this;
            var data = new FormData();
            data.append("file", file);
            $.ajax({
              data : data,
              type : "POST",
              url : url,
              cache : false,
              contentType : false,
              processData : false,
              success : function(response) {
                var json = YUNM.jsonEval(response);
                YUNM.debug(json);
                YUNM.ajaxDone(json);
                if (json[YUNM.keys.statusCode] == YUNM.statusCode.ok) {
                  // 文件不为空
                  if (json[YUNM.keys.result]) {
                    var imageUrl = json[YUNM.keys.result].completeSavePath;
                    $this.summernote('insertImage', imageUrl, function($image) {
                    });
                  }
                }
              },
              error : YUNM.ajaxError
            });
          });
        }
      }
    });
  });
  </script>
</head>
<body>
<div class="container">
  <form class="form-horizontal required-validate" action="#" enctype="multipart/form-data" method="post" οnsubmit="return iframeCallback(this, pageAjaxDone)">
  <div class="form-group">
    <label for="" class="col-md-2 control-label">项目封面</label>
    <div class="col-md-8 tl th">
      <input type="file" name="image" class="projectfile" value="${deal.image}"/>
      <p class="help-block">支持jpg、jpeg、png、gif格式,大小不超过2.0M</p>
    </div>
  </div>
    <div class="form-group">
    <label for="" class="col-md-2 control-label">项目详情</label>
    <div class="col-md-8">
      <div class="summernote" name="description" placeholder="请对项目进行详细的描述,使更多的人了解你的" action="${ctx}/file">${deal.description}</div>
    </div>
  </div>
  </form>
</div>
</body>
</html>
相关文章
|
3月前
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
155 1
|
4月前
|
移动开发 前端开发 JavaScript
基于 HTML5 和 Canvas 开发的在线图片编辑器
基于 HTML5 和 Canvas 开发的在线图片编辑器
103 0
|
2月前
|
数据可视化 前端开发
Twaver-HTML5基础学习(39)鹰眼可视化视图组件(OverView)
本文介绍了如何在Twaver-HTML5中使用鹰眼(Overview)可视化视图组件,它作为Network的缩略图,允许用户通过缩略图导航Network,支持单击、双击和框选操作来控制Network视图。
40 5
Twaver-HTML5基础学习(39)鹰眼可视化视图组件(OverView)
|
5月前
|
存储 移动开发 编解码
基于HTML5开发的Markdown在线编辑器
Markdown是一种轻量级标记语言,以其简洁易读的格式而备受程序员和作者们的青睐。随着互联网的发展,越来越多的在线Markdown编辑器应运而生,为用户提供了更加便捷、高效的写作和编辑环境。本文将探讨基于HTML5开发的Markdown在线编辑器的设计原理、功能特点以及技术优势。
122 4
|
2月前
|
数据可视化 前端开发 容器
Twaver-HTML5基础学习(41)列表可视化视图组件(List)
本文介绍了如何在Twaver-HTML5中使用列表可视化视图组件(List),展示了如何创建列表、设置列表属性(如行高、间隔颜色等)、实现数据绑定和排序,以及如何通过React代码示例进行操作。
34 2
Twaver-HTML5基础学习(41)列表可视化视图组件(List)
|
2月前
|
数据可视化 前端开发
Twaver-HTML5基础学习(25)网元可视化视图组件(Network)
这篇文章介绍了Twaver-HTML5中的网元可视化视图组件(Network)的层次结构,包括view、rootCanvas和topCanvas的使用方法和示例。
39 6
|
2月前
|
移动开发 数据可视化 HTML5
Twaver-HTML5基础学习(40)表格可视化视图组件(Table)
本文介绍了如何在Twaver-HTML5中使用表格可视化视图组件(Table),包括创建表格、定义列对象、实现数据绑定和排序,以及处理表格事件和获取表格数据的方法。
40 1
|
1月前
|
数据可视化 小程序 JavaScript
DIYGW可视化快速生成VUE3静态html页面
DIYGW可视化快速生成VUE3静态html页面
40 0
|
1月前
|
小程序 数据可视化 开发工具
HTML我帮您打造拖拽可视化的WEUI小程序工具
HTML我帮您打造拖拽可视化的WEUI小程序工具
29 0
|
3月前
|
搜索推荐 前端开发 数据可视化
基于Python协同过滤的旅游景点推荐系统,采用Django框架,MySQL数据存储,Bootstrap前端,echarts可视化实现
本文介绍了一个基于Python协同过滤算法的旅游景点推荐系统,该系统采用Django框架、MySQL数据库、Bootstrap前端和echarts数据可视化技术,旨在为用户提供个性化的旅游推荐服务,提升用户体验和旅游市场增长。
284 9
基于Python协同过滤的旅游景点推荐系统,采用Django框架,MySQL数据存储,Bootstrap前端,echarts可视化实现