(转)uni-app使用markdown组件(亲测可用)
<p><span style="color: rgba(255, 0, 0, 1)"><strong>目前2023/3/16日测试, 可以正常使用</strong></span></p><p>环境:<br>uni-app中Vue版本是3.0<br>Towxml版本:3.0</p>
<p>Towxml 是一个让小程序(微信/QQ)可以解析Markdown、HTML的解析库。能够使小程序完美解析Markdown内容。</p>
<p>github地址:https://github.com/sbfkcel/towxml</p>
<p>下面介绍如何使用Towxml:</p>
<h5 id="h5--towxml-">第一步:首先,需要构建Towxml(常规步骤,按照操作步骤执行就是了)</h5>
<ul>
<li>克隆项目到本地</li>
<li>git clone https://github.com/sbfkcel/towxml.git</li>
<li>安装构建依赖</li>
<li>npm install 或 yarn</li>
<li>编辑配置文件towxml/config.js</li>
<li>根据自行需要,仅保留你需要的功能即可(配置中有详细注释)</li>
<li>运行 npm run build 或 yarn run build即可</li>
<li>(重要)修改 towxml/decode.json 里所有/towxml开头的绝对路径为相对路径。例如 “decode”: “/towxml/decode”, 改成 “decode”: “./decode”,</li>
</ul>
<h5 id="h5--towxml-">第二步:将构建好的towxml复制到项目中</h5>
<p>首先在项目下新建wxcomponents目录,名字不能错,这个是“乌龟的屁股”。<br><img src="https://img.hi917.com/2022/Z90CgAYWV3VACjhpv57AH0dnlZZ1EVkToCpn9eis.png"></p>
<p>将第一步构建的Towxml目录复制到wxcomponents中,目录结构如下</p>
<p>.<img src="https://img.hi917.com/2022/Ry2CTMVXh2oHUheQnsYpjYQ7IHeb4MJe4dgbMpG0.png"></p>
<h5 id="h5--">第三步:开始使用</h5>
<h6 id="h6-1-main-js-towxml">1、在main.js中进入Towxml</h6>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">新增一</span>
<span style="color: rgba(0, 128, 128, 1)">2</span> const towxml = require("./wxcomponents/towxml/index")<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">这里最后一定是index,不要写成了towxml</span>
<span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">新增二</span>
<span style="color: rgba(0, 128, 128, 1)">4</span> app.config.globalProperties.$towxml = towxml</pre>
</div>
<p>完整代码如下:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 0, 1)">app.$mount()
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #endif</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #ifdef VUE3</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span> import { createSSRApp } from 'vue'
<span style="color: rgba(0, 128, 128, 1)"> 5</span> import App from './App.vue'
<span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">新增一</span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span> const towxml = require("./wxcomponents/towxml/index"<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> export <span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> createApp() {
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> const app =<span style="color: rgba(0, 0, 0, 1)"> createSSRApp(App)
</span><span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">新增二</span>
<span style="color: rgba(0, 128, 128, 1)">11</span> app.config.globalProperties.$towxml =<span style="color: rgba(0, 0, 0, 1)"> towxml
</span><span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">13</span> <span style="color: rgba(0, 0, 0, 1)">app
</span><span style="color: rgba(0, 128, 128, 1)">14</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">16</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #endif</span></pre>
</div>
<p> </p>
<h6 id="h6-2-">2、在页面中引入组件</h6>
<p>在pages.json中,在指定页面新增组件:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> "usingComponents"<span style="color: rgba(0, 0, 0, 1)">: {
</span><span style="color: rgba(0, 128, 128, 1)">2</span> "towxml": "/wxcomponents/towxml/towxml"
<span style="color: rgba(0, 128, 128, 1)">3</span> }</pre>
</div>
<p> </p>
<p>完整使用如下:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> "path": "pages/home/home"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> "style"<span style="color: rgba(0, 0, 0, 1)">: {
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> "navigationBarTitleText": "首页"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> "enablePullDownRefresh": <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> "usingComponents"<span style="color: rgba(0, 0, 0, 1)">: {
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> "towxml": "/wxcomponents/towxml/towxml"
<span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">10</span> },</pre>
</div>
<p> </p>
<h6 id="h6-3-">3、在页面插入组件</h6>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <template>
<span style="color: rgba(0, 128, 128, 1)">2</span> <view>
<span style="color: rgba(0, 128, 128, 1)">3</span> <towxml :nodes="article"></towxml>
<span style="color: rgba(0, 128, 128, 1)">4</span> </view>
<span style="color: rgba(0, 128, 128, 1)">5</span> </template></pre>
</div>
<p> </p>
<h6 id="h6-4-">4、解析内容</h6>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <script>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> export <span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)"> data() {
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 0, 1)"> article: {}
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)"> };
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 0, 1)"> onLoad() {
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 0, 1)"> uni.showLoading({
</span><span style="color: rgba(0, 128, 128, 1)">10</span> title:"加载数据中...."
<span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 0, 1)"> })
</span><span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)"> uni.request({
</span><span style="color: rgba(0, 128, 128, 1)">13</span> url: 'https://www.vvadd.com/wxml_demo/demo.txt?v=2', <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">仅为示例,并非真实接口地址。</span>
<span style="color: rgba(0, 128, 128, 1)">14</span> <span style="color: rgba(0, 0, 0, 1)"> data: {},
</span><span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)"> header: {},
</span><span style="color: rgba(0, 128, 128, 1)">16</span> success: (res) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">17</span> <span style="color: rgba(0, 0, 0, 1)"> uni.showToast({
</span><span style="color: rgba(0, 128, 128, 1)">18</span> title:"获取数据完成"
<span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 0, 1)"> })
</span><span style="color: rgba(0, 128, 128, 1)">20</span> <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.parseMarkdown(res.data.data);
</span><span style="color: rgba(0, 128, 128, 1)">21</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">22</span> <span style="color: rgba(0, 0, 0, 1)"> complete() {
</span><span style="color: rgba(0, 128, 128, 1)">23</span> <span style="color: rgba(0, 0, 0, 1)"> uni.hideLoading()
</span><span style="color: rgba(0, 128, 128, 1)">24</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">25</span> <span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 128, 1)">26</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">27</span> <span style="color: rgba(0, 0, 0, 1)"> methods: {
</span><span style="color: rgba(0, 128, 128, 1)">28</span> <span style="color: rgba(0, 0, 0, 1)"> parseMarkdown(content) {
</span><span style="color: rgba(0, 128, 128, 1)">29</span> let result = <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.$towxml(content,
</span><span style="color: rgba(0, 128, 128, 1)">30</span> 'markdown'<span style="color: rgba(0, 0, 0, 1)">, {
</span><span style="color: rgba(0, 128, 128, 1)">31</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> base: 'https://xxx.com', // 相对资源的base路径</span>
<span style="color: rgba(0, 128, 128, 1)">32</span> theme: 'dark', <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 主题,默认`light`</span>
<span style="color: rgba(0, 128, 128, 1)">33</span> events: { <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 为元素绑定的事件方法</span>
<span style="color: rgba(0, 128, 128, 1)">34</span> tap: (e) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">35</span> console.log('tap'<span style="color: rgba(0, 0, 0, 1)">, e);
</span><span style="color: rgba(0, 128, 128, 1)">36</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">37</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">38</span> <span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 128, 1)">39</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 更新解析数据</span>
<span style="color: rgba(0, 128, 128, 1)">40</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.article =<span style="color: rgba(0, 0, 0, 1)"> result
</span><span style="color: rgba(0, 128, 128, 1)">41</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">42</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">43</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">44</span> </script></pre>
</div>
<p>以上就是towxml的使用方法</p>
<p>注意:如果上面的步骤都没有问题,但是解析出来没有样式,只需要将项目重新运行下即可.</p>
<p> </p>
<p>转自:</p>
<p>https://blog.hi917.com/detail/559.html</p><br><br>
来源:https://www.cnblogs.com/chuan2021/p/17223663.html
頁:
[1]