详解基于mpvue的小程序markdown适配解决方案


Posted in Javascript onMay 08, 2018

美团点评近日开源了 mpvue ,这是一个使用 Vue.js 开发小程序的前端框架。使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为 H5 和小程序提供了代码复用的能力。如果想将 H5 项目改造为小程序,或开发小程序后希望将其转换为 H5,mpvue 将是十分契合的一种解决方案。

mpvue 的核心目标是提高开发效率,增强开发体验。使用该框架,开发者只需初步了解小程序开发规范、熟悉 Vue.js 基本语法即可上手。框架提供了完整的 Vue.js 开发体验,开发者编写 Vue.js 代码,mpvue 将其解析转换为小程序并确保其正确运行。此外,框架还通过 vue-cli 工具向开发者提供 quick start 示例代码,开发者只需执行一条简单命令,即可获得可运行的项目。

主要特性:

  1. 彻底的组件化开发能力:提高代码
  2. 完整的 Vue.js 开发体验
  3. 方便的 Vuex 数据管理方案:方便构建复杂应用
  4. 快捷的 webpack 构建机制:自定义构建策略、开发阶段 hotReload
  5. 支持使用 npm 外部依赖
  6. 使用 Vue.js 命令行工具 vue-cli 快速初始化项目
  7. H5 代码转换编译成小程序目标代码的能力

实现原理:

Vue代码

详解基于mpvue的小程序markdown适配解决方案

  1. 将小程序页面编写为 Vue.js 实现
  2. 以 Vue.js 开发规范实现父子组件关联

小程序代码

  1. 以小程序开发规范编写视图层模板
  2. 配置生命周期函数,关联数据更新调用
  3. 将 Vue.js 数据映射为小程序数据模型

并在此基础上,附加如下机制

  1. Vue.js 实例与小程序 Page 实例建立关联
  2. 小程序和 Vue.js 生命周期建立映射关系,能在小程序生命周期中触发 Vue.js 生命周期
  3. 小程序事件建立代理机制,在事件代理函数中触发与之对应的 Vue.js 组件事件响应

据悉,mpvue 框架已经在业务项目中得到实践和验证,目前正在美团点评内部大范围使用。mpvue 是基于 Vue.js 源码进行二次开发,在增加了小程序平台的实现同时,保留了跟随 Vue.js 版本升级的能力。

相信开发过小程序的人都知道小程序不支持直接插入dom,那么当我们获取到markdown数据需要渲染的时候就有麻烦。

封装好的 mpvue-wemark 地址

因此github上有很多成熟的小程序markdown渲染方案,但是自己之前写mpvue的时候发现在mpvue上直接用这些库是不行的,因为wxml和vue的写法上是不兼容的,因此就需要对mpvue进行适配。这里我选择wemark这个库。

主要做了几步 :1、把remarkable.js重新打包成ES版本,mpvue默认脚手架是wepack2不支持es commonjs混用 2、把wxml和小程序js层不兼容vue的写法兼容了下。

demo如下

<template>
 <div>
  <wemark :mdData='mdData'/>
 </div>
</template>

<script>
import wemark from "mpvue-wemark";
export default {
 data() {
  return {
   mdData: ''
  };
 },
 components: {
  wemark
 },
 mounted() {
   this.mdData = "## hello, world";

 }
};
</script>

这样,就实现了在mpvue小程序中渲染出markdown的内容了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Use Word to Search for Files
Jun 15 Javascript
Javascript倒计时代码
Aug 12 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
May 28 Javascript
jQuery实现瀑布流布局详解(PC和移动端)
Sep 01 Javascript
关于动态执行代码(js的Eval)实例详解
Aug 15 Javascript
JavaScript字符串对象(string)基本用法示例
Jan 18 Javascript
原生js开发的日历插件
Feb 04 Javascript
AngularJS的脏检查深入分析
Apr 22 Javascript
js评分组件使用详解
Jun 06 Javascript
JS实现的透明度渐变动画效果示例
Apr 28 Javascript
Vue源码解析之数据响应系统的使用
Apr 24 Javascript
JS前端监控采集用户行为的N种姿势
Jul 23 Javascript
Vue.js 实现微信公众号菜单编辑器功能(一)
May 08 #Javascript
浅谈React 服务器端渲染的使用
May 08 #Javascript
vue.js做一个简单的编辑菜谱功能
May 08 #Javascript
webstorm和.vue中es6语法报错的解决方法
May 08 #Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
May 08 #Javascript
webstorm添加*.vue文件支持
May 08 #Javascript
浅谈vue项目如何打包扔向服务器
May 08 #Javascript
You might like
拼音码表的生成
2006/10/09 PHP
php实现图片缩放功能类
2013/12/18 PHP
php排序算法实例分析
2016/10/17 PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
2017/10/25 PHP
一行代码告别document.getElementById
2012/06/01 Javascript
js生成随机数之random函数随机示例
2013/12/20 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
javascript数组去重小结
2016/03/07 Javascript
JS实现音量控制拖动
2020/01/15 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
2020/08/19 Javascript
[01:05:56]Liquid vs VP Supermajor决赛 BO 第二场 6.10
2018/07/04 DOTA
python之wxPython应用实例
2014/09/28 Python
python标准算法实现数组全排列的方法
2015/03/17 Python
用Python编写脚本使IE实现代理上网的教程
2015/04/23 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
2018/04/23 Python
利用python在excel里面直接使用sql函数的方法
2019/02/08 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
python频繁写入文件时提速的方法
2019/06/26 Python
python对矩阵进行转置的2种处理方法
2019/07/17 Python
pytorch中的卷积和池化计算方式详解
2020/01/03 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
python如何对链表操作
2020/10/10 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
2020/11/02 Python
25个CSS3动画按钮和菜单教程分享
2012/10/03 HTML / CSS
css3 iphone玻璃透明气泡完美实现
2013/03/20 HTML / CSS
红色康乃馨酒店:Red Carnation Hotels
2017/06/22 全球购物
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
英国Flybe航空官网:欧洲最大的独立支线廉价航空公司
2019/07/15 全球购物
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
C/C++程序员常见面试题一
2012/12/08 面试题
介绍一下Mysql的存储引擎
2015/02/12 面试题
杨善洲电影观后感
2015/06/04 职场文书
严以修身专题学习研讨会发言材料
2015/11/09 职场文书
使用HTML+Css+transform实现3D导航栏的示例代码
2021/03/31 HTML / CSS
从结婚开始的恋爱故事。小说《我的美好婚事》TV动画化决定
2022/04/07 日漫
win10截图快捷键win+shift+s没有反应无法截图怎么解决?
2022/08/14 数码科技