mina:running_environment
差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
| mina:running_environment [2020/08/24 12:50] – [API] sabertoy | mina:running_environment [2020/08/25 23:32] (当前版本) – [3.4 代码案例] sabertoy | ||
|---|---|---|---|
| 行 8: | 行 8: | ||
| 框架的核心是一个响应的数据绑定系统,可以让数据与视图非常简单地保持同步。当做数据修改的时候,< | 框架的核心是一个响应的数据绑定系统,可以让数据与视图非常简单地保持同步。当做数据修改的时候,< | ||
| - | ===== -#2 程序 ===== | + | ===== -#2 程序 |
| 1.微信客户端在打开小程序之前,会把整个小程序的代码包下载到本地。 | 1.微信客户端在打开小程序之前,会把整个小程序的代码包下载到本地。 | ||
| 行 35: | 行 35: | ||
| </ | </ | ||
| - | 整个小程序只有一个 App 实例,是全部页面共享的,更多的事件回调参考文档[[https:// | + | ==== - 注册小程序 |
| + | |||
| + | 每个小程序都需要在 app.js 中调用 | ||
| <code javascript> | <code javascript> | ||
| 行 63: | 行 65: | ||
| console.log(appInstance.globalData) // I am global data | console.log(appInstance.globalData) // I am global data | ||
| </ | </ | ||
| - | ===== -#3 页面 ===== | ||
| - | 一个小程序页面由四个文件组成 \\ | + | ==== - 注册页面 |
| - | - js 页面逻辑 | + | |
| - | - wxml 页面结构 | + | |
| - | - json页面配置 | + | |
| - | | + | |
| - | 微信客户端会先根据 logs.json 配置生成一个界面,顶部的颜色和文字你都可以在这个 json 文件里边定义好。紧接着客户端就会装载这个页面的 WXML 结构和 WXSS 样式。最后客户端会装载 logs.js,你可以看到 logs.js 的大体内容就是: | + | 简单的页面可以使用 Page() 进行构造。 |
| <code javascript> | <code javascript> | ||
| - | | + | // |
| - | data: { // 参与页面渲染的数据 | + | Page({ |
| - | logs: [] | + | data: { |
| - | }, | + | |
| - | | + | }, |
| - | // 页面渲染后 执行 | + | onLoad: function(options) |
| - | } | + | |
| - | }) | + | }, |
| + | onShow: function() { | ||
| + | | ||
| + | | ||
| + | | ||
| + | // 页面首次渲染完毕时执行 | ||
| + | }, | ||
| + | onHide: function() { | ||
| + | // 页面从前台变为后台时执行 | ||
| + | }, | ||
| + | onUnload: function() { | ||
| + | | ||
| + | | ||
| + | | ||
| + | // 触发下拉刷新时执行 | ||
| + | }, | ||
| + | onReachBottom: | ||
| + | // 页面触底时执行 | ||
| + | }, | ||
| + | onShareAppMessage: | ||
| + | // 页面被用户分享时执行 | ||
| + | }, | ||
| + | onPageScroll: | ||
| + | // 页面滚动时执行 | ||
| + | }, | ||
| + | onResize: function() { | ||
| + | // 页面尺寸变化时执行 | ||
| + | }, | ||
| + | onTabItemTap(item) { | ||
| + | // tab 点击时执行 | ||
| + | console.log(item.index) | ||
| + | console.log(item.pagePath) | ||
| + | console.log(item.text) | ||
| + | }, | ||
| + | // 事件响应函数 | ||
| + | viewTap: function() { | ||
| + | this.setData({ | ||
| + | text: 'Set some data for updating view.' | ||
| + | }, function() { | ||
| + | // this is setData callback | ||
| + | }) | ||
| + | }, | ||
| + | // 自由数据 | ||
| + | customData: { | ||
| + | hi: ' | ||
| + | } | ||
| + | }) | ||
| </ | </ | ||
| - | 在渲染完界面之后,页面实例就会收到一个 onLoad 的回调,你可以在这个回调处理你的逻辑。 \\ | + | |
| - | [[https:// | + | ==== - 生命周期 ==== |
| - | ===== -#4 组件 ===== | + | ==== - 页面路由 |
| - | [[https:// | + | 框架以< |
| - | ==== - 什么是组件 | + | ==== - 模块化 |
| - | * 组件是视图层的基本组成单元。 | + | 可以将一些公共的代码抽离成为一个单独的 js 文件,作为一个模块。模块只有通过 module.exports 或者 exports 才能对外暴露接口。 |
| - | * 组件自带一些功能与微信风格的样式。 | + | |
| - | * 一个组件通常包括< | + | |
| - | <code xml> | + | *更推荐开发者采用 module.exports 来暴露模块接口 |
| - | <tagname property=" | + | |
| - | Content goes here ... | + | |
| - | </ | + | |
| - | </ | + | |
| - | + | ||
| - | ==== - 代码案例 ==== | + | |
| - | + | ||
| - | 例如,你需要在界面上显示地图,你只需要这样写即可:\\ | + | |
| <code javascript> | <code javascript> | ||
| - | < | + | // common.js |
| - | </code> | + | function sayHello(name) { |
| + | console.log(`Hello ${name} !`) | ||
| + | } | ||
| + | function sayGoodbye(name) { | ||
| + | console.log(`Goodbye ${name} !`) | ||
| + | } | ||
| - | 使用组件的时候,还可以通过< | + | module.exports.sayHello = sayHello |
| + | exports.sayGoodbye = sayGoodbye | ||
| + | </code> | ||
| - | <code javascript> | + | 在需要使用这些模块的文件中,使用 require 将公共代码引入 |
| - | <map longitude=" | + | |
| - | </ | + | |
| - | + | ||
| - | 用户点击了地图上的某个标记,你可以在 js 编写 markertap 函数来处理: | + | |
| <code javascript> | <code javascript> | ||
| - | <map bindmarkertap=" | + | var common |
| - | </ | + | Page({ |
| + | helloMINA: function() { | ||
| + | common.sayHello(' | ||
| + | }, | ||
| + | goodbyeMINA: | ||
| + | common.sayGoodbye(' | ||
| + | } | ||
| + | }) | ||
| + | </ | ||
| + | ==== - API ==== | ||
| - | ===== - API ===== | + | [[mina: |
| 要获取用户的地理位置时,只需要: | 要获取用户的地理位置时,只需要: | ||
| 行 164: | 行 209: | ||
| 2.我们约定,以 Sync 结尾的 API 都是同步 API \\ | 2.我们约定,以 Sync 结尾的 API 都是同步 API \\ | ||
| 3.大多数 API 都是异步 API,如 wx.request,wx.login 等。这类 API 接口通常都接受一个 Object 类型的参数 | 3.大多数 API 都是异步 API,如 wx.request,wx.login 等。这类 API 接口通常都接受一个 Object 类型的参数 | ||
| + | |||
| + | ===== -#3 页面 渲染层===== | ||
| + | |||
| + | 一个小程序页面由四个文件组成 \\ | ||
| + | - js 页面逻辑 | ||
| + | - wxml 页面结构 | ||
| + | - json页面配置 | ||
| + | - wxss 页面样式表 | ||
| + | |||
| + | 微信客户端会先根据 logs.json 配置生成一个界面,顶部的颜色和文字你都可以在这个 json 文件里边定义好。紧接着客户端就会装载这个页面的 WXML 结构和 WXSS 样式。最后客户端会装载 logs.js,你可以看到 logs.js 的大体内容就是: | ||
| + | |||
| + | <code javascript> | ||
| + | Page({ | ||
| + | data: { // 参与页面渲染的数据 | ||
| + | logs: [] | ||
| + | }, | ||
| + | onLoad: function () { | ||
| + | // 页面渲染后 执行 | ||
| + | } | ||
| + | }) | ||
| + | </ | ||
| + | |||
| + | 在渲染完界面之后,页面实例就会收到一个 onLoad 的回调,你可以在这个回调处理你的逻辑。 \\ | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | ==== - wxml 页面结构 ==== | ||
| + | |||
| + | WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件、事件系统,可以构建出< | ||
| + | |||
| + | | ||
| + | | ||
| + | |||
| + | === - 模板 === | ||
| + | |||
| + | <code xml> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | FirstName: {{firstName}}, | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <code javascript> | ||
| + | // page.js | ||
| + | Page({ | ||
| + | data: { | ||
| + | staffA: {firstName: ' | ||
| + | staffB: {firstName: ' | ||
| + | staffC: {firstName: ' | ||
| + | } | ||
| + | }) | ||
| + | </ | ||
| + | |||
| + | ==== - WXSS ==== | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== - 组件 ==== | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | === - 什么是组件 === | ||
| + | |||
| + | * 组件是视图层的基本组成单元。 | ||
| + | * 组件自带一些功能与微信风格的样式。 | ||
| + | * 一个组件通常包括< | ||
| + | |||
| + | <code xml> | ||
| + | <tagname property=" | ||
| + | Content goes here ... | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | === - 代码案例 === | ||
| + | |||
| + | 例如,你需要在界面上显示地图,你只需要这样写即可:\\ | ||
| + | |||
| + | <code javascript> | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | 使用组件的时候,还可以通过< | ||
| + | |||
| + | <code javascript> | ||
| + | <map longitude=" | ||
| + | </ | ||
| + | |||
| + | 用户点击了地图上的某个标记,你可以在 js 编写 markertap 函数来处理: | ||
| + | |||
| + | <code javascript> | ||
| + | <map bindmarkertap=" | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
mina/running_environment.1598244600.txt.gz · 最后更改: 2020/08/24 12:50 由 sabertoy
