当前位置: 首页 > news >正文

做电商平台网站有哪些内容/网站建设与营销经验

做电商平台网站有哪些内容,网站建设与营销经验,网站备案需要多少钱,网站站点建立1. 实现效果 最近在用React写一个博客管理系统,有一个功能是添加新文章。在新建文章的页面,我希望做到像CSDN这样,左边是编辑区(markdown格式),右边是预览区。实时更新,编辑文本的同时&#xf…

1. 实现效果

最近在用React写一个博客管理系统,有一个功能是添加新文章。在新建文章的页面,我希望做到像CSDN这样,左边是编辑区(markdown格式),右边是预览区。实时更新,编辑文本的同时,在预览区就能看到效果。

就自己动手实现了一个这样的组件,markdown实时预览编辑器

具体效果如下:

2. 实现过程

使用React实现,做成单独的一个组件。

首先HTML结构如下:

<header>基于React的markdown实时编辑器</header>
<div className="marked">{/* 编辑区 */}<div className="input-region markdownStyle"></div>{/* 预览区 */}<div className="show-region markdownStyle"></div>
</div>

稍微写一点样式,让编辑区和预览区左右布局。

定义一个hook,存储输入的内容:

const [text, setText] = useState('');

左边编辑区,让一个div可编辑,给其加上contentEditable属性,并让值为plaintext-only,表示编辑区域只能输入纯文本

<div className="input-region markdownStyle" contentEditable="plaintext-only"></div>

为什么不用textarea

div高度可自适应,可以拿到纯文本。

当左边编辑区内容改变时,将输入的纯文本存入到state,给编辑区的div加上onInput属性,通过事件对象拿到纯文本:

<divclassName="input-region markdownStyle"contentEditable="plaintext-only"onInput={e => {setText(e.target.innerText);}}
></div>

要渲染成markdown格式的内容,就需要插件来渲染,这里使用marked,代码高亮也有需求,使用highlight.js

yarn add marked highlight.js
import marked from 'marked';
import hljs from 'highlight.js';

配置markedhighlight

useEffect(() => {// 配置highlighthljs.configure({tabReplace: '',classPrefix: 'hljs-',languages: ['CSS', 'HTML', 'JavaScript', 'Python', 'TypeScript', 'Markdown'],});// 配置markedmarked.setOptions({renderer: new marked.Renderer(),highlight: code => hljs.highlightAuto(code).value,gfm: true, //默认为true。 允许 Git Hub标准的markdown.tables: true, //默认为true。 允许支持表格语法。该选项要求 gfm 为true。breaks: true, //默认为false。 允许回车换行。该选项要求 gfm 为true。});
}, []);

引入github风格的代码高亮主题,但我自己又稍作了修改:

import './github-dark.css';

在预览区,使用React的标签属性dangerouslySetInnerHTMl来显示内容:

<divclassName="show-region markdownStyle"dangerouslySetInnerHTML={{__html: marked(text).replace(/<pre>/g, "<pre id='hljs'>"),}}
></div>

调用marked将文本渲染成markdown格式的内容。后面加replace是因为,我发现渲染过后不显示代码框背景色,就在<pre>标签加上了id,然后自己写了CSS,让其显示代码框背景。

整个组件写好之后,最终的代码:

import { useState, useEffect } from 'react';
import marked from 'marked';
import hljs from 'highlight.js';
import './github-dark.css';
import './index.css';const Marked = () => {const [text, setText] = useState('');useEffect(() => {// 配置highlighthljs.configure({tabReplace: '',classPrefix: 'hljs-',languages: ['CSS', 'HTML', 'JavaScript', 'Python', 'TypeScript', 'Markdown'],});// 配置markedmarked.setOptions({renderer: new marked.Renderer(),highlight: code => hljs.highlightAuto(code).value,gfm: true, //默认为true。 允许 Git Hub标准的markdown.tables: true, //默认为true。 允许支持表格语法。该选项要求 gfm 为true。breaks: true, //默认为false。 允许回车换行。该选项要求 gfm 为true。});}, []);return (<><header>基于React的markdown实时编辑器</header><div className="marked"><divclassName="input-region markdownStyle"contentEditable="plaintext-only"// suppressContentEditableWarningonInput={e => {setText(e.target.innerText);}}></div><divclassName="show-region markdownStyle"dangerouslySetInnerHTML={{__html: marked(text).replace(/<pre>/g, "<pre id='hljs'>"),}}></div></div></>);
};export default Marked;

3. 源代码

其他代码,如代码高亮主题文件样式文件,包括整个源代码,都放到了[Github]上,需要自取。

如果对你有帮助,帮忙点个小心心❤️~


📘📘欢迎在我的博客上访问:
https://lzxjack.top/

http://www.lbrq.cn/news/772525.html

相关文章:

  • 做好网站建设工作/厦门seo百度快照优化
  • 赛马网站开发出售/百度打开
  • 公司网站做的好的/黑帽seo优化软件
  • 网站开发的招标参数/网站免费网站免费优化优化
  • 个人网站的制作教程/中国2022年重大新闻
  • 网站建设现在主要做些什么/培训seo去哪家机构最好
  • 沈阳做网站优化的公司/网络营销题库及答案2020
  • 柳城企业网站建设公司/优化落实新十条措施
  • 网站前台的实现/关键词广告
  • 东莞专业技术人才服务网/seo广告优化多少钱
  • 自己做网站开微店可行吗/静态网页制作
  • 网站建设需要会什么软件/许昌seo公司
  • 大连网站建设找哪家好/网络营销公司名字大全
  • 东莞常平邮编是多少/广州seo优化费用
  • 建设法规网站/淘宝店铺推广方法
  • 怎么在自己的电脑上做网站/怎么去营销自己的产品
  • 汽车门店管理系统/电脑优化软件排行榜
  • 漳州做网站开发/百度关键词热搜
  • 电子商城网站建设的实训内容记述/免费建立个人网站申请
  • 重庆政务服务网/重庆企业网站排名优化
  • 金站网.营销型网站/hao123影视
  • 学做网站论坛 可以吗/博客seo教程
  • 网站建设 上/做网站
  • 辽宁沈阳做网站/新闻发布系统
  • 网站运营每天做的/怎么自己做一个网站
  • wordpress remove_query_arg/百度竞价优化
  • 用php写的网站/爱站网长尾关键词挖掘查询工具
  • 镇江网站建设价位/如何做电商 个人
  • 云浮 网站建设/免费网络营销平台
  • 网站建设免费空间哪里有/seo优化范畴
  • 袖珍手持气象仪的用途
  • 什么时候用WS(WebSocket),什么使用用SSE(Server-Sent Events)?
  • Python初学者笔记第二十二期 -- (JSON数据解析)
  • 负载均衡详解
  • MySQL基础面试
  • 高性能Web服务器