CN108196832A - 一种实现使微信小程序支持自定义组件式开发的方法 - Google Patents

一种实现使微信小程序支持自定义组件式开发的方法 Download PDF

Info

Publication number
CN108196832A
CN108196832A CN201810017387.XA CN201810017387A CN108196832A CN 108196832 A CN108196832 A CN 108196832A CN 201810017387 A CN201810017387 A CN 201810017387A CN 108196832 A CN108196832 A CN 108196832A
Authority
CN
China
Prior art keywords
component
page
data
namespace
exploitation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810017387.XA
Other languages
English (en)
Inventor
汪贵
王彦迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Anhui Little Horse Creative Polytron Technologies Inc
Original Assignee
Anhui Little Horse Creative Polytron Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Anhui Little Horse Creative Polytron Technologies Inc filed Critical Anhui Little Horse Creative Polytron Technologies Inc
Priority to CN201810017387.XA priority Critical patent/CN108196832A/zh
Publication of CN108196832A publication Critical patent/CN108196832A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种实现使微信小程序支持自定义组件式开发的方法,通过组件的开发和组件的使用,组件的开发由创建组件构造类和开发自定义组件分步组成,组件的使用由引入组件模板和初始化组件分布组成,初始化、将组件的数据“注入”到页面的data对象中、把组件的事件“合并”到页面对象上、开发自定义组件、在组件目录components下建立自定义的组件目录、实现自动通过传入的api接口获取接口数据并实现数据行的绘制和分页、在脚本文件index.js中、顶部先定义组件的命名空间、建立组件默认配置对象、初始化方法init、数据加载的实现、引入组件模板、初始化组件一系列的步骤实现自定义组件式开发。

Description

一种实现使微信小程序支持自定义组件式开发的方法
技术领域
本发明涉及到一种用于微信自定义组件开发方法,特别涉及一种用于微信 小程序支持自定义组件的方法。
背景技术
在微信的小程序开发上官方提供了模版的概念,同时又给出了两种引用方 式:import和include,include方式是将你的模版原封不动的“粘贴”到引用的 地方,而我们经常需要开发的是一个交互组件,势必会碰到数据绑定和事件绑 定,导致开发小程序是各种限制,对于开发者非常不友好,框架比较简陋,原 始,可复用较差,没有实现自定义组件的功能。
发明内容
本发明的目的在于提供一种实现使微信小程序支持自定义组件式开发的方 法,该方法在import的形式来使用组件,避开数据绑定和事件绑定的影响。
为实现上述目的,本发明提供如下技术方案:一种实现使微信小程序支持 自定义组件式开发的方法,通过组件的开发和组件的使用,组件的开发由创建 组件构造类和开发自定义组件分步组成,组件的使用由引入组件模板和初始化 组件分布组成。
一种实现使微信小程序支持自定义组件式开发的方法,包括如下步骤:
S1:创建组件构造类:
S11:初始化;
初始化时需传入组件的命名空间nameSpace,组件的配置项options,组件 可提供外部调用的方法methods,通过小程序提供的方法getCurrentPages拿到当 前界面对象page并赋值于全局变量this.page,然后实现组件data对象和事件的 初始化和绑定;
S12:将组件的数据“注入”到页面的data对象中:
遍历初始化时传入的配置对象options,并绑定到当前页面对象this.page的data对象上,并带上组件的命名空间;
this.page.setData({
[命名空间]:配置对象options
});
S13:把组件的事件“合并”到页面对象上;
遍历初始化时传入的方法事件methods,将methods内的方法带上命名空间 前缀挂载到页面对象this.page上;
this.page[命名空间.方法键值]=methods[方法键值];
同时将方法名重命名并绑定到当前页面对象this.page的data对象上,并带 上组件的命名空间;
this.setData({
[命名空间.方法键值]:`命名空间.方法键值`,
});
S2:开发自定义组件:
S21:在组件目录components下建立自定义的组件目录:
PageList建立组件目录PageList,创建页面index,自动生成index.wxml, index,mxss,index.js;
S22:在脚本文件index.js中,顶部先定义组件的命名空间:massoft.pagelist;
S23:建立组件默认配置对象:
数据请求地址:url;
数据源:dataSource;
页码:page;
分页数:pageSize;
S24:初始化方法init:
方法传入配置参数,传入的参数和组件默认参数进行复制合并生成options 变量,然后初始化component.js,传入初始化参数对象:命名空间,配置options, 组件要暴露的方法事件;
S25:数据加载的实现:
定义方法loadData,需要传入数据接口地址url(由组件初始化时传入),异步 请求接口,在返回数据的回调中,将返回的数据绑定到页面page的数据对象data 命名空间massoft.pagelist.dataSource下;
S3:引入组件模板:
在页面的模板文件wxml中import组件的模板;
<import src="../../components/MSPageList/index.wxml"/>
在需要放置组件的地方写入代码:
<templateis="msPageList"
data="{{...massoft.pagelist.dataSource}}"></template>
并绑定数据data={{...组件命名空间.自定义名称}}
其中data是官方属性,用来为模板传递数据;
S4:初始化组件:
在页面脚本文件*.js的顶部先引入组件文件:
importpageList from'../../components/PageList/index.js';
在页面的js文件onLoad方法中中初始化组件,执行组件的init方法并传入 需要的配置属性:传入数据请求的url即可。
与现有技术相比,本发明的有益效果是:本实现使微信小程序支持自定义 组件式开发的方法,初始化、将组件的数据“注入”到页面的data对象中、把组 件的事件“合并”到页面对象上、开发自定义组件、在组件目录components下建 立自定义的组件目录、实现自动通过传入的api接口获取接口数据并实现数据行 的绘制和分页、在脚本文件index.js中、顶部先定义组件的命名空间、建立组件 默认配置对象、初始化方法init、数据加载的实现、引入组件模板、初始化组件 一系列的步骤实现自定义组件式开发。
具体实施方式
下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部 的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性 劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种实现使微信小程序支持自定义组件式开发的方法,通过组件的开发和 组件的使用,组件的开发由创建组件构造类和开发自定义组件分步组成,组件 的使用由引入组件模板和初始化组件分布组成。
实施例一:
一种实现使微信小程序支持自定义组件式开发的方法,包括如下步骤:
S1:创建组件构造类:
S11:初始化;
初始化时需传入组件的命名空间nameSpace,组件的配置项options,组件 可提供外部调用的方法methods,通过小程序提供的方法getCurrentPages拿到当 前界面对象page并赋值于全局变量this.page,然后实现组件data对象和事件的 初始化和绑定;
S12:将组件的数据“注入”到页面的data对象中:
遍历初始化时传入的配置对象options,并绑定到当前页面对象this.page的data对象上,并带上组件的命名空间;
this.page.setData({
[命名空间]:配置对象options
}),这样做方便在模板布局文件(*.wxml)内进行方法绑定;
S13:把组件的事件“合并”到页面对象上;
遍历初始化时传入的方法事件methods,将methods内的方法带上命名空间 前缀挂载到页面对象this.page上;
this.page[命名空间.方法键值]=methods[方法键值];
同时将方法名重命名并绑定到当前页面对象this.page的data对象上,并带 上组件的命名空间;
this.setData({
[命名空间.方法键值]:`命名空间.方法键值`,
});
S2:开发自定义组件:
S21:在组件目录components下建立自定义的组件目录,实现自动通过传入 的api接口获取接口数据并实现数据行的绘制和分页;
PageList建立组件目录PageList,创建页面index,自动生成index.wxml, index,mxss,index.js;
S22:在脚本文件index.js中,顶部先定义组件的命名空间:massoft.pagelist;
S23:建立组件默认配置对象:
数据请求地址:url;
数据源:dataSource;
页码:page;
分页数:pageSize;
S24:初始化方法init:
方法传入配置参数,传入的参数和组件默认参数进行复制合并生成options 变量,然后初始化component.js,传入初始化参数对象:命名空间,配置options, 组件要暴露的方法事件;
S25:数据加载的实现:
定义方法loadData,需要传入数据接口地址url(由组件初始化时传入),异步 请求接口,在返回数据的回调中,将返回的数据绑定到页面page的数据对象data 命名空间massoft.pagelist.dataSource下;
S3:引入组件模板:
在页面的模板文件wxml中import组件的模板;
<import src="../../components/MSPageList/index.wxml"/>
在需要放置组件的地方写入代码:
<templateis="msPageList"
data="{{...massoft.pagelist.dataSource}}"></template>
并绑定数据data={{...组件命名空间.自定义名称}}
其中data是官方属性,用来为模板传递数据;
S4:初始化组件:
在页面脚本文件*.js的顶部先引入组件文件:
importpageList from'../../components/PageList/index.js';
在页面的js文件onLoad方法中中初始化组件,执行组件的init方法并传入 需要的配置属性:传入数据请求的url即可,ageList组件会自动在组件内部进行 数据请求并回绑数据,实现复用。
实施例二:
新建一个组件:
创建wxml文件:
创建JS文件:
import Component from'../component';
const nameSpace='massoft.miniplayer';
export default{
setDefaults(){
return{
isPlaying:false,
};
},
/**
*初始化
*/
init(id,opts={}){
this.idx=id||'miniplayer';
this.options=Object.assign({
},this.setDefaults(),opts);
let_this=this;
const component=new Component({
scope:`${nameSpace}.${_this.idx}`,
data:_this.options,
methods:{
waveTouchStart:function(e){
console.log(e);
},
setIsPlaying:function(isPlaying){
this.page.setData({[`${nameSpace}.${_this.idx}.isPlaying`]:isPlaying});
},
});
return component;
},
}
使用:
页面文件中:
<template is="miniPlayer" data="{{...massoft.miniplayer.miniplayer}}"></template>
脚本文件中:
import{miniPlayer}from'../../components/mswx';
Let_miniPlayer=miniPlayer.init();
综上所述,本发明提出的实现使微信小程序支持自定义组件式开发的方法, 初始化、将组件的数据“注入”到页面的data对象中、把组件的事件“合并”到页 面对象上、开发自定义组件、在组件目录components下建立自定义的组件目录、 实现自动通过传入的api接口获取接口数据并实现数据行的绘制和分页、在脚本 文件index.js中、顶部先定义组件的命名空间、建立组件默认配置对象、初始化 方法init、数据加载的实现、引入组件模板、初始化组件一系列的步骤实现自定 义组件式开发。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局 限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本 发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护 范围之内。

Claims (2)

1.一种实现使微信小程序支持自定义组件式开发的方法,通过组件的开发和组件的使用,其特征在于,组件的开发由创建组件构造类和开发自定义组件分步组成,组件的使用由引入组件模板和初始化组件分布组成。
2.一种实现使微信小程序支持自定义组件式开发的方法,包括如下步骤:
S1:创建组件构造类:
S11:初始化;
初始化时需传入组件的命名空间,组件的配置项options,组件可提供外部调用的方法,通过小程序提供的方法getCurrentPages拿到当前界面对象page并赋值于全局变量this.page,然后实现组件data对象和事件的初始化和绑定;
S12:将组件的数据“注入”到页面的data对象中:
遍历初始化时传入的配置对象,并绑定到当前页面对象this.page的数据对象上,并带上组件的命名空间;
this.page.setData({
[命名空间]:配置对象options
});
S13:把组件的事件“合并”到页面对象上;
遍历初始化时传入的方法事件methods,将methods内的方法带上命名空间前缀挂载到页面对象this.page上;
this.page[命名空间.方法键值]=methods[方法键值];
同时将方法名重命名并绑定到当前页面对象this.page的data对象上,并带上组件的命名空间;
this.setData({
[命名空间.方法键值]:`命名空间.方法键值`,
});
S2:开发自定义组件:
S21:在组件目录components下建立自定义的组件目录:
PageList建立组件目录PageList,创建页面index,自动生成index.wxml,index,mxss,index.js;
S22:在脚本文件index.js中,顶部先定义组件的命名空间:massoft.pagelist;
S23:建立组件默认配置对象:
数据请求地址:url;
数据源:dataSource;
页码:page;
分页数:pageSize;
S24:初始化方法init:
方法传入配置参数,传入的参数和组件默认参数进行复制合并生成options变量,然后初始化component.js,传入初始化参数对象:命名空间,配置options,组件要暴露的方法事件;
S25:数据加载的实现:
定义方法loadData,需要传入数据接口地址url(由组件初始化时传入),异步请求接口,在返回数据的回调中,将返回的数据绑定到页面page的数据对象data命名空间massoft.pagelist.dataSource下;
S3:引入组件模板:
在页面的模板文件wxml中import组件的模板;
<import src="../../components/MSPageList/index.wxml"/>
在需要放置组件的地方写入代码:
<templateis="msPageList"
data="{{...massoft.pagelist.dataSource}}"></template>
并绑定数据data={{...组件命名空间.自定义名称}}
其中data是官方属性,用来为模板传递数据;
S4:初始化组件:
在页面脚本文件*.js的顶部先引入组件文件:
importpageList from'../../components/PageList/index.js';
在页面的js文件onLoad方法中中初始化组件,执行组件的init方法并传入需要的配置属性:传入数据请求的url即可。
CN201810017387.XA 2018-01-09 2018-01-09 一种实现使微信小程序支持自定义组件式开发的方法 Pending CN108196832A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810017387.XA CN108196832A (zh) 2018-01-09 2018-01-09 一种实现使微信小程序支持自定义组件式开发的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810017387.XA CN108196832A (zh) 2018-01-09 2018-01-09 一种实现使微信小程序支持自定义组件式开发的方法

Publications (1)

Publication Number Publication Date
CN108196832A true CN108196832A (zh) 2018-06-22

Family

ID=62588711

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810017387.XA Pending CN108196832A (zh) 2018-01-09 2018-01-09 一种实现使微信小程序支持自定义组件式开发的方法

Country Status (1)

Country Link
CN (1) CN108196832A (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109144615A (zh) * 2018-09-29 2019-01-04 北京城市网邻信息技术有限公司 一种信息发布方法、装置、设备及存储介质
CN109558118A (zh) * 2018-10-30 2019-04-02 百度在线网络技术(北京)有限公司 创建智能小程序的原生组件的方法、装置、设备和计算机存储介质
CN110069269A (zh) * 2019-04-16 2019-07-30 北京字节跳动网络技术有限公司 更新小程序页面的方法、装置、电子设备及存储介质
CN110221819A (zh) * 2019-04-22 2019-09-10 凯通科技股份有限公司 一种流程引擎的模块化扩展方法、电子设备及存储介质
CN110531962A (zh) * 2019-08-06 2019-12-03 上海连尚网络科技有限公司 小程序的开发处理方法、设备及计算机可读存储介质
CN110727431A (zh) * 2019-09-17 2020-01-24 阿里巴巴集团控股有限公司 小程序生成方法以及装置
CN111381825A (zh) * 2020-03-06 2020-07-07 北京五八信息技术有限公司 一种小程序的生成方法和装置
CN111522552A (zh) * 2020-07-06 2020-08-11 腾讯科技(深圳)有限公司 子应用生成方法、装置、计算机设备和存储介质
CN112579048A (zh) * 2019-09-30 2021-03-30 腾讯科技(深圳)有限公司 小程序集成方法、装置、电子设备及存储介质
CN114089967A (zh) * 2022-01-19 2022-02-25 武汉源启科技股份有限公司 Api接口的生成方法和装置
CN114089998A (zh) * 2021-10-29 2022-02-25 广州市玄武无线科技股份有限公司 一种微信小程序自定义下拉选择控件的生成方法及装置
CN114090126A (zh) * 2021-11-23 2022-02-25 浩云科技股份有限公司 一种自定义系统变量方法、装置、终端设备及存储介质
CN117591117A (zh) * 2024-01-19 2024-02-23 中建三局信息科技有限公司 页面生成方法、系统、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103605516A (zh) * 2013-11-12 2014-02-26 国家电网公司 柔性Web展现框架模型架构设计方法
CN106980504A (zh) * 2017-03-28 2017-07-25 腾讯科技(深圳)有限公司 一种应用程序开发方法及其工具、设备
US20170308647A1 (en) * 2006-11-22 2017-10-26 D.R. Systems, Inc. Smart placement rules

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170308647A1 (en) * 2006-11-22 2017-10-26 D.R. Systems, Inc. Smart placement rules
CN103605516A (zh) * 2013-11-12 2014-02-26 国家电网公司 柔性Web展现框架模型架构设计方法
CN106980504A (zh) * 2017-03-28 2017-07-25 腾讯科技(深圳)有限公司 一种应用程序开发方法及其工具、设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SHYMEAN: "微信小程序之自定义组件", 《HTTPS://WWW.SHYMEAN.COM/ARTICLE/微信小程序之自定义组件 *

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109144615B (zh) * 2018-09-29 2022-05-10 北京城市网邻信息技术有限公司 一种信息发布方法、装置、设备及存储介质
CN109144615A (zh) * 2018-09-29 2019-01-04 北京城市网邻信息技术有限公司 一种信息发布方法、装置、设备及存储介质
CN109558118A (zh) * 2018-10-30 2019-04-02 百度在线网络技术(北京)有限公司 创建智能小程序的原生组件的方法、装置、设备和计算机存储介质
CN110069269A (zh) * 2019-04-16 2019-07-30 北京字节跳动网络技术有限公司 更新小程序页面的方法、装置、电子设备及存储介质
CN110221819A (zh) * 2019-04-22 2019-09-10 凯通科技股份有限公司 一种流程引擎的模块化扩展方法、电子设备及存储介质
CN110221819B (zh) * 2019-04-22 2022-12-16 凯通科技股份有限公司 一种流程引擎的模块化扩展方法、电子设备及存储介质
CN110531962A (zh) * 2019-08-06 2019-12-03 上海连尚网络科技有限公司 小程序的开发处理方法、设备及计算机可读存储介质
CN110531962B (zh) * 2019-08-06 2023-11-17 上海连尚网络科技有限公司 小程序的开发处理方法、设备及计算机可读存储介质
CN110727431A (zh) * 2019-09-17 2020-01-24 阿里巴巴集团控股有限公司 小程序生成方法以及装置
CN112579048A (zh) * 2019-09-30 2021-03-30 腾讯科技(深圳)有限公司 小程序集成方法、装置、电子设备及存储介质
CN112579048B (zh) * 2019-09-30 2023-09-08 腾讯科技(深圳)有限公司 小程序集成方法、装置、电子设备及存储介质
CN111381825B (zh) * 2020-03-06 2021-04-09 北京五八信息技术有限公司 一种小程序的生成方法和装置
CN111381825A (zh) * 2020-03-06 2020-07-07 北京五八信息技术有限公司 一种小程序的生成方法和装置
CN111522552B (zh) * 2020-07-06 2020-11-20 腾讯科技(深圳)有限公司 子应用生成方法、装置、计算机设备和存储介质
CN111522552A (zh) * 2020-07-06 2020-08-11 腾讯科技(深圳)有限公司 子应用生成方法、装置、计算机设备和存储介质
CN114089998A (zh) * 2021-10-29 2022-02-25 广州市玄武无线科技股份有限公司 一种微信小程序自定义下拉选择控件的生成方法及装置
CN114090126A (zh) * 2021-11-23 2022-02-25 浩云科技股份有限公司 一种自定义系统变量方法、装置、终端设备及存储介质
CN114089967A (zh) * 2022-01-19 2022-02-25 武汉源启科技股份有限公司 Api接口的生成方法和装置
CN117591117A (zh) * 2024-01-19 2024-02-23 中建三局信息科技有限公司 页面生成方法、系统、设备及存储介质
CN117591117B (zh) * 2024-01-19 2024-04-23 中建三局信息科技有限公司 页面生成方法、系统、设备及存储介质

Similar Documents

Publication Publication Date Title
CN108196832A (zh) 一种实现使微信小程序支持自定义组件式开发的方法
CN106383786B (zh) 一种接口压力性能测试方法、装置及电子设备
CN102799439B (zh) 生成应用的方法和装置
CN102810060B (zh) 一种安致图片资源配置方法及装置
CN107015804B (zh) 一种通过配置api快速开发项目的方法及系统
CN108055248A (zh) 基于dubbo框架的远程调用方法、服务器及存储介质
CN104615462B (zh) 跨平台的移动应用生成服务端及系统
CN104484216A (zh) 服务接口文档和在线测试工具生成方法、装置
RU2005100851A (ru) Способ аутентификации между устройствами
DE60204528D1 (de) Auflösen von virtuellen Netzwerknamen
GB9718485D0 (en) A system and method for providing technical support of an electronic system through a web bios
CN102819461A (zh) 桌面同步方法、装置、设备及系统
CN104077162A (zh) 移动终端应用模板的更新、发布方法及装置
EP2842034B1 (en) Providing client and service compatibility through cloud-hosted adapters
CN102385580A (zh) 一种定制网页内容的方法和装置
CN109284412B (zh) 给音频数据配图的方法和装置
CN103678600A (zh) 网页数据的处理方法及设备
CN106973304A (zh) 基于云端的非线性剪辑方法、装置及系统
CN106230889A (zh) 移动应用业务组件资源管理方法及系统
CN108833482B (zh) Mdl文件自动下载方法、系统、计算机设备和存储介质
CN103647703B (zh) 一种浏览器进行通信的方法和一种浏览器终端
CN104298500A (zh) 在线自动生成并可以分享的电子相册App系统及方法
JP2006344134A (ja) 通信端末用画像作成方法及び装置並びにサービス
CN107395663B (zh) 数据获取方法及装置
CN103917951B (zh) 应用调用的方法及操作系统、浏览器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20180622

RJ01 Rejection of invention patent application after publication