1 Star 1 Fork 0

laden666666 / my-doc-jsx

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
index.html 4.65 KB
一键复制 编辑 原始数据 按行查看 历史
laden666666 提交于 2018-07-15 14:02 . 增加了异步转换
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
body, html{
padding: 0;
margin: 0;
height: 100%;
}
#frame{
display: flex;
height: 100%;
}
#doc, #docEdit{
flex: 1;
height: 100%;
overflow: auto;
padding: 0 5px;
border: 0;
}
</style>
</head>
<body>
<div id="frame">
<div id="doc"></div>
<textarea id="docEdit">
<doc>
<h1>my-doc-jsx——一个基于jsx的文档书写、文档转换工具</h1>
<blockquote>my-doc-jsx——一个基于jsx的文档书写、文档转换工具</blockquote>
<h2>富文本、office写文档的时代过去了</h2>
<table>
<tr>
<th>1</th>
<th>2</th>
<th>3</th>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>8</td>
<td><span>9</span></td>
</tr>
</table>
<p>
{`早期大家写博客都是用富文本编辑器,后来大家用了markdown;早期大家写文档都是用word,后来大家用了gitbook。这是因为我们的博客也好,文档也好,大家都希望用一门标记语言来书写`}
</p>
<p>
{`用标记语言书写文档的好处很多。比如使我们的文档(博客)的内容能够和样式分离,能够配上不同的css后可以以展示不同形式展示。再比如可以让计算机读懂我们文档的结构,这样我们可以让计算机帮把文档转换成任意的格式。再比如我们可以扩展标记语言,使用我们自定义的方言去书写一些格式非常复杂的内容。再比如。。。。。。`}
</p>
<p>
{`因此,在这个时代已经没有人在希望用富文本或者office去写文档,我们要标记语言。`}
</p>
<h2>markdown、xml?还是其他标记语言</h2>
<p>那么用什么形式来作为这个标记语言呢?</p>
<p>
<strong>xml</strong>
{`无疑是最优秀的标记语言,xml具有较高的可扩展性,定义规范。但是xml不适合书写文档,因为他过于`}<strong>规范</strong>{`,不够灵活,严格的语法要求使人生畏;而且他对于转义的处理过也不够方便,一个空格都需要六个字符表示(xml转义),而且也没几个人能够记住这些转义;同时离开编辑器我们也很难直接使用xml去书写复杂的格式文档。`}
</p>
<p>
<strong>markdown</strong>
{`无疑是最流行的用于文档书写的标记语言,它非常的简单,而且就是为了书写文档而生的。
但是它不同于xml,扩展性不够,我们可以通过“\`\`\`”扩展markdown的语法,但是书写起来非常不方便。
同时markdown方言太多,导致多种markdown编辑器编辑出的文档彼此居然不兼容。
再有markdown的语法过于简单,因此用起来反而非常麻烦,相信很多让人都遇到过一个表格调整了半天显示还有问题的情况。
这些问题都是因为markdown不具备xml的规范性导致的。`}
</p>
<p>
<strong>html</strong>
{`本身就没有扩展性,同时有没有markdown方便,更不适合书写文档。
我们希望能够像写markdown一样写文档代码,又希望像写html一样写文档代码。有没有这样的标记语言?
这种感觉就像又想写JavaScript代码,又想写html代码一样。所有我选择了jsx,严格来说jsx不是一个标记语言,他更多的是一个编程语言。但是如果你不使用JavaScript语法部分,它就是一个天然的标记语言了,同时jsx继承了xml的扩展性,配合es6的`}<strong>模板字符串</strong>{`完美地解决了转义问题,而且他易于扩张。
使用jsx,像markdown那样包装html,能够使我们使用可扩展的标记语言书写文档,这就是`}<strong>my-doc-jsx</strong>{`。
`}
</p>
</doc>
</textarea>
</div>
<script src="./static/react.js"></script>
<script src="./static/babel.js"></script>
<script>
function renderDoc() {
var text = document.querySelector("#docEdit").value;
myDocJsx.convert(text, {
format: 'HTML'
}).then(function(script){
document.querySelector('#doc').innerHTML = script;
});
}
document.addEventListener("DOMContentLoaded", function () {
renderDoc()
document.querySelector("#docEdit").addEventListener("input", function () {
renderDoc()
})
})
</script>
</body>
</html>
JavaScript
1
https://gitee.com/laden666666/my-doc-jsx.git
git@gitee.com:laden666666/my-doc-jsx.git
laden666666
my-doc-jsx
my-doc-jsx
master

搜索帮助