// app.json
{
pages:[
//page目录 / test文件
"pages/test/test" // 添加路径
]
}
/*
app.wxss 全局样式
iphone6实际宽度是750px,听的rpx是750rpx 750rpx === 100vw
1px = 2rpx
字体用px
*/
// 样式导入
// 使用@import语句可以导入外联样式表,@import后跟需要导入的外联样式表的相对路径,用;表示语句结束。
/** common.wxss **/
.small-p {
padding:5px;
}
/** app.wxss 全局样式 **/
@import "common.wxss"; // 导入样式
.middle-p {
padding:15px;
}
<view>view>
<button>button>
<images>images>
<block>block>
// index.js
Page({
data: {
text: 'This is page data.'
},
// 监听页面加载,这里发送请求
onLoad(options) {
},
// 监听页面初次渲染完成,用户可以开始操作
onReady() {
},
// 监听页面显示
onShow() {
},
// 监听隐藏
onHide() {
},
// 监听页面卸载,页面跳转或者子页面超过5个被卸载
onUnload() {
},
// 页面下拉动作,触发更新
onPullDownRefresh() {
},
// oage滚动到底部
onReachBottom() {
},
// 用户点击分享
onShareAppMessage() {
},
onPageScroll() {
},
onResize() {
},
onTabItemTap(item) {
}
})
导出
// common.js
function sayHello(name) {
console.log(`Hello ${
name} !`)
}
function sayGoodbye(name) {
console.log(`Goodbye ${
name} !`)
}
//多个
module.exports = {
sayHello
}
exports.sayGoodbye = sayGoodbye //单个
导入
const common = require('common.js')
Page({
helloMINA() {
common.sayHello('MINA')
},
goodbyeMINA() {
common.sayGoodbye('MINA')
}
})
Page({
data:{
msg:123
},
onLoad(){
this.setData({
msg:2222
})
}
})
<view wx:for="{
{ arr }}" wx:key="{
{ index }}">
{
{ index }}
{
{ item }}
view>
<view wx:for="{
{ arr }}" wx:for-item="selfItem" wx:for-item="selfIndex">
{
{ selfIndex }}
{
{ selfItem }}
view>
<view wx:for="{
{ arr }}" wx:key="{
{ index }}">
{
{ index }}
{
{ item }}
view>
<view wx:for="{
{ arr }}" wx:for-item="selfItem" wx:for-item="selfIndex">
{
{ selfIndex }}
{
{ selfItem }}
view>
<block wx:if="{true}">block>
created // 组件实例化,但节点树还未导入,因此这时不能用setData
attached // 节点树完成,可以用setData渲染节点,但无法操作节点
ready // (不是onReady) 组件布局完成,这时可以获取节点信息,也可以操作节点
moved // 组件实例被移动到树的另一个位置
detached // 组件实例从节点树中移除
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PsvgmK5j-1569935324908)(file:///C:/Users/MACHENIKE/Documents/My Knowledge/temp/877bdad7-b2dd-4329-9d8e-c24d495a9674/128/index_files/4e5aebc7-c36c-43b3-aa6d-d390071e3981.png)]
// headNav.json
{
"component": true,
"usingComponents": {
}
}
// headNav.js
// pages/index/index.js
Component({
/**
* 外部传入数值
*/
properties: {
abc:{
type:String, //值类型
value:'', //默认值
observer:'change' //数值改变相应函数
}
},
/**
* 数据
*/
data: {
navArr:[
{
txt: '推荐',url:'/pages/index/index'},
{
txt: '歌单', url: '/pages/menu/menu' },
{
txt: '搜索', url: '/pages/search/search'}
],
nowUrl:''
},
/**
* 组件实例化,但节点树还未导入,因此这时不能用setData
*/
created() {
var pages = getCurrentPages() //获取加载的页面
var currentPage = pages[pages.length - 1] //获取当前页面的对象
var nowUrl = currentPage.route //当前页面url
this.setData({
nowUrl })
console.log(this.data.nowUrl);
},
/**
* 组件的方法列表
*/
methods: {
change(){
}
}
})
// index.json
{
"usingComponents": {
//headNav组件名
"headNav": "../components/headNav/headNav"
}
}
<head-Nav>head-Nav>
<head-Nav id='header_nav'>head-Nav>
// index.js
Page({
//...
testClick(){
//通过获取id 调用下面的方法
this.selectComponent('#header_nav').goWhere(123);
}
})
//headNav.js
Component({
//....
methods: {
goWhere(e){
/*
发送数据父组件
接收事件名称 parentEvent
接收数据 data
*/
this.triggerEvent('parentEvent, 'sadsadsasd')
}
}
})
<head-Nav bind:parentEvent='onParentEvent'>head-Nav>
// pages/index/index.js
Page({
//...
onParentEvent(e){
console.log('子组件传递父组件');
}
})
Component({
options: {
multipleSlots: true // 在组件定义时的选项中启用多slot支持
},
properties: {
/* ... */ },
methods: {
/* ... */ }
})
<view class="wrapper">
<slot name="before">slot>
<view>这里是组件的内部细节view>
<slot name="after">slot>
view>
<view>
<component-tag-name>
<view slot="before">这里是插入到组件slot name="before"中的内容view>
<view slot="after">这里是插入到组件slot name="after"中的内容view>
component-tag-name>
view>
<wxs module="test">
var t = "hello";
function foo(n){
return n*2;
}
moudle.exports = {
t,
foo
}
wxs>
<text> {
{ test.t }} text>
<text> {
{ test.foo(2) }} text>
<wxs module="filter">
function codeTime(time){
var reg = getRegExp("(\d{4})-(\d{2})-(\d{2})(.*)");
return time.replace(reg,"$1/$2/$3");
}
module.exports = {
codeTime:codeTime
}
wxs>
<text> {
{ filter.codeTime('2018-02-03') }} text>
module
list
common.wxs
//common.wxs
function codeTime(time){
var reg = getRegExp("(\d{4})-(\d{2})-(\d{2})(.*)");
return time.replace(reg,"$1/$2/$3");
}
module.exports = {
codeTime:codeTime
}
<wxs src='../../list/common.wxs' module='filter' />
<text> {
{ filter.codeTime('2018-02-03') }} text>
//test.wxs
function addZore(num){
num *= 1;
return num<10?'0'+num:num;
}
module.exports = {
addZore:addZore
}
//common.wxs
var testModule = require('test.wxs');
function codeTime(time){
var reg = getRegExp("(\d{4})-(\d{2})-(\d{2})(.*)");
return time.replace(reg,"$1/$2/$3");
}
module.exports = {
codeTime,
addZore:testModule.addZore
}
var testModule = require('../../module/test/test.js')
Page(
Object.assign({
},testModule)
)
touchstart //手指触摸动作开始
touchmove //手指触摸后移动
touchend //手指触摸动作结束
tap //手指触摸后马上离开( 点击 )
touchcancel //手指触摸动作被打断,如来电提醒,弹窗
longpress //手指触摸后,超过350ms再离开,如果指定了事件回调函数并触发了这个事件,tap事件将不被触发
longtap //手指触摸后,超过350ms再离开(推荐使用longpress事件代替)
transitionend //会在 WXSS transition 或 wx.createAnimation 动画结束后触发
animationstart //会在一个 WXSS animation 动画开始时触发
animationiteration //会在一个 WXSS animation 一次迭代结束时触发
animationend //会在一个 WXSS animation 动画完成时触发
touchforcechange //在支持 3D Touch 的 iPhone 设备,重按时会触发
<view bindtap="handleTap1">事件绑定view>
<view catchtap="handleTap1">阻止冒泡view>
/*
changedTouches 手指的数组
changedTouches -> dataset 绑定在组件上的data属性
currentTarget 当前绑定事件的方法
detai 触发事件的位置
target 实际从哪个数组触发的事件(用于事件委托)
type 触发的事件类型
*/
wx.request({
url,success,fail,complete })
//complete 成功失败回调
wx.navigateTo({
url,success,fail,complete}) // 关闭当前页,打开子页面,不超过5个
wx.redirectTo({
url,success,fail,complete}) // 新开页面
wx.switchTab({
url,success,fail,complete}) //跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
wx.reLaunch({
url,success,fail,complete}) //关闭所有页面,打开到应用内的某个页面
//返回的页面数,如果 delta 大于现有页面数,则返回到首页。 number
wx.navigateBack({
delta,success,fail,complete}) //关闭当前页面,返回上一页面或多级页面
//app.json
{
"pages":[
"pages/home/list"
],
"window":{
}
}
window
/*
navigationBarBackgroundColor 导航栏背景颜色
navigationBarTextStyle 导航栏标题颜色 black / white
navigationBarTitleText 导航栏标题文字内容
backgroundColor 窗口的背景色
backgroundTextStyle 下拉 loading 的样式 dark / light
navigationStyle 导航栏样式,仅支持以下值:default 默认样式custom 自定义导航栏,只保留右上角胶囊按钮。
enablePullDownRefresh 是否开启全局的下拉刷新。
onReachBottomDistance 页面上拉触底事件触发时距页面底部距离,单位为px
pageOrientation 屏幕旋转设置 auto / portrait / landscape
backgroundColorTop 顶部窗口的背景色,仅 iOS 支持
backgroundColorBottom 底部窗口的背景色,仅 iOS 支持
*/
<navigator url="/pages/home/list?abc=22">navigator>
//App.js
App({
data:{
a:1},
onLaunch(option){
// option 场景值
}
})
//其他页面
const app = getApp();
Page({
onLoad(){
console.log(app)
}
})
var pages = getCurrentPages() // 获取加载的页面
var currentPage = pages[pages.length-1] // 获取当前页面的对象
var url = currentPage.route // 当前页面url