node.js获取命令参数

新建 process.js

# 代码
var params = process.argv.splice(2);
console.log(params);

# 执行
$ node process.js a b c d
# 输出
[ 'a', 'b', 'c', 'd' ]
  1. process是一个全局对象,argv返回的是一组包含命令行参数的数组。
  2. 第一项为”node”,第二项为执行的js的完整路径,后面是附加在命令行后的参数。
  3. 多个参数用空格隔,process.argv.splice(2)获取的是一个数组,[0]表示第一个参数,以此类推

GitHub 访问加速方法

国内的 GitHub 无论是打开,还是下载都挺慢,我参考网上的方法修改 host 文件,提升了速度

1. 打开 hosts 文件

首先打开路径 C:\Windows\System32\drivers\etc 下的 hosts 文件(需要管理员身份)

注意:

windows系统的hosts文件的位置如下:C:\Windows\System32\drivers\etc\hosts

mac/linux系统的hosts文件的位置如下:/etc/hosts

2. 查询 IP

访问:https://www.ipaddress.com/ip-lookup

在输入框分别输入下面名称,查询它们对应的 IP 地址:

github.com
gist.github.com
github.global.ssl.fastly.net
raw.githubusercontent.com

image

3. 修改 hosts 文件

添加到末尾

140.82.112.3 github.com
140.82.113.4 gist.github.com
199.232.69.194 github.global.ssl.fastly.net
199.232.68.133 raw.githubusercontent.com

vscode-settings-sync

网上很多同步教程,按照教程操作upload时一直报错:sync:invalid gist ID

查找问题很久才知道 gist和token是两个东西。下面重新梳理下:

一、下载安装插件 Setting sync

二、GitHub 上生成 token

image
image
image
image
image
image

三、GitHub 上生成 gist

image
进入 your gists
image
随便给自己的gist起个名,添加内容,然后”Create secret gist”
image
上图中的1ab3dd43250115fac4fddb64f2f45830就是gist id

四、vscode配置gist和token

vscode里:
1,、Ctrl + P调出命令框
2、输入>sync:advanced option
3、找到打开设置
4、出现下面的设置界面
5、shift+alt+u :将本地配置上传到github上
6、在其他设备上,下载sync插件,shift+alt+d :从github上下载配置到本地

image

下载、安装、配置和调试 JDK

快速开始

本章介绍了如何下载、安装、配置和调试 JDK

下载、安装 JDK

JDK(Java Development Kit)是用于 Java 开发的工具箱。

http://www.oracle.com/technetwork/java/javase/downloads/index.html下载

JDK 支持如下操作系统的安装:

操作系统类型 文件大小 文件
Linux x86 154.67 MB jdk-8u66-linux-i586.rpm
Linux x86 174.83 MB jdk-8u66-linux-i586.tar.gz
Linux x64 152.69 MB jdk-8u66-linux-x64.rpm
Linux x64 172.89 MB jdk-8u66-linux-x64.tar.gz
Mac OS X x64 227.12 MB jdk-8u66-macosx-x64.dmg
Solaris SPARC 64-bit (SVR4 package) 139.65 MB jdk-8u66-solaris-sparcv9.tar.
Solaris SPARC 64-bit 99.05 MB jdk-8u66-solaris-sparcv9.tar.g
Solaris x64 (SVR4 package) 140 MB jdk-8u66-solaris-x64.tar.Z
Solaris x64 96.2 MB jdk-8u66-solaris-x64.tar.gz
Windows x86 181.33 MB jdk-8u66-windows-i586.exe
Windows x64 186.65 MB jdk-8u66-windows-x64.exe

安装路径默认安装在 C:\Program Files\Java\jdk1.8.0_66 或者 usr/local/java/jdk1.8.0_66

基于 RPM 的 Linux

  • 下载安装文件
    文件名类似于jdk-8uversion-linux-x64.rpm。
  • 切换到 root 用户身份
  • 检查当前的安装情况。卸载老版本的 JDK

检查当前的安装情况,比如:

$rpm -qa | grep  jdk
jdk1.8.0_102-1.8.0_102-fcs.x86_64

若有老版本 JDK,则需先卸载老版本:

$rpm -e package_name

比如:

$rpm -e jdk1.8.0_102-1.8.0_102-fcs.x86_64
  • 安装

    $ rpm -ivh jdk-8uversion-linux-x64.rpm

比如:

$ rpm -ivh jdk-8u102-linux-x64.rpm
Preparing...                ########################################### [100%]
  1:jdk1.8.0_102           ########################################### [100%]
Unpacking JAR files...
    tools.jar...
    plugin.jar...
    javaws.jar...
    deploy.jar...
    rt.jar...
    jsse.jar...
    charsets.jar...
    localedata.jar...
  • 升级

    $ rpm -Uvh jdk-8uversion-linux-x64.rpm

安装完成后,可以删除.rpm文件,以节省空间。 安装完后,无需重启主机,即可使用 JDK。

设置执行路径

Windows

增加一个 JAVA_HOME 环境变量,值是 JDK 的安装目录。如 C:\Program Files\Java\jdk1.8.0_66 ,注意后边不带分号

在 PATH 的环境变量里面增加 %JAVA_HOME%\bin;

在 CLASSPATH增加.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(前面有点号和分号,后边结尾也有分号。 或者可以写成.;%JAVA_HOME%\lib如图所示,一样的效果。

UNIX

包括 Linux、Mac OS X 和 Solaris 环境下,在~/.profile、~/.bashrc或 ~/.bash_profile 文件末尾添加:

export JAVA_HOME=/usr/java/jdk1.8.0_66
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

其中:

JAVA_HOME 是 JDK 安装目录
Linux 下用冒号“:”来分隔路径
$PATH 、$CLASSPATH、 $JAVA_HOME 是用来引用原来的环境变量的值
export 是把这三个变量导出为全局变量

比如,在 CentOS 下,需编辑/etc/profile文件。

测试

测试安装是否正确,可以在 shell 窗口,键入:

$java -version

若能看到如下信息,则说明 JDK 安装成功:

java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)

最好再执行下javac,以测试环境变量是否设置正确:

$ javac
用法: javac <options> <source files>
其中, 可能的选项包括:
  -g                         生成所有调试信息
  -g:none                    不生成任何调试信息
  -g:{lines,vars,source}     只生成某些调试信息
  -nowarn                    不生成任何警告
  -verbose                   输出有关编译器正在执行的操作的消息
  -deprecation               输出使用已过时的 API 的源位置
  -classpath <路径>            指定查找用户类文件和注释处理程序的位置
  -cp <路径>                   指定查找用户类文件和注释处理程序的位置
  -sourcepath <路径>           指定查找输入源文件的位置
  -bootclasspath <路径>        覆盖引导类文件的位置
  -extdirs <目录>              覆盖所安装扩展的位置
  -endorseddirs <目录>         覆盖签名的标准路径的位置
  -proc:{none,only}          控制是否执行注释处理和/或编译。
  -processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称; 绕过默认的搜索进程
  -processorpath <路径>        指定查找注释处理程序的位置
  -parameters                生成元数据以用于方法参数的反射
  -d <目录>                    指定放置生成的类文件的位置
  -s <目录>                    指定放置生成的源文件的位置
  -h <目录>                    指定放置生成的本机标头文件的位置
  -implicit:{none,class}     指定是否为隐式引用文件生成类文件
  -encoding <编码>             指定源文件使用的字符编码
  -source <发行版>              提供与指定发行版的源兼容性
  -target <发行版>              生成特定 VM 版本的类文件
  -profile <配置文件>            请确保使用的 API 在指定的配置文件中可用
  -version                   版本信息
  -help                      输出标准选项的提要
  -A关键字[=值]                  传递给注释处理程序的选项
  -X                         输出非标准选项的提要
  -J<标记>                     直接将 <标记> 传递给运行时系统
  -Werror                    出现警告时终止编译
  @<文件名>                     从文件读取选项和文件名

有时候java -version能够执行成功,但javac命令不成功的情况,一般是环境变量配置问题,请参阅上面“设置执行路径”章节内容,再仔细检测环境变量的配置。

hexo-create-config

准备启程

一旦安装了Hexo,运行以下命令初始化Hexo在目录

1
2
3
$ hexo init <folder>
$ cd <folder>
$ cnpm install

一旦初始化,你的项目文件夹是这个样子:

1
2
3
4
5
6
7
8
9
.
├── _config.yml
├── package.json
├── scaffolds
├── scripts
├── source
| ├── _drafts
| └── _posts
└── themes

下面依次介绍上面各个文件或者目录的用途:

  • _config.yml站点配置文件,很多全局配置都在这个文件中。
  • package.json 应用数据。从它可以看出hexo版本信息,以及它所默认或者说依赖的一些组件。
  • scaffolds 模版文件。当你创建一篇新的文章时,hexo会依据模版文件进行创建,主要用在你想在每篇文章都添加一些共性的内容的情况下。
  • scripts 放脚本的文件夹, 就是放js文件的地方
  • source 这个文件夹就是放文章的地方了,除了文章还有一些主要的资源,比如文章里的图片,文件等等东西。这个文件夹最好定期做一个备份,丢了它,整个站点就废了。
  • themes 主题文件夹。

配置

_config.yml配置文件

站点配置文件,你可以在这里进行大多数配置。

网站设置

配置 描述
title 站点名字,也就是html的title,会显示在浏览器标签上
subtitle 站点副标题,会显示在首页上,可以不填
description 站点描述,可以不填
author 作者名称
language 语言
timezone 站点时区,默认是电脑时间

链接设置

配置 描述
url 站点网址
root 站点根目录
permalink 文章的永久网址链接,默认是:year/:month/:day/:title/,指的什么意思?比如我一篇叫『love』的文章是在2012年1月1日写的,那么它对应的链接就是http://yoururl/2012/01/01/love/
permalink_default

如果网址是次级目录,比如:http://example.com/blog,那么就要设置url为http://example.com/blog,并且root要设置为/blog/

目录设置

配置 描述
source_dir source目录,默认值为source
public_dir public目录,静态网站生成的地方,默认值为public
tag_dir tag目录
archive_dir Archive目录
category_dir 分类目录
code_dir 代码目录
i18n_dir i18n目录
skip_render 不想被渲染的路径

写作设置

配置 描述
new_post_name 新建文章默认文件名,默认值为 :title.md,比如你执行命令hexo new hello,就会默认在_post目录下创建一个hello.md的文件
default_layout 默认布局
titlecase
external_link 在新标签中打开一个外部链接,默认为true
filename_case 转换文件名,1代表小写;2代表大写;默认为0,意思就是创建文章的时候,是否自动帮你转换文件名,默认就行,意义不大
render_drafts 是否渲染_drafts目录下的文章,默认为false
post_asset_folder 是否启用Asset Folder,默认为false,至于什么是Asset Folder,后面有讲解
relative_link 使链接相对于根文件夹,默认false
future 是否显示未来日期文章,默认为true
highlight 代码块设置

分类 & 标签

配置 描述
default_category 默认分类,默认为无分类,当然你可以设置一个默认分类。
category_map 分类缩略名
tag_map 标签缩略名

日期格式化

Hexo使用的Moment.js来处理时间的。
| 配置 | 描述|
| ———– |———————————————|
| date_format |日期格式,默认为MMM D YYYY,一般我们喜欢使用YYYY-MM-DD的格式,其他格式模版可以查看Moment.js|
| time_format |时间格式,默认为H:mm:ss|

分页

配置 描述
per_page 一页显示多少篇文章,0 为不分页,默认值为 10
pagination_dir 分页目录,默认值为page

扩展

配置 描述
theme 主题配置,此处填上主题名就OK了,当然在themes目录下一定要有你配置的主题文件夹
deploy 部署配置,将本地public目录也就是网站部署到服务器上的配置

package.json文件

应用数据,默认安装了 EJSStylusMarkdown 来渲染。如果你不需要可以卸载它们。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package.json
{
"name": "hexo-site",
"version": "0.0.0",
"private": true,
"hexo": {
"version": ""
},
"dependencies": {
"hexo": "^3.0.0",
"hexo-generator-archive": "^0.1.0",
"hexo-generator-category": "^0.1.0",
"hexo-generator-index": "^0.1.0",
"hexo-generator-tag": "^0.1.0",
"hexo-renderer-ejs": "^0.1.0",
"hexo-renderer-stylus": "^0.2.0",
"hexo-renderer-marked": "^0.2.4",
"hexo-server": "^0.1.2"
}
}

scaffolds

脚手架文件夹。当你创建一个新文章,Hexo基于scaffolds文件夹里的类型来创建。

scripts

脚本文件夹。扩展Hexo最简单的方法,它会自动执行这个文件夹下的JavaScript文件。

命令

init

1
$ hexo init [folder]

初始化一个网站。如果没有提供folder,Hexo会在当前目录设置网站。

new

1
$ hexo new [layout] <title>

创建一篇文章,如果不指定layout,那么就使用_config.ymldefault_layout的值,标题中如果有空格,将整个title放到引号中。
比如,hexo new "hello world"创建一篇叫hello world的文章。

generate

1
$ hexo generate

生成静态文件:

选项 描述
-d, --deploy 生成完后直接部署
-w, --watch 监控文件的改变

publish

1
$ hexo publish [layout] <filename>

发布为草稿

server

1
$ hexo server

启动一个本地服务,默认情况下访问 http://localhost:4000/

选项 描述
-p, --port 指定端口
-s, --static 仅服务静态文件
-l, --log 开启日志

deploy

1
$ hexo deploy

部署你的站点

选项 描述
-g, --generate 表示在部署前先重新生成一下站点

render

1
$ hexo render <file1> [file2] ...

渲染文件

选项 描述
-o, --output 输出到指定文件,我没用过

migrate

1
$ hexo migrate <type>

迁移到其他模块的命令。

clean

1
$ hexo clean

删除缓存文件db.json以及生成的public目录,当你修改了某些样式或者配置时,如果发现hexo g后也没有反应,就可以执行一下这个命令。

list

1
$ hexo list <type>

列出所有路由

version

1
$ hexo version

显示hexo的版本信息到控制台

Options

Safe mode

1
$ hexo --safe

安全模式,使所有插件和脚本不生效

Debug mode

1
$ hexo --debug

日志详细信息输出到终端。

Silent mode

1
$ hexo --silent

静默模式,不在终端上显示任何信息

Customize config file path

1
$ hexo --config custom.yml

使用一个自定义配置文件替换默认_config.yml

Display drafts

1
$ hexo --draft

显示草稿文章(位于source/_drafts目录下)

Customize CWD

1
$ hexo --cwd /path/to/cwd

自定义当前工作目录路径,假如你没在工作目录下,可以使用这个命令指定一下工作目录路径

openoffice

下载https://www.openoffice.org/download/

Windows上安装openoffice

1.找到安装目录
cd  C:\Program Files (x86)\OpenOffice 4\program
2.运行启动命令
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
# 安装命令介绍
# host=127.0.0.1 项目本地能访问,改成 host=0.0.0.0 可外网访问
# port=8100 监测的端口,默认8100,可以更改端口
# 查看端口8100是否启动
netstat -n|greo 8100
# 输出 说明启动
TCP    127.0.0.1:8100         127.0.0.1:52724        ESTABLISHED

Linux上安装openoffice

  1. 登录服务器,查看linux服务器位数:getconf LONG_BIT,开始上传对应位数的安装包

  2. 到/usr/local目录下:cd /usr/local 创建文件夹:mkdir openoffice

  3. 把上传的文件移动到/usr/local/openoffice: mv Apa*.tar.gz /usr/local/openoffice

  4. 进入到目录: cd /usr/local/openoffice/ 解压文件:tar -zxvf Apa*.tar.gz

  5. 从当前进入目录:cd zh-CN 从当前进入目录:cd RPMS/

  6. 安装rpm : rpm -ivh *.rpm

  7. 安装进度达到100%后,安装桌面图形化,进入目录: cd desktop-integration/,安装程序:rpm -ivh openoffice4.1.5-redhat-menus-4.1.5-9789.noarch.rpm

  8. 进入目录启动openoffice:cd /opt/openoffice4/program

  9. 启动命令:./soffice -headless -accept=”socket,host=172.16.210.46,port=8100;urp;” -nofirststartwizard &

  10. 查看端口是否启动成功: netstat -tln

  11. 卸载openoffice:rpm -e rpm -qa |grep openoffice rpm -qa |grep ooobasis

  12. 删除安装包:①cd /usr/local/ ②rm -rf openoffice

  13. 删除安装程序:①cd /opt/ ②rm -rf openoffice4

启动openoffice命令:

cd /opt/openoffice4/program
./soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
# 或
/opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &

查看端口是否启动成功: netstat -tln

打开Linux某个端口防火墙命令
firewall-cmd –zone=public –add-port=8100/tcp –permanent

firewall-cmd --reload

git 如何统计代码行数

1.根据用户名时间段统计

git log –author=”username” –since=2018-01-01 –until=2019-12-31 –pretty=tformat: –numstat | awk ‘{ add += $1; subs += $2; loc += $1 - $2 } END { printf “added lines: %s, removed lines: %s, total lines: %s\n”, add, subs, loc }’ -

2.查看提交者排名前 N 位

git log –pretty=’%aN’ | sort | uniq -c | sort -k1 -n -r | head -n 5

3.提交数统计

git log –oneline | wc -l

4.根据用户名统计

git log –author=”username” –pretty=tformat: –numstat | awk ‘{ add += $1; subs += $2; loc += $1 - $2 } END { printf “added lines: %s, removed lines: %s, total lines: %s\n”, add, subs, loc }’ -

5.根据时间段统计

git log –since=2021-01-01 –until=2021-12-31 –pretty=tformat: –numstat | awk ‘{ add += $1; subs += $2; loc += $1 - $2 } END { printf “added lines: %s, removed lines: %s, total lines: %s\n”, add, subs, loc }’

6.统计每个人的增删行数

git log –format=’%aN’ | sort -u | while read name; do echo -en “$name\t”; git log –author=”$name” –pretty=tformat: –numstat | awk ‘{ add += $1; subs += $2; loc += $1 - $2 } END { printf “added lines: %s, removed lines: %s, total lines: %s “, add, subs, loc }’ -; done

7.贡献者统计

git log –pretty=’%aN’ | sort -u | wc -l

git 开发生产仓库同步代码

开发测试 origin 修改 为 develop

git remote rename origin develop

添加生产git 仓库

git remote add origin https://github.com/huapisong/test.git

pull 开发测试

git pull develop master

将开放测试 push 到生产库

git push -u origin  --all
git push -u origin  --tags

一次操作系统报错OutOfMemory Error的处理记录

查看 hs_err_pidxxxx.log内容:

#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 30408704 bytes for committing reserved memory.
# Possible reasons:
#   The system is out of physical RAM or swap space
#   In 32 bit mode, the process size limit was hit
# Possible solutions:
#   Reduce memory load on the system
#   Increase physical memory or swap space
#   Check if swap backing store is full
#   Use 64 bit Java on a 64 bit OS
#   Decrease Java heap size (-Xmx/-Xms)
#   Decrease number of Java threads
#   Decrease Java thread stack sizes (-Xss)
#   Set larger code cache with -XX:ReservedCodeCacheSize=
# This output file may be truncated or incomplete.
#
#  Out of Memory Error (os_linux.cpp:2651), pid=30569, tid=0x00007f3f8f8f8700

可能的原因

系统物理内存或虚拟内存不足
程序在压缩指针模式下运行, Java堆会阻塞本地堆的增长


第一步:找到应用的java进程的PID

ps -ef | grep java

找到进程ID为227771。

第二步:显示各进程资源占用情况。

top -p 227771 -H 


# 转换成十六进制
printf "%x" 251435

在整点找到PID 251435,转换成十六进制3d62b,再使用jstack打印出线程堆栈:

jstack 227771|grep -A 13 0x3d62b、

vue中Quill富文本编辑器的使用

自定义字体修改

添加 style

var Font = Quill.import('attributors/style/font');
# 结果源码
<p><span style="font-family: SimSun;">宋体 测试</span></p>

添加 class

var Font = Quill.import('attributors/class/font');
# 结果源码
<p><span class="ql-font-SimSun">宋体</span></p>

例子

<!-- 富文本编辑 vue-quill-editor -->
<template>
<div class>
    <quill-editor
    v-model="contentHtml"
    ref="myQuillEditor"
    :options="editorOption"
    ></quill-editor>
</div>
</template>

<script>
import 'quill/dist/quill.core.css';
import 'quill/dist/quill.snow.css';
import 'quill/dist/quill.bubble.css';
import { quillEditor, Quill } from 'vue-quill-editor';
// 图片拖拽功能 ie 不支持
// import { ImageDrop } from 'quill-image-drop-module';
// Quill.register('modules/imageDrop', ImageDrop);

var fonts = ['STXihei', 'SimSun', 'SimHei','Microsoft-YaHei','KaiTi','FangSong','Arial','sans-serif'];  

var Font = Quill.import('attributors/style/font');
// var Font = Quill.import('attributors/class/font');
// var Font = Quill.import('formats/font');
Font.whitelist = fonts; //将字体加入到白名单 
Quill.register(Font, true);

export default {
props: {
    content: {
    type: String,
    default: ""
    }
},
mounted() {
},
components: {
    'quill-editor': quillEditor
},
data() {
    return {
    // contentHtml: this.content,
    editorOption: {
        modules: {
        toolbar: {
            container: [  // 工具栏
            ['bold', 'italic', 'underline', 'strike'],
            ['blockquote', 'code-block'],
            [{ 'header': 1 }, { 'header': 2 }],
            [{ 'list': 'ordered' }, { 'list': 'bullet' }],
            [{ 'script': 'sub' }, { 'script': 'super' }],
            [{ 'indent': '-1' }, { 'indent': '+1' }],
            [{ 'direction': 'rtl' }],
            [{ 'size': ['small', false, 'large', 'huge'] }],
            [{ 'header': [1, 2, 3, 4, 5, 6, false] }],
            [{ 'color': [] }, { 'background': [] }],
            [{ 'font': fonts }],
            [{ 'align': [] }],
            ['clean'],
            ['link', 'image', 'video']
            ],
            handlers: {
            // 'image': function (value) {
            //   console.log(value);
            //     if (value) {
            //         alert('自定义图片');
            //     } else {
            //       this.quill.format('image', false);
            //     }
            // }
            }
        },
        history: {
            delay: 1000,
            maxStack: 50,
            userOnly: false
        },
        // imageDrop: true,
        }
    }
    };
},
computed: {
    contentHtml: {
    get() {
        return this.content;
    },
    // setter
    set(val) {
        if (val.replace(/[^\x00-\xff]/g, '01').length >= 10 * 1024 * 1024)
        this.$message.error('富文本内容大小不得大于10M!');
        this.$emit("update:content", val);
    }
    },
},
watch: {
    // 'contentHtml'(newVal, oldVal) {
    //   if (!newVal) {
    //     return;
    //   }
    //   if (newVal == oldVal) {
    //     return;
    //   }
    //   this.$emit("update:content", newVal);
    // }
},
};
</script>
<style>
.ql-snow .ql-picker.ql-size .ql-picker-label::before,
.ql-snow .ql-picker.ql-size .ql-picker-item::before {
content: "14px";
}

.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="small"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="small"]::before {
content: "10px";
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="large"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="large"]::before {
content: "18px";
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="huge"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="huge"]::before {
content: "32px";
}

.ql-snow .ql-picker.ql-header .ql-picker-label::before,
.ql-snow .ql-picker.ql-header .ql-picker-item::before {
content: "文本";
}

.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
content: "标题1";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
content: "标题2";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
content: "标题3";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
content: "标题4";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
content: "标题5";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
content: "标题6";
}


.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=STXihei]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=STXihei]::before {
    content: "华文细黑";
    font-family: "STXihei";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=SimSun]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=SimSun]::before {
    content: "宋体";
    font-family: "SimSun";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=SimHei]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=SimHei]::before {
    content: "黑体";
    font-family: "SimHei";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=Microsoft-YaHei]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=Microsoft-YaHei]::before {
    content: "微软雅黑";
    font-family: "Microsoft YaHei";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=KaiTi]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=KaiTi]::before {
    content: "楷体";
    font-family: "KaiTi";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=FangSong]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=FangSong]::before {
    content: "仿宋";
    font-family: "FangSong";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=Arial]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=Arial]::before {
    content: "Arial";
    font-family: "Arial";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=Times-New-Roman]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=Times-New-Roman]::before {
    content: "Times New Roman";
    font-family: "Times New Roman";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=sans-serif]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=sans-serif]::before {
    content: "sans-serif";
    font-family: "sans-serif";
}

.ql-font-STXihei {
font-family: "STXihei";
}
.ql-font-SimSun {
font-family: "SimSun";
}
.ql-font-SimHei {
font-family: "SimHei";
}
.ql-font-Microsoft-YaHei {
font-family: "Microsoft YaHei";
}
.ql-font-KaiTi {
font-family: "KaiTi";
}
.ql-font-FangSong {
font-family: "FangSong";
}
.ql-font-Arial {
font-family: "Arial";
}
.ql-font-Times-New-Roman {
font-family: "Times New Roman";
}
.ql-font-sans-serif {
font-family: "sans-serif";
}
</style>