详解基于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 相关文章推荐
firefox中JS读取XML文件
Dec 21 Javascript
js 字符串操作函数
Jul 25 Javascript
多引号嵌套的变量命名的问题
May 09 Javascript
浅谈JS函数定义方式的区别
Oct 30 Javascript
Agularjs妙用双向数据绑定实现手风琴效果
May 26 Javascript
React styled-components设置组件属性的方法
Aug 07 Javascript
简述vue状态管理模式之vuex
Aug 29 Javascript
微信小程序左右滚动公告栏效果代码实例
Sep 16 Javascript
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
May 26 Javascript
uniapp实现可以左右滑动导航栏
Oct 21 Javascript
react antd表格中渲染一张或多张图片的实例
Oct 28 Javascript
JavaScript实现网页动态生成表格
Nov 25 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使用mysqli向数据库添加数据的方法
2015/03/20 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
javascript网页关闭时提醒效果脚本
2008/10/22 Javascript
prototype Element学习笔记(篇二)
2008/10/26 Javascript
URL地址中的#符号使用说明
2011/02/12 Javascript
js 手机号码合法性验证代码集合
2012/09/29 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
2013/05/07 Javascript
jquery validation验证身份证号,护照,电话号码,email(实例代码)
2013/11/06 Javascript
JavaScript表单验证实例之验证表单项是否为空
2016/01/10 Javascript
简单实现js浮动框
2016/12/13 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
详解webpack+vue-cli项目打包技巧
2017/06/17 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
Vue项目报错:Uncaught SyntaxError: Unexpected token
2018/11/10 Javascript
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
[37:23]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第二局
2016/03/04 DOTA
详解使用python的logging模块在stdout输出的两种方法
2017/05/17 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
Python装饰器基础概念与用法详解
2018/12/22 Python
python使用Plotly绘图工具绘制柱状图
2019/04/01 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
2020/06/28 Python
Python如何读写二进制数组数据
2020/08/01 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
用CSS3将你的设计带入下个高度
2009/08/08 HTML / CSS
美国电视购物HSN官网:HSN
2016/09/07 全球购物
印度尼西亚最大的电商平台:Tokopedia(印尼版淘宝)
2017/12/02 全球购物
戴森香港官方网站:Dyson香港
2021/02/11 全球购物
30年同学聚会感言
2014/01/30 职场文书
公司担保书范文
2014/05/21 职场文书
师德师风个人整改措施
2014/10/27 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
vue基于Teleport实现Modal组件
2021/05/31 Vue.js
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL