1.生命周期
  1.onLoad():页面加载时触发,一个页面只加载一次。
  2.onShow():页面显示切换的时候触发
  3.onReady():页面初次渲染完成时触发。一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互
  4.onHide():页面卸载时触发
2. 小程序的框架:
  小程序框架有两个层,一是视图层,一是逻辑层。
  框架的视图层:

  1.由 WXML 与 WXSS 编写,由组件来进行展示。
  2.将逻辑层的数据反应成视图,同时将视图层的事件发送给逻辑层。
  3.WXML(WeiXin Markup language) 用于描述页面的结构。
  4.WXS(WeiXin Script) 是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构。
  5.WXSS(WeiXin Style Sheet) 用于描述页面的样式。
  6.组件(Component)是视图的基本组成单元。

  逻辑层:

  1、小程序开发框架的逻辑层由 JavaScript 编写。
  2、逻辑层将数据进行处理后发送给视图层,同时接受视图层的事件反馈。
  3、由于框架并非运行在浏览器中,所以 JavaScript 在 web 中一些能力都无法使用,如 document,window 等。
  4、开发者写的所有代码最终将会打包成一份 JavaScript,并在小程序启动的时候运行,直到小程序销毁。类似 ServiceWorker,所以逻辑层也称之为 App Service。

  注意:
  1.APP():表示的是注册程序,必须在app.js中注册,且不能注册多个。接收的是object参数,其指定小程序的生命周期函数等。
  2.Page():表示的是注册一个页面,接收的是object参数,其指定页面的初始数据、生命周期函数、事件处理函数。
  3.setData的使用:setData函用于将数据从逻辑层发送到视图层(异步),同时改变对应的this.data的值(同步)因此,直接修改this.data但是不调用this.setData()不改变页面的状态,造成数据不一致。this.setData()会触发视图的更新。

3.component组件:
  父子组件传值,需要在父组件的json文件中引用子组件
  

父组件:
  <view class="father">
  <son-compontent data="{{data}}" bind:clickTofather="clickTofather"></son-component>
  </view>
  子组件:
  <view class="son">{{data}}
  <button bindtap="click"></button>
  </view>
  son.js:
  <!--存放组件的属性列表-->
  properties: {
    data: {
      type: String, //定义数据的类型
      value: '' // 定义数据的初始值
    }
  },
  methods: {
    click(){
    this.triggerEvent('clickTofather')
    }
  }

4.template模板的使用:主要是用于展示,方法需要在使用template的页面中定义
  

template模板:
  <template name="example">
    <view> {{msg}}</view>
  </template>
.wxml文件:
  将模板引用进来:<import src="引入文件路径"/>
  <view>
    <!--用is="examplate"表示选择的模板-->
    <template is="example" data="{{...str}}"></template>
  </view>   data() {
    str: {
      index:,
      msg: 'this is a template'
    }
  }

5.小程序的跳转
  1.wx.navigateTo:当前页面不关闭,跳转的时候是打开新的页面,存在页面栈中,不过这个最多有10层,超10层页面就不跳转了。
  2.wx.navigateBAck:关闭当前页面,返回上一级或多级。delta表示返回的层数,使用方式如下:
  wx.navigateBack({
    delta:1
  })。
  但是,有时候我们想在返回的时候传递参数,我们该怎么办呢?
  当前页面:
  

let pages = getCurrentPages();
  let prevePages = pages[pages.length-];
  //给上一页面进行赋值
  prevePages.setData({
    id:
  })
  wx.navigateBack({
  delta: // 返回上一级页面。
  }

  返回页面:

onShow(){
    let pages = getCurrentPages()     let currentPage = pages[pages.length-]     if(currentPage.data.id!==undefined) {       this.setData({
        id: currentPage.data.id
      })
    }
  }

3.wx.redirectTo:关闭当前页面,跳转到新的页面。
4.wx.reLanuch:关闭所有页面,打开新的页面。
5.wx.switchTab:跳转到tabBar页面,并关闭所有非tabBar页面。
总结:除了wx.navigateBack这个api,其他的传参数都可以直接在url后面拼接
 js的构造函数
  构造函数的概念:当任意一个普通函数用于创建一类的对象的时候,就被称作构造函数。约定:构造函数首字母大写。
  ex:

定义一个构造函数:
function People(name, age) {
this.name =name,
this.age = age,
this.introduce = function () {
console.log("我叫"+ this.name)
}
}
声明实例:
var gmn = new People("gmn", )
var wrm = new People("wrm", )

这样子,解决了多个实例调用同一个方法的实例的问题,在项目里,我们可能会多次调用同一个方法的时候,我们就可以采用构造函数的方法。这样,可以减少重复的代码。
 class
1.通过关键字class,定义类.类相当于实例的原型,所有在类中定义的方法,都会被实例继承。
ex:

<!--定义类-->
class People{
  constructor(name, age) {
    this.name =name,
    this.age = age
  }
  introduce() {
    console.log("我叫"+ this.name)
  }
}
<!--创建实例-->
var gmn = new People()

2.constructor方法:是类的默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor()方法,如果没有显示定义,默认会添加一个空的constructor方法。

class Examplate {

}
等同于
class Examplate {
  constructor() {}
}

3.不存在变量提升:
  类不存在变量提升,必须先声明类,在调用类。
4.class 的静态方法---static
如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类调用,这就是静态方法。

class Foo {
static classMethod() {
  return 'hello';
}
}
Foo.classMethod() // 'hello'
var foo = new Foo();
foo.classMethod()
// TypeError: foo.classMethod is not a function

浅谈微信小程序一二的更多相关文章

  1. 浅谈微信小程序对于房地产行业的影响

    前几日,我们曾经整理过一篇文章是关于微信小程序对于在线旅游业的影响的一些反思(浅谈微信小程序对OTA在线旅游市场的影响),近日由于生活工作的需要走访了一些房地产的住宅商品房,突然想到微信小程序对于房地 ...

  2. 浅谈微信小程序对于创业者,意味着什么?

    尽管这个话题,有点儿烂大街,然而作为开发者兼创业人,兹以为很有必要为自己梳理一番. 多年前,当萌生创业的念头时,我是这样在脑海里绘制这幅蓝图的: 我需要一个域名,一个服务器,并且备了案. 我需要至少一 ...

  3. 浅谈微信小程序

    在如火如荼的互联网技术发展中,各种各样的框架出现,当下最受关注的应该就是微信小程序了.从新闻论坛乃至qq群.微信群,很多很多从事IT工作的朋友喜欢讨论研究这个小程序.带着好奇心,我也参与其中. 第一步 ...

  4. [转]浅谈微信小程序

    本文转自:http://www.cnblogs.com/liziyou/p/6340159.html 微信小程序 1.什么是小程序 小程序是指微信公众号平台小程序,小程序可以在微信内被便捷的获取和转播 ...

  5. 浅谈微信小程序生命周期

    之前在做微信小程序的时候,一直对生命周期里面的onLoad,onShow,onUnload不是很理解.比如说什么时候会触发onUnload. 经过一段时间的测试发现,普通页面的onUnload在三种情 ...

  6. 从前端界面开发谈微信小程序体验

    本文由云+社区发表 作者介绍:练小习,2011年加入搜狐,负责搜狐相册的产品策划与前端开发.2015年后加入腾讯 ISUX (社交用户体验设计部),目前主要负责腾讯云的UI开发工作,专注于人机交互,有 ...

  7. 也谈微信小程序

      小程序是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或者搜一下即可打开应用.也体现了"用完即走"的理念,用户不关心是否安装太 ...

  8. 杂文 | 金沙江创投朱啸虎谈微信小程序

    我一直在想怎么去描述和朱啸虎的聊天. 最简单的开头一定是说“独角兽捕手朱啸虎”看好小程序了,这个赛道蕴含了许多无比巨大.充沛的机会,所以约到朱啸虎同学深聊这个赛道的创业.但是这样的开头太平,不好玩.事 ...

  9. 浅谈vue,小程序,react基础绑定值

    最近一直在用react开发项目,碰见的问题千千万,很多,但是都殊途同源,唯一区别大的就是没有像vue的双向绑定,也没有小程序的单向方便,比如: vue   v-modal="msg" ...

随机推荐

  1. 防盗链之URL参数签名

    一.概述 传统的 IP 禁用.referer 防盗链.User-Agent 防盗链.地区访问控制等防盗链措施已经无法完全满足用户要求,所以开发出URL参数签名方式来防盗链 二.实现 Token防盗链是 ...

  2. kafka 重新分配partition

    登陆kafka manager 进入相关topic 点击generate partition assignments 点击reassign partirons

  3. [insight] debug

    python: 1. print理解流程 print('xy1') print('xy2') 可以更好地跟踪函数的执行流程,分析代码 2. 用python库 import pdb; pdb.set_t ...

  4. 【easy】437. Path Sum III 二叉树任意起始区间和

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...

  5. Tensorflow笔记二

    MNIST手写体识别 (Mixed National Institute of Standards and Technology database)的28*28字符识别共0-9类. 在ipython命 ...

  6. VMware虚拟机安装WIN7

    VMware在IT工作人员的学习之中,使用的较多,故聊一聊VMware中WIN7的安装: 第一步:安装VMware,这个软件百度就可以下载,但是是收费软件,注册码可以百度到. 第二步:VMware安装 ...

  7. 图像识别与OpenCV——Mat类与Mat_类的内存管理

    Mat_类是对Mat类的一个包装,其定义如下: template<typename _Tp> class Mat_ : public Mat { public: //只定义了几个方法 // ...

  8. 第三次java作业

    编写“学生”类及其测试类. 5.1 “学生”类: ² 类名:Student ² 属性:姓名.性别.年龄.学号.5门课程的成绩 ² 方法1:在控制台输出各个属性的值. ² 方法2:计算平均成绩 ² 方法 ...

  9. Rafy 框架 - 时间戳插件

    本文将解释 Rafy 框架中的时间戳插件的场景.使用方法.原理. 场景 在开发各类数据库应用系统时,业务领域实体往往需要包含"创建时间"."最后更新时间".&q ...

  10. 仓位管理 V4.3

    之前设计的仓位管理算法一直比较有效,往往能在市场的不断的上涨下跌中获利.不过感觉短期变动的仓位占整体的仓位较低,使得盈利较低.所以这个月对仓位管理算法进行了升级,尝试了几个版本.这里做一个记录. V4 ...