uniapp视频教程
uniapp视频教程
  • 发布:2017-12-26 09:28
  • 更新:2017-12-26 10:11
  • 阅读:1383

大家如何看待支付宝和微信"小程序"

分类:HTML5+

最近微信小程序非常火爆~app已经全面接入小程序了~
也申请到了支付宝小程序的资格.
这些时间不知道官方在憋什么大招了没有,感觉各种小程序开发体验接近完美,完美的模板封装,完美的平台兼容,完美的用户基础,完美的开发体验~
当然,上面都不是重点,重点是官方有没有什么对策来应对小程序的踢馆,要知道,流应用可是这些小程序的鼻祖,但很不幸被别人超车了~
小程序把各种功能封装成组件一直是我想给官方建议的,但当时词穷描述不出来,我们开发只能写一大堆超级超级长的json来调用接口,非常不人性化.比如微信小程序时间选择组件

<view class="section">  
  <view class="section__title">省市区选择器</view>  
  <picker mode="region" bindchange="bindRegionChange" value="{{region}}" custom-item="{{customItem}}">  
    <view class="picker">  
      当前选择:{{region[0]}},{{region[1]}},{{region[2]}}  
    </view>  
  </picker>  
</view>

下面是我们的开发模式,非常"原始"

<body>  
        <header class="mui-bar mui-bar-nav">  
            <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>  
            <h1 class="mui-title">picker(选择器)</h1>  
        </header>  
        <div class="mui-content">  
            <div class="mui-content-padded">  
                <h5 class="mui-content-padded">原生 SELECT</h5>  
                <select class="mui-btn mui-btn-block">  
                    <option value="item-1">item-1</option>  
                    <option value="item-2">item-2</option>  
                    <option value="item-3">item-3</option>  
                    <option value="item-4">item-4</option>  
                    <option value="item-5">item-5</option>  
                </select>  
                <br />  
                <p>原生 SELECT(选择框)在不同的设备上UI可能会有差异,并且不支持多级联动(多个 SELECT 可实现,但较麻烦),故mui封装了picker组件,参见如下示例。</p>  
                <h5 class="mui-content-padded">普通示例</h5>  
                <button id='showUserPicker' class="mui-btn mui-btn-block" type='button'>一级选择示例 ...</button>  
                <div id='userResult' class="ui-alert"></div>  
                <h5 class="mui-content-padded">级联示例</h5>  
                <button id='showCityPicker' class="mui-btn mui-btn-block" type='button'>二级联动示例 ...</button>  
                <div id='cityResult' class="ui-alert"></div>  
                <button id='showCityPicker3' class="mui-btn mui-btn-block" type='button'>三级联动示例 ...</button>  
                <div id='cityResult3' class="ui-alert"></div>  
            </div>  
        </div>  
        <script src="../js/mui.min.js"></script>  
        <!--<script src="../js/mui.picker.min.js"></script>-->  
        <script src="../js/mui.picker.js"></script>  
        <script src="../js/mui.poppicker.js"></script>  
        <script src="../js/city.data.js" type="text/javascript" charset="utf-8"></script>  
        <script src="../js/city.data-3.js" type="text/javascript" charset="utf-8"></script>  
        <script>  
            (function($, doc) {  
                $.init();  
                $.ready(function() {  
                    /**  
                     * 获取对象属性的值  
                     * 主要用于过滤三级联动中,可能出现的最低级的数据不存在的情况,实际开发中需要注意这一点;  
                     * @param {Object} obj 对象  
                     * @param {String} param 属性名  
                     */  
                    var _getParam = function(obj, param) {  
                        return obj[param] || '';  
                    };  
                    //普通示例  
                    var userPicker = new $.PopPicker();  
                    userPicker.setData([{  
                        value: 'ywj',  
                        text: '董事长 叶文洁'  
                    }, {  
                        value: 'aaa',  
                        text: '总经理 艾AA'  
                    }, {  
                        value: 'lj',  
                        text: '罗辑'  
                    }, {  
                        value: 'ymt',  
                        text: '云天明'  
                    }, {  
                        value: 'shq',  
                        text: '史强'  
                    }, {  
                        value: 'zhbh',  
                        text: '章北海'  
                    }, {  
                        value: 'zhy',  
                        text: '庄颜'  
                    }, {  
                        value: 'gyf',  
                        text: '关一帆'  
                    }, {  
                        value: 'zhz',  
                        text: '智子'  
                    }, {  
                        value: 'gezh',   
                        text: '歌者'  
                    }]);  
                    var showUserPickerButton = doc.getElementById('showUserPicker');  
                    var userResult = doc.getElementById('userResult');  
                    showUserPickerButton.addEventListener('tap', function(event) {  
                        userPicker.show(function(items) {  
                            userResult.innerText = JSON.stringify(items[0]);  
                            //返回 false 可以阻止选择框的关闭  
                            //return false;  
                        });  
                    }, false);  
                    //-----------------------------------------  
                    //级联示例  
                    var cityPicker = new $.PopPicker({  
                        layer: 2  
                    });  
                    cityPicker.setData(cityData);  
                    var showCityPickerButton = doc.getElementById('showCityPicker');  
                    var cityResult = doc.getElementById('cityResult');  
                    showCityPickerButton.addEventListener('tap', function(event) {  
                        cityPicker.show(function(items) {  
                            cityResult.innerText = "你选择的城市是:" + items[0].text + " " + items[1].text;  
                            //返回 false 可以阻止选择框的关闭  
                            //return false;  
                        });  
                    }, false);  
                    //-----------------------------------------  
                    //                  //级联示例  
                    var cityPicker3 = new $.PopPicker({  
                        layer: 3  
                    });  
                    cityPicker3.setData(cityData3);  
                    var showCityPickerButton = doc.getElementById('showCityPicker3');  
                    var cityResult3 = doc.getElementById('cityResult3');  
                    showCityPickerButton.addEventListener('tap', function(event) {  
                        cityPicker3.show(function(items) {  
                            cityResult3.innerText = "你选择的城市是:" + _getParam(items[0], 'text') + " " + _getParam(items[1], 'text') + " " + _getParam(items[2], 'text');  
                            //返回 false 可以阻止选择框的关闭  
                            //return false;  
                        });  
                    }, false);  
                });  
            })(mui, document);  
        </script>  
    </body>

说这些呢,就是为了官方能提供更好的开发体验.

当然小程序也有很大的局限性,只能在他们的框架下开发(大多数情况下是够用了),而我们可以开发出来完整的app(大多数个人开发者没什么用,大公司肯定首选原生开发)

新的一年马上就到了,让我们一同共进吧~

2017-12-26 09:28 负责人:无 分享
已邀请:
江户川林柯南

江户川林柯南 - 永远的是一个学生

这应该就是传说中的降维打击,因为小程序也具备跨平台属性,小程序的爆发是行业内对于成本控制的共同结果,感觉Dcloud理想很美好,但是摊子铺得太大,结果各处都做的不完美,也许还是公司太小了。我们这些开发者能做的只是“认爹”而已,毫无疑问,腾讯阿里这种级别的爹还是更靠谱一点,退一步讲,Facebook这个外国爹也还行。至于你说的开发模式,个人觉得各有千秋吧,要封装成那个小程序的样子也很容易,相比小程序来说原始一点的代码没有学习成本,也挺好的。

  • uniapp视频教程 (作者)

    类似于react-native把原生功能封装成组件供js调用这个概念并不新鲜,开发体验会好很多,但也有问题就是有问题只能等官方去完善组件了,各有千秋吧,但从实践来看问题不大

    2017-12-26 10:24

该问题目前已经被锁定, 无法添加新回复