详解基于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的函数重名看其初始化方式
Mar 08 Javascript
基于jQuery的一个扩展form序列化到json对象
Dec 09 Javascript
读jQuery之二(两种扩展)
Jun 11 Javascript
分享一个自己写的table表格排序js插件(高效简洁)
Oct 29 Javascript
JQuery 返回布尔值Is()条件判断方法代码
May 14 Javascript
JS仿iGoogle自定义首页模块拖拽特效的方法
Feb 13 Javascript
jQuery表格行上移下移和置顶的实现方法
Oct 08 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(一)
May 11 Javascript
Vue用v-for给src属性赋值的方法
Mar 03 Javascript
vue-cli配置环境变量的方法
Jul 09 Javascript
微信小程序仿微信运动步数排行(交互)
Jul 13 Javascript
vue中使用vue-cli接入融云实现即时通信
Apr 19 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之apc
2013/05/15 PHP
PHP基于数组实现的分页函数实例
2014/08/20 PHP
PHP获取数组中重复最多的元素的实现方法
2014/11/11 PHP
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
2016/12/27 PHP
JavaScript 动态生成方法的例子
2009/07/22 Javascript
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
js遍历子节点子元素附属性及方法
2014/08/19 Javascript
js网页右下角提示框实例
2014/10/14 Javascript
浅析jQuery EasyUI中的tree使用指南
2014/12/18 Javascript
第五篇Bootstrap 排版
2016/06/21 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
浅谈vue中慎用style的scoped属性
2017/11/28 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
浅析JavaScript异步代码优化
2019/03/18 Javascript
vue-cli3添加模式配置多环境变量的方法
2019/06/05 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
2020/04/15 Javascript
Python实现全角半角转换的方法
2014/08/18 Python
flask中主动抛出异常及统一异常处理代码示例
2018/01/18 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
2019/05/27 Python
详解numpy的argmax的具体使用
2019/05/27 Python
numpy求平均值的维度设定的例子
2019/08/24 Python
Python3操作读写CSV文件使用包过程解析
2020/04/10 Python
python绘图模块之利用turtle画图
2021/02/12 Python
Zipadee-Zip襁褓过渡毯:Sleeping Baby
2018/12/30 全球购物
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
Quiksilver荷兰官方网站:冲浪和滑雪板
2019/11/16 全球购物
如何删除一个表里面的重复行
2013/07/13 面试题
AURALog面试题软件测试方面
2013/10/22 面试题
新品发布会策划方案
2014/06/08 职场文书
react中props 的使用及进行限制的方法
2021/04/28 Javascript
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS