1.目录及文件构成

1.1 根目录下

  ** app.js 是小程序的脚本代码,用来监听并处理小程序的生命周期函数、声明全局变量。

  ** app.json 是对整个小程序的全局配置,配置小程序是由哪些页面组成,配置小程序的窗口背景颜色等。

  ** app.wxss 是整个小程序的公共样式表。

  其中 app.js 和 app.json 是必需的。

1.2 小程序页面是由同路径下同名但不同后缀的2 ~ 4个文件组成:

   ** .js后缀的文件是页面脚本文件,该文件实现页面逻辑与事件处理

  ** .json后缀的文件是页面配置文件。

  ** .wxss后缀的是页面样式表文件。

  ** .wxml后缀的文件是页面结构文件,该文件与.wxss文件一起构建出页面。

  其中 .js 和 .wxml文件是必需的。

2. 每个小程序包含一个描述整体程序的app实例和多个描述页面的page

  * 其中app由三个文件构成:
    ** 公共配置 app.json
    ** 公共样式 app.wxss
    ** 主体逻辑 app.js

  * 每个page最多由四个文件构成
    ** 页面配置 page.json
    ** 页面样式 page.wxss
    ** 页面结构 page.wxml
    ** 页面主体逻辑 page.js

  我们可以按需在app.js和page.js中添加程序在生命周期的每个阶段相应的事件。
  比如在页面onLoad的时候进行数据加载,onShow的时候进行数据的更新

  *** 怎么写js文件(注意:里面的涉及的实例都是js实例)

    * app.js首先写app构造方法,即App()
    这个构造方法里面的参数是一个js实例,即App({})
    参数实例里面有生命周期函数还有全局变量

    * page.js首先写page构造方法,即Page()
    这个构造方法里面的参数是一个js实例,即Page({})
    参数实例里面有data属性、生命周期函数、自定义的事件处理函数
    data属性的属性值也是一个js实例,即data:{}
    属性值实例里面也有属性和属性值,如data:{name:"wang",age:26}

  典型的app.js代码如下

  App({
      onLaunch:function(){
        //启动时执行的初始化工作
      },

      onShow:function(){
        //小程序启动或从后台进入前台时,触发执行的操作
      },

      onHide:function(){
        //小程序从前台进入后台时,触发执行的操作
      }

  })

  典型的一个页面page.js代码如下
  Page({
      date:{
        text:'This is page data'
      },

      onLoad:function(){
        //页面加载时执行的初始化工作
      },

      onReady:function(){
        //页面就绪后触发执行的操作
      },

      onShow:function(){
        //页面打开时,触发执行的操作
      }

      onHide:function(){
        //页面隐藏时,触发执行的操作
      }

  })

  *** 怎么写app.json文件(注意:里面的涉及的实例都是json实例)

    * 说起json,首先想到的是json实例,即{}
    * 既然是全局配置文件,那么首先想到的是pages属性,即{"pages":{}}
    属性值也是一个实例{},里面是逗号分隔的多个页面的路径字符串
    * 接着是window属性,即{"window":{}}
    属性值也是一个json实例,即{"页面窗口属性名称":"属性值"}
    * 再接着是tabBar属性,即{"tabBar":{}}
    属性值也是一个json实例,即{"标签页的表现":"属性值"}

  *** 怎么写page.wxml文件(类似html,写各种标签)
    * 使用组件
    * <view></view> <text></text>
    * 绑定数据 {{数据}} ,这些数据均来自于对应页面的.js文件中Page构造方法的data对象

    * 结合事件系统
    * 绑定事件的属性 bindtap

3.WXML具有数据绑定、列表渲染、条件渲染、模板及事件绑定的能力

  * 数据绑定

  <!-- demo.wxml -->
  <view>{{message}}</view>

  //demo.js
  Page({
    date:{message:"Hello MINA!"}
  })

  * 列表渲染

  <!-- demo.wxml -->
  <view wx:for="{{array}}">{{item}}</view>

  //demo.js
  Page({
    data:{
      array:[1,2,3,4,5]
    }
  })  

  * 条件渲染

  <!-- demo.wxml -->
  <view wx:if="{{view == 'WEBVIEW'}}"> WEBVIEW </view>
  <view wx:if="{{view == "APP"}}"> APP </view>
  <view wx:if="{{view == "MINA"}}">MINA</view>

  //demo.js
  Page({
    data:{
      view:"MINA"
    }
  })

  * 模板

  <!-- demo.wxml -->
  <template name="staffName">
    <view>
      FirstName:{{firstName}},lastName:{{lastName}}
    </view>
  </template>

  <template is="staffName" data="{{...staffA}}"></template>
  <template is="staffName" data="{{...staffB}}"></template>

  //demo.js
  Page({
    data:{
      staffA:{firstName:"Weiwei",lastName:"Hu"},
      staffB:{firstName:"tianhao",lastName:"Wang"}
    }
  })

  注:“...” 为扩展运算符,用它来展开一个对象,如staffA对象

  * 事件绑定

  <!-- demo.wxml -->
  <view bindtap="add">{{count}}</view>

  //demo.js
  Page({
    data:{
      count:1
    },
    add:function(){
      this.setData({
        count:this.data.count + 1
      })
    }
  })

4.引用

  WXML提供两种文件引用方式:import和include
  (1)import(引入的是模板)
  <!-- item.wxml -->
  <template name="item">
    <text>{{name}}</text>
  </template>

  在index.wxml中引用了item.wxml,就可以使用item模板了
  <import src="item.wxml"/>
  <template is="item" date="{{name:'图书馆'}}"/>

5.生命周期,每个页面第一次出现,都是经历onLoad-onShow-onReady,
如果页面跳转了,则会onHide,再返回出现就是onShow。如果页面被
重定向了,则会onUnload,以后不会再返回了。

6.页面导航组件:跳转

   wx.navigateTo(object):保留当前页面,跳转到应用内的某个页面。可以返回到原页面

  例如wx.navigateTo({url:"../index/index?name='wang'&age=26"})

  wx.redirectTo(object):关闭当前页面,跳转到应用内的某个页面。

  wx.navigateBack(objext):关闭当前页面,回退至前一页面。

  wx.switchTab(object):跳转tabBar页面并关闭其他所有非tabBar页面。

7.相对定位和绝对定位

   相对定位的元素是相对自身进行定位,参照物是自己 position=relative; top=50px;

   绝对定位的元素是相对离他最近的一个已定位的父级元素进行定位 position=absolute; top=50px;

8.<scroll-view>滚动区域组件

  属性:
   style="height:200px" :滚动区域的高度200px
   scroll-y="true" :纵向滚动条
   bindscroll="事件" :只要一滚动,就触发事件
   bindscrolltoupper="toupper" :向上滚动到顶部触发事件
   bindscrolltolower="tolower" :向下滚动到低部触发事件
   upper-threshold:"50" :默认向上滚动至离顶部50px时,触发bindscrolltoupper绑定的事件
   lower-threshold:"50" :默认向下滚动至离低部50px时,触发bindscrolltolower绑定的事件
   scroll-top="0" :设置滚动条一开始出现,到顶部的距离
   scroll-into-view="<scroll-view>的子元素的id" :滚动条一开始就会出现在id对应的子元素那里,子元素会出现在滚动区域的最顶部

微信小程序学习笔记(一)的更多相关文章

  1. 【微信小程序学习笔记】入门与了解

    [微信小程序学习笔记(一)] IDE 下载安装 下载地址 官方工具:https://mp.weixin.qq.com/debug/w … tml?t=1476434678461 下载可执行文件后,可按 ...

  2. 微信小程序学习笔记二 数据绑定 + 事件绑定

    微信小程序学习笔记二 1. 小程序特点概述 没有DOM 组件化开发: 具备特定功能效果的代码集合 体积小, 单个压缩包体积不能大于2M, 否则无法上线 小程序的四个重要的文件 *js *.wxml - ...

  3. 微信小程序学习笔记一 小程序介绍 & 前置知识

    微信小程序学习笔记一 1. 什么是小程序? 2017年度百度百科十大热词之一 微信小程序, 简称小程序, 英文名 Mini Program, 是一种不需要下载安装即可使用的应用 ( 张小龙对其的定义是 ...

  4. 微信小程序学习笔记(阶段一)

    一阶段学习过程: (一)看官方文档的简易教程:https://mp.weixin.qq.com/debug/wxadoc/dev/ (二)看小码哥视频:https://chuanke.baidu.co ...

  5. 微信小程序学习笔记以及VUE比较

    之前只是注册了一下微信小程序AppID,随便玩了玩HelloWorld!(项目起手式),但是最近看微信小程序/小游戏,崛起之势不可阻挡.小程序我来了!(果然,一入前端深似海啊啊啊啊啊~) 编辑器: S ...

  6. 微信小程序学习笔记1--小程序的代码构成

    最近打算学习一下微信小程序,看了微信公众平台的文档感觉还比较简单,就从这个方向重新找回学习的状态吧: 1.先了解一下小程序的代码构成: 创建项目后会看到四种后缀的文件: .json 后缀的 JSON ...

  7. 微信小程序学习笔记(三)

    一般setData方法多用于点击后改变页面信息或者刷新后与后台交互获取最新的信息 注意: 直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致 ...

  8. ubuntu18.04微信小程序学习笔记

    安装微信小程序开发工具 安装 https://github.com/cytle/wechat_web_devtools 创建快捷方式 sudo nautilus //在/usr/share/appli ...

  9. 微信小程序学习笔记(1)-微信小程序样式设置逻辑

    1.微信小程序的样式设置统一在每一页的.wxss的样式文件中,所有的样式设置代码统一写入这个文件中: 2.样式主要是通过.wxml里面控件的“class”属性来调用,此处调用会有几个细节要注意: 1) ...

  10. 微信小程序学习笔记(3)--------框架之配置

    我们使用app.json文件来对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设置网络超时时间.设置多 tab 等. app.json 配置项列表 属性 类型 必填 描述 pages Stri ...

随机推荐

  1. SpringSecurity 3.2入门(7)自定义权限控制介绍

    总结Spring Security的使用方法有如下几种: 一种是全部利用配置文件,将用户.权限.资源(url)硬编码在xml文件中. 二种是用户和权限用数据库存储,而资源(url)和权限的对应关系硬编 ...

  2. 【Q】类和对象:游戏角色开发(角色介绍)

    案例情景:某公司要开发新游戏,请用面向对象的思想设计英雄类.怪物类和武器类. 编写测试类,创建英雄对象.怪物对象和武器对象,并输出各自的信息. 其中设定分别如下: 1.英雄类 属性:英雄名字.生命值. ...

  3. Paxos、ZAB、RAFT协议

    这三个都是分布式一致性协议,ZAB基于Paxos修改后用于ZOOKEEPER协议,RAFT协议出现在ZAB协议之后,与ZAB差不多,也有很大区别. 1. Paxos 分布式节点分为3种角色, Prop ...

  4. js图片上传并预览

    <form id="addpic" class="easyui-form" method="post" enctype="m ...

  5. PAT 1066 Root of AVL Tree

    #include <cstdio> #include <cstdlib> class Node { public: Node* L; Node* R; int height; ...

  6. node:fs-extra模块

    var fs = require('fs-extra'); //复制 并会覆盖已有文件 fs.copy('./demo/index.html','./demo/index2.html' ,(err) ...

  7. height百分比以及高度自适应问题

    1.  你曾经是否说想要 高度占页面或者占div百分比无效的问题,相信你也搜索过了,就是说 需要 设置父亲父亲一直到祖宗html都要设置百分比,才有效果. 总之一句话:想用百分比设置他的高度,则它的父 ...

  8. 获取css样式,style、getComputedStyle及currentStyle的区别

    样式表有三种: 内嵌样式:<div id="box" style="color:red">box</div>,style写在html中的 ...

  9. solidity语言13

    函数过载 合约内允许定义同名函数,但是输入参数不一致 pragma solidity ^0.4.17; contract A { function f(uint _in) public pure re ...

  10. mysql 统计连续天数

    以下为例子数据 图1 图1 首先根据要求取出BeforeMeal要在7.0以下 并且 bingAfterMeal要在11.1以下 select AccountId,CreateTime from Di ...