文件
1.文件结构 文件结构类似VUE文件 扩展名为 .wpy
<template> <!--渲染模板 对应w --></template>< > // 脚本 对应 .js</ ><style> /*样式 对应 wxss*/</style>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', navigationBar Text: '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 () {} //自定义方法 () {} // 在Page和Component共用的生命周期函数 onShow () {} // 只在Page中存在的页面生命周期函数 config = {}; // 只在Page实例中存在的配置数据,对应于原生的page.json文件 data = {}; // 页面所需数据均需在这里声明,可用于模板数据绑定 components = {}; // 声明页面中所引用的组件,或声明组件中所引用的子组件 mixins = []; // 声明页面所引用的Mixin实例 computed = {}; // 声明计算属性(详见后文介绍) watch = {}; // 声明数据watcher(详见后文介绍) methods = {}; // 声明页面w 中标签的事件处理函数。注意,此处只用于声明页面w 中标签的bind、catch事件,自定义方法需以自定义方法的方式声明 events = {}; // 声明组件之间的事件处理函数}</ >- 声明为组件 页面 页面为 无组件页面或者 组件页面 声明类继承 ==wepy.page==
< > import wepy from 'wepy' export default class com extends wepy.component { customData = {} // 自定义数据 customFunction () {} //自定义方法 () {} // 在Page和Component共用的生命周期函数 config = {}; //只在Page实例中存在的配置数据,对应于原生的page.json文件 data = {}; // 页面所需数据均需在这里声明,可用于模板数据绑定 components = {}; // 声明页面中所引用的组件,或声明组件中所引用的子组件 mixins = []; // 声明页面所引用的Mixin实例 computed = {}; // 声明计算属性(详见后文介绍) watch = {}; // 声明数据watcher(详见后文介绍) methods = {}; // 声明页面w 中标签的事件处理函数。注意,此处只用于声明页面w 中标签的bind、catch事件,自定义方法需以自定义方法的方式声明 events = {}; // 声明组件之间的事件处理函数}</ >总结: 编译后上述三种类型对应生成各自的原生类型
json、 wxss、 js、 w 生成文件的文件名与wpy文件类名无关。类名仅对引用有关 例如类型为 Page的文件 index.wpy编译后会生成index.json、 index.wxss、 index.js、 index.w 类名可自行定义 约定 ==不要以$ _== 开头 类型声明与声明类的继承类型有关 app类 每个应用只能有一个 其他细节可阅读官方文档组件
一个组件可以引用零到多个组件被引用的组件需要在宿主组件注册 组件的引用是静态类型的 也就是一个组件如果对另一个组件多次引用 如果需要隔离必须对每次的引用进行唯一标识
组件 mo.wpy
<template> <view> <text @tap="clickMe">{{text}}</text> <text class="sub-text">{{domain. }}</text> </view></template>< > 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 ' } }; () { console.log('mo is loading now ') console.log(this.d) } }</ ><style> text { color: brown; } .sub-text { color: darkmagenta; font-size: larger; }</style>页面 test.wpy<style> view { margin: 0 auto; } .view-class { color: darkmagenta; font-family: "Fira Code Retina"; text-align: -webkit-center; text-transform: capitalize; font-weight: bolder; }</style>< > 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, : '第一'}, {id: 2, : '第二'}, {id: 3, : '第三'}], valueText: '', viewClass: 'view-class', customData: {customText: '父组件参数'} }; () { let { } = this.list[1] console.table(this.list) console.log(meths.sub( )) meths.concatStr('hello', 'world', 'wepy') }; methods = { inputChange(e) { this.valueText = e.detail.value } }; watch = { valueText(newValue, oldValue) { console.log(`num value: ${oldValue} -> ${newValue}`) } } };</ ><template> <view><input type="text" value="{{valueText}}" @input="inputChange"></view> <view>{{valueText}}</view> <repeat for="{{list}}" item="item"> <mo d="ssssssss" :domain="item"/> </repeat> <pro :n="viewClass" :valueText.sync="valueText"></pro></template>总结 其实非常类似于VUE 生命周期函数 类似于vue 的钩子函数 如果熟悉VUE的方式 这个应该很容易上手 当然与VUE还有一些不同 可对官方文档进行学习 第三章将对 数据绑定交互进行研究和简单的分析
原文发布时间为:2018年06月20日
原文作者:NotFound403
本文来源:开源中国 如需转载请联系原作者
继续阅读与本文标签相同的文章
上一篇 :
React中型项目的优化实践
下一篇 :
2018年最值得关注的30个Vue开源项目
-
浅解前端必须掌握的算法(一):冒泡排序
2026-06-02栏目: 教程
-
用react全家桶+antDesign写了一个习惯管理项目
2026-06-02栏目: 教程
-
前端开发-领域驱动设计
2026-06-02栏目: 教程
-
完美解决setInterval在浏览器切换时加速的问题
2026-06-02栏目: 教程
-
别上当!大部分AI企业都是蹭人工智能热点的!
2026-06-02栏目: 教程
