- 浏览: 496399 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (502)
- Java (70)
- Linux (10)
- 数据库 (38)
- 网络 (10)
- WEB (13)
- JSP (4)
- 互联网 (71)
- JavaScript (30)
- Spring MVC (19)
- HTML (13)
- CSS (3)
- AngularJS (18)
- Redis (5)
- Bootstrap CSS (1)
- ZooKeeper (4)
- kafka (6)
- 服务器缓存 (4)
- Storm (1)
- MongoDB (9)
- Spring boot (16)
- log4j (2)
- maven (3)
- nginx (5)
- Tomcat (2)
- Eclipse (4)
- Swagger (2)
- Netty (5)
- Dubbo (1)
- Docker (7)
- Hadoop (12)
- OAuth (1)
- webSocket (4)
- 服务器性能 (7)
- Session共享 (1)
- tieye修改 (1)
- 工作 (1)
- 有用的语录 (0)
- https (2)
- common (5)
- 产品开发管理 (1)
- CDN 工作原理 (1)
- APNS、GCM (1)
- 架构图 (3)
- 功能实现分析 (1)
- JMX (1)
- 服务器相关操作命令 (1)
- img02 (0)
- 服务器环境搭建 (9)
- goodMenuBook (1)
- CEInstantPot (0)
- 有用数据 (1)
- 百度地图WEB API (2)
- 正则表达式 (1)
- 样式例子 (2)
- staticRecipePressureCooker.zip (1)
- jCanvas (1)
- 网站攻击方法原理 (1)
- 架构设计 (3)
- 物联网相关 (3)
- 研发管理 (7)
- 技术需求点 (1)
- 计划 (1)
- spring cloud (11)
- 服务器开发的一些实用工具和方法 (1)
- 每天学到的技术点 (4)
- Guava (1)
- ERP 技术注意要点 (2)
- 微信小程序 (1)
- FineRepor (1)
- 收藏夹 (1)
- temp (5)
- 服务架构 (4)
- 任职资格方案 (0)
- osno_test (1)
- jquery相关 (3)
- mybatis (4)
- ueditor (1)
- VueJS (7)
- python (10)
- Spring EL (1)
- shiro (1)
- 前端开发原理与使用 (7)
- YARN (1)
- Spark (1)
- Hbase (2)
- Pig (2)
- 机器学习 (30)
- matplotlib (1)
- OpenCV (17)
- Hystrix (1)
- 公司 (1)
- miniui (4)
- 前端功能实现 (3)
- 前端插件 (1)
- 钉钉开发 (2)
- Jenkins (1)
- elasticSearch使用 (2)
- 技术规范 (4)
- 技术实现原理 (0)
最新评论
微信小程序分析
框架
1.框架提供了自己的视图层描述语言WXML(描述页面的结构)和WXSS(描述页面的样式),以及基于JavaScript(逻辑处理)的逻辑层框架
2.在视图层与逻辑层间提供了数据传输(进行数据)和事件系统,可以让开发者可以方便的聚焦于数据与逻辑上。
3.整个系统分为两块视图层(View)和逻辑层(App Service)
4.框架可以让数据与视图非常简单地保持同步。当做数据修改的时候,只需要在逻辑层修改数据,视图层就会做相应的更新。
5.框架提供丰富的微信原生API,可以方便的调起微信提供的能力,如获取用户信息,本地存储,支付功能等。
6.框架管理了整个小程序的页面路由,可以做到页面间的无缝切换,并给以页面完整的生命周期。开发者需要做的只是将页面的数据,方法,生命周期函数注册进框架中,其他的一切复杂的操作都交由框架处理。
7.框架提供了一套基础的组件,这些组件自带微信风格的样式以及特殊的逻辑,开发者可以通过组合基础组件,创建出强大的微信小程序 。
文件结构
1.小程序包含一个描述整体程序的 app 和多个描述各自页面的 page。
2.一个小程序主体部分由三个文件组成,必须放在项目的根目录,
app.js //小程序逻辑
app.json //小程序公共设置
app.wxss //小程序公共样式表
3.一个框架页面由四个文件组成
js //页面逻辑
wxml //页面结构
wxss //页面样式表
json //页面配置
注意:为了方便开发者减少配置项,我们规定描述页面的这四个文件必须具有相同的路径与文件名。
app.json分析
{
//设置页面路径
//每一项代表对应页面的【路径+文件名】信息,数组的第一项代表小程序的初始页面。小程序中新增/减少页面,都需要对 pages 数组进行修改。
//文件名不需要写文件后缀,因为框架会自动去寻找路径.json,.js,.wxml,.wxss的四个文件进行整合。
"pages": [
"pages/index/index",
"pages/logs/index"
],
//设置默认页面的窗口表现
//用于设置小程序的状态栏、导航条、标题、窗口背景色。
"window": {
"navigationBarTitleText": "Demo"
},
//设置底部 tab 的表现
//如果我们的小程序是一个多 tab 应用(客户端窗口的底部有tab栏可以切换页面),那么我们可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面。
//1. 当设置 position 为 top 时,将不会显示 icon
//2. tabBar 是一个数组,只能配置最少2个、最多5个 tab,tab 按数组的顺序排序。
"tabBar": { //设置底部 tab 的表现
"list": [{
"pagePath": "pages/index/index",
"text": "首页"
}, {
"pagePath": "pages/logs/logs",
"text": "日志"
}]
},
//可以设置各种网络请求的超时时间。
"networkTimeout": { //设置网络超时时间
"request": 10000,
"downloadFile": 10000
},
//可以在开发者工具中开启 debug 模式,在开发者工具的控制台面板,调试信息以 info 的形式给出,其信息有Page的注册,页面路由,数据更新,事件触发 。可以帮助开发者快速定位一些常见的问题。
"debug": true //设置是否开启 debug 模式
}
逻辑层(App Service)
1.每个页面有独立的作用域,并提供模块化能力。
2.由于框架并非运行在浏览器中,所以 JavaScript 在 web 中一些能力都无法使用,如 document,window 等。
注册程序 App()函数
App()函数用来注册一个小程序。接受一个object参数,其指定小程序的生命周期函数等。
小程序运行的时候会加载这个文件,表示这个小程序的实例
全局的getApp()函数,可以获取到小程序实例。//在页面的js文件中,可以用这个函数得到这个小程序实例,有了实例就可以访问实例里的相关数据
var appInstance = getApp()
console.log(appInstance.globalData) // I am global data
注意:
App()必须在app.js中注册,且不能注册多个。
不要在定义于App()内的函数中调用getApp(),使用this就可以拿到app实例。
不要在onLaunch的时候调用getCurrentPage(),此时page还没有生成。
通过getApp()获取实例之后,不要私自调用生命周期函数。
注册页面 Page()函数,就是小程序实例读取这个文件,向这个实例里注册一个页面。
Page() 函数用来注册一个页面。
Page.prototype.route
route 字段可以获取到当前页面的路径。
Page.prototype.setData()
setData 函数用于将数据从逻辑层发送到视图层,同时改变对应的 this.data 的值。
页面路由
在小程序中所有页面的路由全部由框架进行管理。
getCurrentPages()
getCurrentPages()函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。
模块化
在JavaScript文件中声明的变量和函数只在该文件中有效;不同的文件中可以声明相同名字的变量和函数,不会互相影响。
通过全局函数getApp()可以获取全局的应用实例,如果需要全局的数据可以在App()中设置,
我们可以将一些公共的代码抽离成为一个单独的js文件,作为一个模块。模块只有通过module.exports或者 exports才能对外暴露接口。
// common.js
function sayHello(name) {
console.log('Hello ${name} !')
}
function sayGoodbye(name) {
console.log('Goodbye ${name} !')
}
module.exports.sayHello = sayHello
exports.sayGoodbye = sayGoodbye
在需要使用这些模块的文件中,使用require(path)将公共代码引入。
var common = require('common.js')
Page({
helloMINA: function() {
common.sayHello('MINA')
}
goodbyeMINA: function() {
common.sayGoodbye('MINA')
}
})
数据绑定
<view> {{message}} </view> //用{{}}
// page.js
Page({
data: {
message: 'Hello MINA!'
}
})
<view id="item-{{id}}"> </view> //组件属性(需要在双引号之内)
<view wx:if="{{condition}}"> </view> //控制属性(需要在双引号之内)
<checkbox checked="{{false}}"> </checkbox>//关键字(需要在双引号之内)
三元运算
<view hidden="{{flag ? true : false}}"> Hidden </view>
算数运算
<view> {{a + b}} + {{c}} + d </view>
逻辑判断
<view wx:if="{{length > 5}}"> </view>
字符串运算
<view>{{"hello" + name}}</view>
数据路径运算
<view>{{object.key}} {{array[0]}}</view>
框架
1.框架提供了自己的视图层描述语言WXML(描述页面的结构)和WXSS(描述页面的样式),以及基于JavaScript(逻辑处理)的逻辑层框架
2.在视图层与逻辑层间提供了数据传输(进行数据)和事件系统,可以让开发者可以方便的聚焦于数据与逻辑上。
3.整个系统分为两块视图层(View)和逻辑层(App Service)
4.框架可以让数据与视图非常简单地保持同步。当做数据修改的时候,只需要在逻辑层修改数据,视图层就会做相应的更新。
5.框架提供丰富的微信原生API,可以方便的调起微信提供的能力,如获取用户信息,本地存储,支付功能等。
6.框架管理了整个小程序的页面路由,可以做到页面间的无缝切换,并给以页面完整的生命周期。开发者需要做的只是将页面的数据,方法,生命周期函数注册进框架中,其他的一切复杂的操作都交由框架处理。
7.框架提供了一套基础的组件,这些组件自带微信风格的样式以及特殊的逻辑,开发者可以通过组合基础组件,创建出强大的微信小程序 。
文件结构
1.小程序包含一个描述整体程序的 app 和多个描述各自页面的 page。
2.一个小程序主体部分由三个文件组成,必须放在项目的根目录,
app.js //小程序逻辑
app.json //小程序公共设置
app.wxss //小程序公共样式表
3.一个框架页面由四个文件组成
js //页面逻辑
wxml //页面结构
wxss //页面样式表
json //页面配置
注意:为了方便开发者减少配置项,我们规定描述页面的这四个文件必须具有相同的路径与文件名。
app.json分析
{
//设置页面路径
//每一项代表对应页面的【路径+文件名】信息,数组的第一项代表小程序的初始页面。小程序中新增/减少页面,都需要对 pages 数组进行修改。
//文件名不需要写文件后缀,因为框架会自动去寻找路径.json,.js,.wxml,.wxss的四个文件进行整合。
"pages": [
"pages/index/index",
"pages/logs/index"
],
//设置默认页面的窗口表现
//用于设置小程序的状态栏、导航条、标题、窗口背景色。
"window": {
"navigationBarTitleText": "Demo"
},
//设置底部 tab 的表现
//如果我们的小程序是一个多 tab 应用(客户端窗口的底部有tab栏可以切换页面),那么我们可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面。
//1. 当设置 position 为 top 时,将不会显示 icon
//2. tabBar 是一个数组,只能配置最少2个、最多5个 tab,tab 按数组的顺序排序。
"tabBar": { //设置底部 tab 的表现
"list": [{
"pagePath": "pages/index/index",
"text": "首页"
}, {
"pagePath": "pages/logs/logs",
"text": "日志"
}]
},
//可以设置各种网络请求的超时时间。
"networkTimeout": { //设置网络超时时间
"request": 10000,
"downloadFile": 10000
},
//可以在开发者工具中开启 debug 模式,在开发者工具的控制台面板,调试信息以 info 的形式给出,其信息有Page的注册,页面路由,数据更新,事件触发 。可以帮助开发者快速定位一些常见的问题。
"debug": true //设置是否开启 debug 模式
}
逻辑层(App Service)
1.每个页面有独立的作用域,并提供模块化能力。
2.由于框架并非运行在浏览器中,所以 JavaScript 在 web 中一些能力都无法使用,如 document,window 等。
注册程序 App()函数
App()函数用来注册一个小程序。接受一个object参数,其指定小程序的生命周期函数等。
小程序运行的时候会加载这个文件,表示这个小程序的实例
全局的getApp()函数,可以获取到小程序实例。//在页面的js文件中,可以用这个函数得到这个小程序实例,有了实例就可以访问实例里的相关数据
var appInstance = getApp()
console.log(appInstance.globalData) // I am global data
注意:
App()必须在app.js中注册,且不能注册多个。
不要在定义于App()内的函数中调用getApp(),使用this就可以拿到app实例。
不要在onLaunch的时候调用getCurrentPage(),此时page还没有生成。
通过getApp()获取实例之后,不要私自调用生命周期函数。
注册页面 Page()函数,就是小程序实例读取这个文件,向这个实例里注册一个页面。
Page() 函数用来注册一个页面。
Page.prototype.route
route 字段可以获取到当前页面的路径。
Page.prototype.setData()
setData 函数用于将数据从逻辑层发送到视图层,同时改变对应的 this.data 的值。
页面路由
在小程序中所有页面的路由全部由框架进行管理。
getCurrentPages()
getCurrentPages()函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。
模块化
在JavaScript文件中声明的变量和函数只在该文件中有效;不同的文件中可以声明相同名字的变量和函数,不会互相影响。
通过全局函数getApp()可以获取全局的应用实例,如果需要全局的数据可以在App()中设置,
我们可以将一些公共的代码抽离成为一个单独的js文件,作为一个模块。模块只有通过module.exports或者 exports才能对外暴露接口。
// common.js
function sayHello(name) {
console.log('Hello ${name} !')
}
function sayGoodbye(name) {
console.log('Goodbye ${name} !')
}
module.exports.sayHello = sayHello
exports.sayGoodbye = sayGoodbye
在需要使用这些模块的文件中,使用require(path)将公共代码引入。
var common = require('common.js')
Page({
helloMINA: function() {
common.sayHello('MINA')
}
goodbyeMINA: function() {
common.sayGoodbye('MINA')
}
})
数据绑定
<view> {{message}} </view> //用{{}}
// page.js
Page({
data: {
message: 'Hello MINA!'
}
})
<view id="item-{{id}}"> </view> //组件属性(需要在双引号之内)
<view wx:if="{{condition}}"> </view> //控制属性(需要在双引号之内)
<checkbox checked="{{false}}"> </checkbox>//关键字(需要在双引号之内)
三元运算
<view hidden="{{flag ? true : false}}"> Hidden </view>
算数运算
<view> {{a + b}} + {{c}} + d </view>
逻辑判断
<view wx:if="{{length > 5}}"> </view>
字符串运算
<view>{{"hello" + name}}</view>
数据路径运算
<view>{{object.key}} {{array[0]}}</view>
相关推荐
2017年微信小程序分析报告.docx2017年微信小程序分析报告.docx2017年微信小程序分析报告.docx2017年微信小程序分析报告.docx2017年微信小程序分析报告.docx2017年微信小程序分析报告.docx2017年微信小程序分析报告....
微信小程序项目实战,微信小程序课程设计,基于微信小程序开发的,含有简单代码注册,下载下来简单部署即可使用。 包含:项目源码、数据库脚本、部署说明等,该项目可以作为课程设计使用,前后端代码都在里面。 ...
《2017年微信小程序分析报告》揭示了微信小程序自推出以来对于移动互联网领域产生的深远影响。微信小程序,作为腾讯微信团队推出的一种创新应用形态,它的核心理念是“用完即走”,这一理念旨在强化微信作为全方位...
2017年微信小程序分析报告.pdf2017年微信小程序分析报告.pdf2017年微信小程序分析报告.pdf2017年微信小程序分析报告.pdf2017年微信小程序分析报告.pdf2017年微信小程序分析报告.pdf2017年微信小程序分析报告.pdf2017...
通过分析和学习这个“仿酷狗音乐微信小程序”的源码,开发者不仅可以提升微信小程序的编程技巧,还能对音乐类应用的常见功能有更深入的理解。同时,这也是一个很好的实战项目,帮助开发者将理论知识转化为实际操作...
这些微信小程序源码涵盖了多种类型的项目,可能包括电商、社交、工具、资讯、娱乐等多个领域,开发者可以通过阅读和分析源码,了解不同场景下的小程序实现方式和最佳实践。 微信小程序源码的学习点可能包括以下几个...
微信小程序点餐系统是当前移动互联网时代餐饮业中常见的技术应用,它利用微信小程序平台,为用户提供便捷的在线点餐服务。本项目实战教程将深入探讨如何开发这样一个系统,涵盖从设计、编码到上线的全过程。 一、...
9. **微信小程序调试与发布**:在开发过程中,开发者可以使用微信开发者工具进行实时预览、调试和性能分析。完成开发后,需要按照微信的规定进行代码上传、版本管理、审核和发布。 总的来说,这个压缩包提供的微信...
在本文中,我们将深入探讨如何使用.NET框架进行微信小程序的开发。微信小程序是一种轻量级的应用形式,可以在微信内直接运行,无需用户下载安装,极大地提升了用户体验。通过.NET技术,开发者可以利用C#等语言的强大...
微信小程序调研分析报告.docx微信小程序调研分析报告.docx微信小程序调研分析报告.docx微信小程序调研分析报告.docx微信小程序调研分析报告.docx微信小程序调研分析报告.docx微信小程序调研分析报告.docx微信小程序...
微信小程序是一种轻量级的应用开发平台,主要针对移动端,尤其是智能手机。它允许开发者在无需安装应用的情况下,通过微信内置浏览器运行应用程序。Go语言和OpenCV是两个不同的技术领域,但在这个场景下,它们被整合...
基于微信小程序的点餐系统设计与实现开题报告 (2).docx基于微信小程序的点餐系统设计与实现开题报告 (2).docx基于微信小程序的点餐系统设计与实现开题报告 (2).docx基于微信小程序的点餐系统设计与实现开题报告 (2)....
源码的提供使得学习者可以直接查看和分析项目的实现细节,有助于加深对微信小程序开发流程和框架的理解。 1. 微信小程序基础: 微信小程序是腾讯公司推出的一种轻量级应用开发框架,它允许开发者在微信内置的浏览器...
微信小程序是一种轻量级的应用开发平台,由腾讯公司推出,主要针对移动设备,尤其是智能手机。它允许开发者在微信内创建原生体验的应用程序,无需通过应用商店即可供用户使用。这个压缩包文件“wechat”很可能包含了...
微信聊天微信小程序源码分析 微信聊天微信小程序是基于微信开放平台开发的一种轻量级应用,主要用于在微信内部提供便捷的服务和互动体验。本源码分析将深入探讨小程序的架构、开发工具、主要功能模块以及如何进行...
通过分析这100个微信小程序源码,开发者不仅能学习到基础的开发技巧,还能掌握更高级的实践策略,例如性能优化、错误处理、用户体验设计等。此外,源码还可以作为参考,帮助解决开发过程中遇到的问题,或者激发新的...