Linux应用程序组件化开发,微信小程序组件化开发框架wepy 学习(二)

文件

1.文件结构 文件结构类似VUE文件 扩展名为 .wpy

// 脚本 对应 .js

/*样式 对应 wxss*/

2.文件类型 文件类型声明与

声明为app 入口 即 原生 app.js 只能声明一个 声明类继承 ==wepy.app==

import wepy from 'wepy'

import 'wepy-async-function'

export default class extends wepy.app {

//config app.json 你新增一个页面 都要配置pages

config = {

pages: [

'pages/test'

],

window: {

backgroundTextStyle: 'light',

navigationBarBackgroundColor: '#fff',

navigationBarTitleText: 'WeChat',

navigationBarTextStyle: 'black'

}

}

// 全局数据对象

globalData = {

userInfo: null

}

// 构造器 使用了 requestfix 优化 不用可以忽略

constructor () {

super()

this.use('requestfix')

}

// 生命周期函数 自定义函数

onLaunch() {}

}

声明为page 页面 页面为 无组件页面或者 组件页面 声明类继承 ==wepy.page==

import wepy from 'wepy'

export default class Test extends wepy.page {

customData = {} // 自定义数据

customFunction () {} //自定义方法

onLoad () {} // 在Page和Component共用的生命周期函数

onShow () {} // 只在Page中存在的页面生命周期函数

config = {}; // 只在Page实例中存在的配置数据,对应于原生的page.json文件

data = {}; // 页面所需数据均需在这里声明,可用于模板数据绑定

components = {}; // 声明页面中所引用的组件,或声明组件中所引用的子组件

mixins = []; // 声明页面所引用的Mixin实例

computed = {}; // 声明计算属性(详见后文介绍)

watch = {}; // 声明数据watcher(详见后文介绍)

methods = {}; // 声明页面wxml中标签的事件处理函数。注意,此处只用于声明页面wxml中标签的bind、catch事件,自定义方法需以自定义方法的方式声明

events = {}; // 声明组件之间的事件处理函数

}

声明为组件 页面 页面为 无组件页面或者 组件页面 声明类继承 ==wepy.page==

import wepy from 'wepy'

export default class com extends wepy.component {

customData = {} // 自定义数据

customFunction () {} //自定义方法

onLoad () {} // 在Page和Component共用的生命周期函数

config = {}; //只在Page实例中存在的配置数据,对应于原生的page.json文件

data = {}; // 页面所需数据均需在这里声明,可用于模板数据绑定

components = {}; // 声明页面中所引用的组件,或声明组件中所引用的子组件

mixins = []; // 声明页面所引用的Mixin实例

computed = {}; // 声明计算属性(详见后文介绍)

watch = {}; // 声明数据watcher(详见后文介绍)

methods = {}; // 声明页面wxml中标签的事件处理函数。注意,此处只用于声明页面wxml中标签的bind、catch事件,自定义方法需以自定义方法的方式声明

events = {}; // 声明组件之间的事件处理函数

}

总结: 编译后上述三种类型对应生成各自的原生类型 json、 wxss、 js、 wxml 生成文件的文件名与wpy文件类名无关。类名仅对引用有关 例如类型为 Page的文件 index.wpy编译后会生成index.json、 index.wxss、 index.js、 index.wxml 类名可自行定义 约定 ==不要以$ _== 开头 类型声明与声明类的继承类型有关 app类 每个应用只能有一个 其他细节可阅读官方文档

组件

一个组件可以引用零到多个组件被引用的组件需要在宿主组件注册 组件的引用是静态类型的 也就是一个组件如果对另一个组件多次引用 如果需要隔离必须对每次的引用进行唯一标识

组件 mo.wpy

{{text}}

{{domain.title}}

import wepy from 'wepy'

// 引入组件

import PropData from '@/components/propData'

export default class mo extends wepy.component {

// 组件引用组件 如果PropData多次被引用而且希望相互隔离 key 要保持唯一

components = { pro: PropData};

props = {

d: String

};

data = {

text: 'this is demo'

};

methods = {

clickMe() {

this.text = ' click it '

}

};

onLoad() {

console.log('mo is loading now ')

console.log(this.d)

}

}

text {

color: brown;

}

.sub-text {

color: darkmagenta;

font-size: larger;

}

页面 test.wpy

view {

margin: 0 auto;

}

.view-class {

color: darkmagenta;

font-family: "Fira Code Retina";

text-align: -webkit-center;

text-transform: capitalize;

font-weight: bolder;

}

import meths from '@/js/charts.js'

import wepy from 'wepy'

// 组件引入

import Mo from '@/components/mo'

import PropData from '@/components/propData'

export default class Test extends wepy.page {

config = {};

// 组件注册 如果Mo多次被引用而且希望相互隔离 key 要保持唯一

components = {mo: Mo, pro: PropData};

data = {

list: [{id: 1, title: '第一'}, {id: 2, title: '第二'}, {id: 3, title: '第三'}],

valueText: '',

viewClass: 'view-class',

customData: {customText: '父组件参数'}

};

onLoad() {

let {title} = this.list[1]

console.table(this.list)

console.log(meths.sub(title))

meths.concatStr('hello', 'world', 'wepy')

};

methods = {

inputChange(e) {

this.valueText = e.detail.value

}

};

watch = {

valueText(newValue, oldValue) {

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

}

}

};

{{valueText}}

总结 其实非常类似于VUE 生命周期函数 类似于vue 的钩子函数 如果熟悉VUE的方式 这个应该很容易上手 当然与VUE还有一些不同 可对官方文档进行学习 第三章将对 数据绑定交互进行研究和简单的分析

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值