• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >微信小程序 > 艺龙微信小程序框架组件实例代码

艺龙微信小程序框架组件实例代码

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-11-30

匿名通过本文主要向大家介绍了微信小程序等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
由于身处于在线旅游行业,对OTA的行业动态都比较关心一些,前阵子研究体验了一下艺龙的微信小程序,虽然有些美中不足,但是小程序的架构组件还是非常好的,所以今天我们就来简单看看艺龙微信小程序框架组件。
首先,我们将艺龙微信小程序的框架组件分为以下四个部分来分析:
1.局部组件
2.独立组件
3.集成组件
4.网络请求
先看三张的动态效果图:
总体而言,其目录结构如下:

[AppleScript] 纯文本查看 复制代码

├── README.MD
├── app.js
├── app.json
├── app.wxss
├── components
├── image
├── pages
├── service
└── utils
    ├── api.js
    ├── cookie.js
    ├── data-center.js
    ├── overwrite.js
    ├── page-events.js
    ├── path.js
    ├── promise.js
    └── service.js

框架使用说明

  • 框架对所有微信原生api进行了一层包装,以便管控和扩展。

[AppleScript] 纯文本查看 复制代码

//index.js
var api = require("./utils/api.js")();
api.login({
    success: function(res) {
        console.log(res);
    }
});

[AppleScript] 纯文本查看 复制代码

//index.js
var api = require("./utils/api.js")();
api.login({
    success: function(res) {
        console.log(res);
    }
});
  • 对于后端接口,框架提供service层进项管理,接口返回一个Promise对象。

[AppleScript] 纯文本查看 复制代码

//demo.js
var Service = require("../utils/service.js");
module.exports = {
    GetTime: Service({
        url: 'https://xxx.xxx.xxx/api/getserverdate/',
        params: [], //参数列表
        method: 'GET',
        noLoading: true,
        mockData: function() { //模拟数据
            return new Date();
        },
        dataTransform: function(data) { //适配处理
            return data;
        }
    })
};

[AppleScript] 纯文本查看 复制代码

//index.js
var service = require('service/demo'); //框架约定,所有的后端接口,要注册到对应的service文件中
var serverDate = service.GetTime( /*service可配置参数列表,这里传入相对应的参数*/ ).then(function(date) {
    that.setData({
        serverDate: date
    });
});
  • 小程序不支持cookie机制,若要兼容现有后端cookie处理(不做改动),可使用框架模拟的cookie机制。

[AppleScript] 纯文本查看 复制代码

//index.js
var COOKIE = require('./cookie.js');
var expire = new Date().getTime() + res.expire * 1000;
COOKIE.set(key, value, expire);

[AppleScript] 纯文本查看 复制代码

//service.js
//...
headers["Cookie"] = Cookie.getAll(); //用户cookie将随http请求发送至服务器
//...
  • Page() 函数用来注册一个页面。接受一个object参数,其指定页面的初始数据、生命周期函数、事件处理函数等,框架对Page做了重写,这样可以方便的使用扩展能力,使用时仅需将原来的业务代码用包装器包装一下即可。

[AppleScript] 纯文本查看 复制代码

//微信小程序原生页面注册形式
Page({
    data: {},
    onLoad: function() {}
});
//框架重写注册形式
var dirname = 'pages/index',
    overwrite = require('../../utils/overwrite.js');
(function(require, Page) { //重写require、Page
    Page({
        data: {},
        onLoad: function() {}
    });
})(overwrite.require(require, dirname), overwrite.Page);
  • globalData监听,框架支持全局事件监听机制

[AppleScript] 纯文本查看 复制代码

//index.js
var dirname = 'pages/index',
    overwrite = require('../../utils/overwrite.js');
(function(require, Page) {
    //获取应用实例
    var app = getApp();
    var service = require('service/demo');
    Page({
        data: {
            indate: '',
            indateText: ''
        },
        onLoad: function() {
            this.listenerGlobalData('indate', function(indate) {
                this.data.indate = indate
                this.data.indateText = new Date(indate).format('MM-dd')
            }.bind(this));
        }
    })
})(overwrite.require(require, dirname), overwrite.Page);
  • 事件机制,页面间跳转可以传递数据,框架支持页面间传递数据的同时,还可以通过跳转接口返回的事件对象监听自定义事件。

[AppleScript] 纯文本查看 复制代码

//index页面
var event = api.Navigate.go({
    url: '../list/index',
    params: {
        name: 'billy'
    }
});
event.on("listok", function(params) {
    console.log(params);
});

[AppleScript] 纯文本查看 复制代码

//http页面
Page({
    onLoad: function(data) {
        if (data.name === 'billy') {
            this.fireEvent("listok", 'hello ' + data.name);
        }
    }
});

组件使用说明

  • 内置组件

框架重写Page构造方法,内置了一些常用的组件,例如 alert、picker、setLoading,其中 alert 和 setLoading 内部分别封装了原生的 wx.showModal 、wx.showToast,封装使得调用参数结构化,方便业务使用,使用时不用引入页面结构,直接调用即可;picker则需要首先引入到页面中表现层结构,按照配置要求传递配置项。

[AppleScript] 纯文本查看 复制代码

//setLoading
this.setLoading(true);//ture/false
//picker 引入表现层结构
<!--index.wxml-->
<view class="container">
    <view class="userinfo">
        <text class="userinfo-nickname">{{current}}</text>
    </view>
    <include src="../../components/base.wxml" />
</view>
//picker 使用
overwrite.picker({
    content: "选择排序",
    init: this.data.sortIndex,
    data: this.data.sortList,
    bindtap: function(id, index) {
        if (that.data.sort != id) {
            that.setData({
                sortIndex: index,
                current: this.data.sortList[index].text
            });
        }
    },
    bindcancel: function() {
        console.log('cancel')
    }
});
//alert
overwrite.alert({
    content: '弹框对话框,参数配置详见文档说明',
    cancelText: '取消',
    bindconfirm: function() {
        console.log('确定');
    },
    bindcancel: function() {
        console.log('取消');
    }
});

  • 独立页面组件

独立页面组件其实就是一个完整的页面单元(js、wxml、wxss组成),使用很简单,通过引入相关js方法,调用打开组件即可(可传递callback用于数据交换处理)。--其实现原理是组件提供的js方法将会打开一个新页面(api.Navigate.go),并通过注册事件的形式交互行为数据

[AppleScript] 纯文本查看 复制代码

//index.js
var dirname = 'pages/externalComponent',
    overwrite = requi



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2018-11-30js实现微信小程序左右滑动功能
  • 2018-11-30实例讲解微信小程序异步处理方法
  • 2018-11-30PHP:微信小程序 微信支付服务端集成实例详解
  • 2017-06-20微信小程序妹子图片展示demo代码
  • 2018-11-30关于微信小程序url与token的设置
  • 2018-11-30微信小程序navigateTo数据传递详解
  • 2018-11-30微信小程序 css样式media标签
  • 2018-11-30使用Class后出现编译异常
  • 2018-11-30图解小程序和APP的区别
  • 2018-11-30Angularjs过滤器完成排序功能实例详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 官方手册教你如何使用微信小程序
    • 微信小程序中倒计时的实现代码
    • 小程序加载器的实现:按需预加载远程图片资源
    • 如何解决微信小程序没有模糊搜索功能
    • 微信小程序中显示html格式内容的方法
    • 关于强迫症的10篇文章推荐
    • 微信小程序中数据过滤的实现方法介绍(代码)
    • 微信小程序之拖拽排序的示例代码
    • 微信小程序之自定义创建实例介绍
    • 分享我是如何看待微信小程序的

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有