一个爱撸猫、爱追番、头发旺盛的前端小哥哥(●'◡'●)

头条/百度/微信小程序 mpvue 使用体验

最近在开发百度/微信/头条三家的小程序,首先是 百度跟微信 这两个使用的mpvue开发(百度在重构使用原生),头条用原生写的。

首先说一下 mpvue 的使用体验:

优点:

1.因为 写法是使用 vue 的写法,所以写起来比较顺手,可以使用vue的生命周期,可以使用 mixin vuex,比较省时省力

2.对 微信的支持是最好的,百度其次,最差的是头条,如果要只写微信的话可以考虑mpvue。一端多用的话 有坑。

缺点:

1.一端多用有些地方不兼容,也可能是因为一开始写的时候就是用微信的方式写的,但是根据官方说法,除了个别地方需要区分端 之外,无需特殊处理,所以实际体验不是很好。

 

mpvue遇到的问题:

1. 编译百度的时候不支持组件传递多方法,仅最前面的 @click1 可触发,需要多加一层做事件管理。

<components @click1=’click1′  @click2=’click2′></components>

改为:<components @clickManage=’clickManage’></components>

2. 百度在打包时会报错,解决方案:

  •  找到文件 node_modules/core-js/library/modules/_microtask.js
  •  替换代码
    if (isNode) {
    notify = function () {
    process.nextTick(flush);
    };
    // browsers with MutationObserver, except iOS Safari – https://github.com/zloirock/core-js/issues/339
    } else if (Promise && Promise.resolve) {
    // Promise.resolve without an argument throws an error in LG WebOS 2
    var promise = Promise.resolve(undefined);
    notify = function () {
    promise.then(flush);
    };
    // for other environments – macrotask based on:
    // – setImmediate
    // – MessageChannel
    // – window.postMessag
    // – onreadystatechange
    // – setTimeout
    } else if (Observer && !(global.navigator && global.navigator.standalone)) {
    var toggle = true;
    var node = document.createTextNode(”);
    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new
    notify = function () {
    node.data = toggle = !toggle;
    };
    // environments with maybe non-completely correct, but existent Promise
    } else {
    notify = function () {
    // strange IE + webpack dev server bug – use .call(global)
    macrotask.call(global, flush);
    };
    }

3. 编译头条时满屏报错,直接放弃改为原生写。

点赞
  1. 奇怪的老司机来打个酱油

奇怪的老司机进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据