• 【VUE项目实战】55、商品添加功能(五)-商品内容模块


    接上篇《54、商品添加功能(四)-商品图片上传模块
    上一篇我们完成了商品图片上传模块的开发,本篇我们来完成商品内容编辑模块的开发。

    一、要实现的效果

    我们要实现在商品内容页签部分嵌入一个富文本编辑框,可以让用户在编辑框中编辑大段带格式的文字:

    二、下载和引入富文本编辑器依赖

    我们本次要使用的富文本编辑框组件,是名为“vue-quill-editor”的依赖,我们首先需要打开之前一直在使用的VUE UI可视化工具界面(打开cmd命令提示符窗口,输入“vue ui”指令即可打开图形化工具):

    找到“依赖”菜单,然后点击“安装依赖”:

    在搜索框中输入“vue-quill-editor”进行依赖的搜索,选择第一个,点击下面的安装来安装此插件:

    安装完成后,我们在依赖列表中就可以看到这个依赖了。然后我们点击查看详情在Github该项目的README.md内容,查看引入方式(github打不开的,可以查看https://www.npmjs.com/package/vue-quill-editor官方文档):


    可以看到上面有两种引用方式,其中一种是“mount with global”即全局引用,一种是“mount with component”即某个页面的私有子组件(局部引用)。我们这里使用第一种全局挂载的形式,来引入“vue-quill-editor”依赖。我们在项目入口文件main.js中引入富文本编辑器的依赖:

    1. import Vue from 'vue'
    2. import App from './App.vue'
    3. import router from './router'
    4. import './plugins/element.js'
    5. //导入全局样式表
    6. import './assets/css/global.css'
    7. import axios from 'axios'
    8. import TreeTable from 'vue-table-with-tree-grid'
    9. //导入【富文本编辑器】
    10. import VueQuillEditor from 'vue-quill-editor'
    11. //导入【富文本编辑器】对应的样式
    12. import 'quill/dist/quill.core.css'
    13. import 'quill/dist/quill.snow.css'
    14. import 'quill/dist/quill.bubble.css'
    15. axios.defaults.baseURL = 'http://127.0.0.1:8888/api/private/v1/' //定义根路径
    16. //为axios添加拦截器
    17. axios.interceptors.request.use(config =>{
    18.   console.log(config);
    19.   config.headers.Authorization = window.sessionStorage.getItem('token');
    20.   return config;//最后必须返回config
    21. })
    22. Vue.prototype.$http = axios //在原型链上给$http赋值为axios对象
    23. //https://lianghj.top:8888/api/private/v1/
    24. //http://127.0.0.1:8888/api/private/v1/
    25. Vue.config.productionTip = false
    26. Vue.component('tree-table',TreeTable);
    27. //将【富文本编辑器】注册为全局可用的组件
    28. Vue.use(VueQuillEditor)
    29. Vue.filter('dateFormat',function(originVal){
    30.     const dt = new Date(originVal);
    31.     const y =  dt.getFullYear();
    32.     const m = (dt.getMonth()+1+'').padStart(2,'0');
    33.     const d = (dt.getDate()+'').padStart(2,'0');
    34.     const hh = (dt.getHours()+'').padStart(2,'0');
    35.     const mm = (dt.getMinutes()+'').padStart(2,'0');
    36.     const ss = (dt.getSeconds()+'').padStart(2,'0');
    37.     return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
    38. });
    39.  
    40. new Vue({
    41.   router,
    42.   render: h => h(App)
    43. }).$mount('#app')

    三、使用富文本编辑器

    通过查看“vue-quill-editor”的官方文档可以了解到,其用法也有两种,一种是“SSR”,一种是“SPA”。
    其中SSR(Server Side Render)即 服务端渲染。一般也称为多页面应用(Mulpile Page Application),简称 MPA。
    而SPA(Single Page Application)即单页面应用。一般也称为客户端渲染(Client Side Render),简称CSR。SPA所需的资源,如HTML、CSS和JS 等,会在一次请求中就加载完成。
    我们的这个项目是前后端分离的,所有的前端页面要素都是前端加载的,不是后端服务器渲染的,所以是SPA应用,所以我们需要选择“SSR”的使用方式。

    我们回到商品添加组件Add.vue页面,在“商品内容”区域,将富文本编辑器代码编写在里面:

    1. <el-tab-pane label="商品内容" name="5">
    2.     <!-- 富文本编辑器组件 -->
    3.     <quill-editor v-model="addForm.goods_introduce"></quill-editor>
    4. </el-tab-pane>

    其中的“goods_introduce”字段,是我们参照之前API往后台提交的商品内容字段,我们把该字段定义在data区域的addForm表单对象中,

    1. //添加商品的表单数据对象
    2. addForm: {
    3.     goods_name:'',
    4.     goods_price: 0,
    5.     goods_weight: 0,
    6.     goods_number: 0,
    7.     //商品所属的分类数组
    8.     goods_cat: [],
    9.     //图片的数组
    10.     pics: [],
    11.     //商品详情描述
    12.     goods_introduce: ""
    13. },

    然后我们刷新页面,就可以看到富文本编辑框了:

    我们可以看到编辑框的高度非常窄,我们需要调整一下, 在网页右击鼠标检查该组件,打开F12开发者工具,可以看到该编辑区的CSS样式名,为“ql-editor”:

    我们在自己项目中的“/css/global.css”下优化该CSS样式,为其添加一个最小高度300像素:

    1. .ql-editor{
    2.   min-height: 300px;
    3. }

    效果:
    最后,我们需要在富文本编辑框下发新增一个“添加商品”的蓝色按钮:

    我们回到商品内容Html代码部分,添加一个“el-button”:

    1. <el-tab-pane label="商品内容" name="5">
    2.     <!-- 富文本编辑器组件 -->
    3.     <quill-editor v-model="addForm.goods_introduce"></quill-editor>
    4.     <el-button type="primary" style="margin-top:15px">添加商品</el-button>
    5. </el-tab-pane>

    至此我们的商品内容编辑模块的所有功能就完成了。
    下一篇我们来完成整个商品内容的提交开发。

    参考:黑马程序员(www.itheima.com)Vue项目实战教学视频

    转载请注明出处:https://blog.csdn.net/acmman/article/details/125470397

  • 相关阅读:
    开发一坑整理:IDEA无法打开文件夹,打开就卡死,完全卸载IDEA
    多态的理解和使用
    支持JDK19虚拟线程的web框架,之四:看源码,了解quarkus如何支持虚拟线程
    golang使用beego.orm连接pg数据库出错定位过程
    北京化工大学数据结构2022/12/1作业 题解
    学习笔记-TP5框架学习笔记(杂项)
    python 元组
    Spring源码:ApplicationContextAware和BeanFactoryAware理解BeanFactory和Aware
    06-spring的beanFactoryPostProcessor的执行
    ★「C++游戏」BattleOfPhantom:大乱斗游戏升级版
  • 原文地址:https://blog.csdn.net/u013517797/article/details/125470397