1.初始化wepy项目
-
安装脚手架
- npm install -g wepy-cli
- wepy init standard my-project
-
切换至项目目录
- 初始化项目 npm install
-
开启实时编译
- wepy build --watch
2.小程序生命周期
onLoad: 页面加载
一个页面只会调用一次。
接收页面参数 可以获取wx.navigateTo和wx.redirectTo及<navigator/>中的 query。
onShow: 页面显示
每次打开页面都会调用一次。
onReady: 页面初次渲染完成
一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。
onHide: 页面隐藏
当navigateTo或底部tab切换时调用。
onUnload: 页面卸载
当redirectTo或navigateBack的时候调用。
3 原生小程序要求app实例必须有3个文件:app.js、app.json、app.wxss,而page页面则一般有4个文件:page.js、page.json、page.wxml、page.wxss
project
└── src
├── pages
| ├── index.wpy index 页面逻辑、配置、结构、样式
| └── log.wpy log 页面逻辑、配置、结构、样式
└──app.wpy
也就是app.wpy 主要是做入口文件,pages是页面集成
import wepy from 'wepy';
// 声明一个App小程序实例,小程序入口文件
export default class MyAPP extends wepy.app {
}
// 声明一个Page页面实例,小程序页面
export default class IndexPage extends wepy.page {
}
// 声明一个Component组件实例,开发小程序组件
export default class MyComponent extends wepy.component {
}
4 组件化。类似VUE组件文件的编写
1.我们需要了解父子组件如何传值 属性值可以使用props 来传值。子组件用props来接收值。
Vue.component('blog-post', {
props: ['title'],
template: '<h3>{{ title }}</h3>'
})
new Vue({
el: '#blog-post-demo',
data: {
posts: [
{ id: 1, title: 'My journey with Vue' },
{ id: 2, title: 'Blogging with Vue' },
{ id: 3, title: 'Why Vue is so fun' }
]
}
})
<blog-post
v-for="post in posts"
v-bind:key="post.id"
v-bind:title="post.title"
></blog-post>
组件的事件,可以使用 $emit 来触发父组件上的方法!
5.在组件上使用 v-model
当用在组件上时,v-model 则会这样:
<custom-input
v-bind:value="searchText"
v-on:input="searchText = $event"
></custom-input>
为了让它正常工作,这个组件内的 <input> 必须:
- 将其 value 特性绑定到一个名叫 value 的 prop 上
- 在其 input 事件被触发时,将新的值通过自定义的 input 事件抛
Vue.component('custom-input', {
props: ['value'],
template: `
<input
v-bind:value="value"
v-on:input="$emit('input', $event.target.value)"
>
`
})
在vue里面还提出了动态组件的概念 keep-alive,相当于是保留了当前组件的状态。参考资料
6. 通过插槽分发内容
<a
v-bind:href="url"
class="nav-link"
>
<slot></slot>
</a>
我理解的就是slot就是dom的插槽,就是把dom元素放在固定的位置。
7 wepy常用API
- this.$apply() 动态改变数据,重新渲染。
- $invoke("组件路径",“组件对应的方法”)
- 路由的应用 this.$root.navigation({url:'.....'})
- showtoast 调起toast 提示框