详解基于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 相关文章推荐
Javascript 二维数组
Nov 26 Javascript
Underscore.js 的模板功能介绍与应用
Dec 24 Javascript
jQuery链式操作如何实现以及为什么要用链式操作
Jan 17 Javascript
js判断字符是否是汉字的两种方法小结
Jan 03 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
Mar 03 Javascript
分享15个大家都熟知的jquery小技巧
Dec 02 Javascript
基于jQuery实现顶部导航栏功能
Dec 27 Javascript
基于Vue2的独立构建与运行时构建的差别(详解)
Dec 06 Javascript
JS基于对象的链表实现与使用方法示例
Jan 31 Javascript
js实现弹出框的拖拽效果实例代码详解
Apr 16 Javascript
微信小程序中悬浮窗功能的实现代码
Aug 02 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
Jun 10 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
php array_map()数组函数使用说明
2011/07/12 PHP
说说PHP的autoLoad自动加载机制
2012/09/27 PHP
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
PHP实现下载远程图片保存到本地的方法
2017/06/19 PHP
Laravel5.4简单实现app接口Api Token认证方法
2019/08/29 PHP
JQuery在页面中添加和除移DOM示例代码
2013/06/24 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
js调用iframe实现打印页面内容的方法
2014/03/04 Javascript
jQuery的text()方法用法分析
2014/12/20 Javascript
浅谈jquery事件处理
2015/04/24 Javascript
JavaScript中setMonth()方法的使用详解
2015/06/11 Javascript
常用jQuery代码分享
2015/07/14 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
Vue侧滑菜单组件——DrawerLayout
2017/12/18 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
2018/07/30 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
layui默认选中table的CheckBox复选框方法
2019/09/19 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
2019/10/16 jQuery
[01:18:35]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第一场 1月29日
2021/03/11 DOTA
Python3.6简单操作Mysql数据库
2017/09/12 Python
django文档学习之applications使用详解
2018/01/29 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
使用Python将图片转正方形的两种方法实例代码详解
2020/04/29 Python
什么是python的列表推导式
2020/05/26 Python
Python 远程开关机的方法
2020/11/18 Python
最新党员的自我评价分享
2013/11/04 职场文书
开业庆典答谢词
2014/01/18 职场文书
市场部业务员岗位职责
2014/04/02 职场文书
采购员岗位职责
2015/02/03 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
早上好问候语大全
2015/11/10 职场文书
《曹冲称象》教学反思
2016/02/20 职场文书
【DOTA2】高能暴走TK秀!PSG LGD vs ASTER - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA