美文网首页微信小程序大前端开发
原生开发小程序 和 wepy 、 mpvue 对比

原生开发小程序 和 wepy 、 mpvue 对比

作者: 唐人不自醉 | 来源:发表于2018-09-20 17:12 被阅读1365次

    (转载备份)

    本文横向对比、探讨了下原生开发小程序,和目前比较热门的 wepy 、mpvue 开发小程序三种方式的优势和劣势;由于三者的篇幅都比较多,本文只是简单介绍。如有错误,请大神们指正。

    三者的开发文档以及介绍:

    原生开发小程序文档:点此进入
    wepy 开发文档:点此进入
    mpvue 开发文档:点此进入

    三者的简单对比:

    以下用一张图来简单概括三者的区别:


    各个框架比较结构图

    小程序支持的是 WXML + WXSS + JS 这样的组合,所以,wepy 和 mpvue 都是将文件构建到 dist 目录,转换为小程序支持的文件类型,然后将微信开发者工具指向 dist 目录下,进行调试开发,并且两者都提供了热更新。

    开发中,该选择哪种开发方式:

    个人认为:
    如果小程序项目是新项目,没有旧的 h5 项目迁移,则可以考虑用小程序原生开发,好处:相比于第三方框架,坑少。
    如果是从老的 h5 项目迁移到小程序,并且 老的 h5 项目是 vue 开发或者既有 h5 项目也需要小程序开发,则比较适合 wepy 或者 mpvue 来做迁移或者开发。

    以下提供一些三者的不同点,作为开发者选择开发方式的建议,具体的开发文档请移驾各自的官方文档。。

    1.开发方式上:

    原生开发:
    开发者需要全新学习小程序的抒写格式,目前版本模板中支持 slot,但是不支持 npm 包。原生不支持 css 预处理器,但是 vsCode 中 Easy WXLESS 插件可以将 less 文件自动转换为 wxss 文件;
    wepy:
    开发者需要熟悉 vue 和 wepy 两种语法,支持 slot 组件内容分发插槽,支持 npm 包,支持 css 预处理器;
    mpvue:
    开发者需要熟悉 vue ,目前版本(v1.0.5)不支持 slot ,支持 npm 包,支持 css 预处理器;

    2.应用状态管理上:

    原生开发:
    没有提供原生的应用状态管理方式,但是可以将 Redux or Mobx 引入到项目中。
    小程序原生提供了一种声明使用全局变量,写法为:

    app.js 中配置变量

    //App.js
    App({
      BASE_URL: 'http://www.1m85.com/api',
      onLaunch: function () {
        console.log('App Launch')
      },
      onShow: function () {
        console.log('App Show')
      },
      onHide: function () {
        console.log('App Hide')
      }
    })
    

    通过全局函数 getApp() 可以获取全局的应用实例,然后调用配置常量
    /pages/index/index index.js测试

    Page({
      onLoad:function(options){
         var app = getApp();        // Get the app instance.
         console.log(app.BASE_URL); 
      }
    
    })
    

    wepy:
    可以将 Redux or Mobx 引入到项目中。
    mpvue:
    可以直接使用 vuex 做应用状态管理

    3.开发便利上:

    原生开发:
    不支持 computed 计算属性和 watcher 监听器;模板语法中只支持简单的 js 表达式。需要写小程序的 view 标签等;
    wepy:
    支持 computed 计算属性和 watcher 监听器;模板语法中只支持简单的 js 表达式。需要写小程序的 view 标签等;
    computed 的写法:

    computed = {
      aPlus () {
        return this.a + 1
      }
    }
    

    watcher 监听器的写法:

    // 监听器函数名必须跟需要被监听的data对象中的属性num同名,
    // 其参数中的newValue为属性改变后的新值,oldValue为改变前的旧值
    watch = {
      num (newValue, oldValue) {
        console.log(`num value: ${oldValue} -> ${newValue}`)
      }
    }
    

    mpvue:
    支持 computed 计算属性和 watcher 监听器;模板语法中只支持简单的 js 表达式。可以直接写 div 、span 等标签
    computed 的写法:

    computed: {
        computedClassStr () {
            return this.isActive ? 'active' : ''
        },
        computedClassObject () {
            return { active: this.isActive }
        }
    }
    

    watcher 监听器的写法:

    watch: {
      num (newValue, oldValue) {
        console.log(`num value: ${oldValue} -> ${newValue}`)
      }
    }
    

    4.对云信 im 的支持性:

    原生开发:
    云信支持原生小程序开发;
    wepy:
    云信暂不支持wepy开发;
    mpvue:
    云信支持mpvue开发;


    以上为一些简单的对比,具体开发详情请移驾官方文档。

    相关文章

      网友评论

        本文标题:原生开发小程序 和 wepy 、 mpvue 对比

        本文链接:https://www.haomeiwen.com/subject/igunnftx.html