全栈开发工程师微信小程序-中(中)

开放能力

open-data

用于展示微信开放的数据

  1. type 开放数据类型
  2. open-gid type="groupName" 时生效, id
  3. lang type="user*" 时生效,以哪种语言展示 userInfo

  1. <open-data type="groupName" open-gid="xxxxxx"></open-data>
  2. <open-data type="userAvatarUrl"></open-data>
  3. <open-data type="userGender" lang="zh_CN"></open-data>

web-view

web-view 组件是一个可以用来承载网页的容器.

  1. src webview 指向网页的链接

案例:

  1. <web-view src="https://mp.weixin.qq.com/"></web-view>

  1. <script
  2. type="text/javascript"
  3. src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"
  4. ></script>

onShareAppMessage

案例:

  1. Page({
  2. onShareAppMessage(options) {
  3. console.log(options.webViewUrl)
  4. }
  5. })

ad广告

目前暂时以邀请制开放申请,请留意后续模板消息的通知

official-account

用户扫码打开小程序,在小程序内配置公众号关注组件,快捷关注公众号.

使用前要前往小程序后台,在“设置”->“接口设置”->“公众号关注组件”中设置.

示例代码:

  1. <official-account></official-account>

原生组件

  1. camera
  2. canvas
  3. input
  4. live-player
  5. live-pusher
  6. map
  7. textarea
  8. video
  9. // cover-view 与 cover-image

添加了无障碍访问

  1. // 无障碍的属性
  2. button
  3. input
  4. textarea
  5. checkbox
  6. switch
  7. radio
  8. slider
  9. picker-view
  10. scroll-view
  11. progress
  12. navigator
  13. image
  14. icon
  15. view
  16. cover-view
  17. cover-image
  18. map

javascript语言

  1. var arr = "dashucoding";
  2. var arr = 10;
  3. var arr = true;
  4. var arr = [2,"dashu",23];
  5. var arr = {name:"dashu"};
  6. var name = "dashu";
  7. if(name === "dashu"){
  8. this.alert("dashucoding");
  9. }else{
  10. this.alert("dashu");
  11. }
  12. // this代表当前的页面对象

事件

事件是视图层到逻辑层的通信方式.事件分冒泡事件和非冒泡事件,冒泡事件是当一个组件上的事件被触发后,会向父节点传递,非冒泡事件是不会向父节点传递的.

  1. <view id="tapTest" data-hi="WeChat" bindtap="tapName">Click me!</view>
  2. target是触发事件的源组件
  3. currentTarget是事件绑定的当前组件
  4. bindtap, catchtouchstart
  5. bind事件绑定不会阻止冒泡事件 向上冒泡
  6. catch事件绑定可以阻止冒泡事件冒泡事件 向上冒泡
  7. // 事件对象可以携带额外信息,如 id, dataset, touches
  8. Page({
  9. tapName(event) {
  10. console.log(event)
  11. }
  12. })
  13. changedTouches
  14. detail 自定义事件所携带的数据
  1. touchstart 手指触摸动作开始
  2. touchmove 手指触摸后移动
  3. touchcancel 手指触摸动作被打断
  4. touchend 手指触摸动作结束
  5. tap 手指触摸后马上离开

  1. <view id="outer" bindtap="handleTap1">
  2. outer view
  3. <view id="middle" catchtap="handleTap2">
  4. middle view
  5. <view id="inner" bindtap="handleTap3">inner view</view>
  6. </view>
  7. </view>

  1. <view
  2. id="outer"
  3. bind:touchstart="handleTap1"
  4. capture-bind:touchstart="handleTap2"
  5. >
  6. outer view
  7. <view
  8. id="inner"
  9. bind:touchstart="handleTap3"
  10. capture-bind:touchstart="handleTap4"
  11. >
  12. inner view
  13. </view>
  14. </view>

  1. <view data-alpha-beta="1" data-alphaBeta="2" bindtap="bindViewTap">
  2. DataSet Test
  3. </view>
  4. Page({
  5. bindViewTap(event) {
  6. event.currentTarget.dataset.alphaBeta === 1 // - 会转为驼峰写法
  7. event.currentTarget.dataset.alphabeta === 2 // 大写会转为小写
  8. }
  9. })

事件:

target是触发事件的源组件,currentTarget是事件绑定的当前组件.keybindcatch开头,常见:bindtap,catchtouchstart.bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡.

  1. type: 事件类型
  2. timeStamp: 事件生成时的时间截
  3. target: 触发事件的组件的一些属性值集合
  4. currentTarget: 当前组件的一些属性值集合
  5. TouchEvent:
  6. touches:当前停留在屏幕中的触摸点信息
  7. changedTouches:当前变化的触摸点信息

三元操作符

  1. let arr = x > 20 ? "dashu" : "dashucoding"

操作符

  1. if(var !== null || var !== undefined || var !== ""){
  2. }
  1. <wxs module="util">
  2. var sub = function(val) {
  3. return val.substring(0, 10)
  4. }
  5. var sub1 = function(val) {
  6. return val.substring(0, 7)
  7. }
  8. module.exports.sub1 = sub1;
  9. module.exports.sub = sub;
  10. </wxs>
  11. <wxs module="util">
  12. var sub = function(val) {
  13. return val.substring(0, 10)
  14. }
  15. var subtxst = function(index) {
  16. if (index == "1") {
  17. return index = "病假"
  18. } else {
  19. return index = "事假"
  20. }
  21. }
  22. module.exports.sub = sub;
  23. module.exports.subtxst = subtxst;
  24. </wxs>
  25. {{util.subtxst(item.leaveType)}}

rpx单位,是根据屏幕宽度进行自适应调整,规定的屏幕宽度为750rpx,在官方iphone6上的屏幕宽度是375px,共有750个物理像素.

  1. 750rpx=375px=750物理像素
  2. 1rpx=0.5px=1物理像素

微信小程序基础

调式功能,在小程序有调式工具:

  1. Console, Sources, Network, Storage, AppData, wxml

小程序调式三大功能区:

模拟器,调式工具,小程序操作区

模拟器可以对小程序在客户端一些真实的表现,可以呈现出显示状态.小程序中具有自定义编译,可以用来在开发者调式时进入不同的场景.

有时候上传会有readme.gitignore文件不会被打包上传,目的是为了优化大小.

如果勾了 ES6ES5或代码压缩,目的是为了优化编译的速度,对于体积过大的文件,工具就会跳过这些文件.

调式工具7大模块:

  1. WxmlConsoleSourcesNetworkAppdataStorageSensorTrace

注:uploadFiledownloadFile 暂时不支持在 Network Panel 中查看

  1. build: 编译小程序
  2. preview: 预览
  3. upload: 上传代码
  4. openVendor: 打开基础库所在目录
  5. openToolsLog: 打开工具日志目录
  6. checkProxy(url): 检查指定url

自定义数据上报

查看,点击菜单栏中的 “工具 - 自定义分析” .

Storage可以用来显示当前项目的wx.setStoragewx.setStorageSync后;

AppData可以用于当前项目,显示数据情况;

Console可以用来显示小程序的输出信息;

Sources可以用来显示当前项目的脚本文件;

Network可以用来实现发送的请求和调用文件的信息;

Wxml可以用来查看真实的页面结构和属性.

框架

小程序的框架有:

  1. 框架全局配置文件
  2. 工具类文件
  3. 框架页面文件

框架全局配置文件

一个小程序框架全局配置文件有:

app.js, app.json, app.wxss, 三个文件组成,全局文件都是在项目的根目录.

  1. // app.js
  2. App({
  3. /**
  4. * 当小程序初始化完成时,会触发 onLaunch(全局只触发一次)
  5. */
  6. // 生命周期函数
  7. onLaunch: function() {
  8. // 获取小程序更新机制兼容
  9. if (wx.canIUse('getUpdateManager')) {
  10. const updateManager = wx.getUpdateManager()
  11. updateManager.onCheckForUpdate(function(res) {
  12. // 请求完新版本信息的回调
  13. if (res.hasUpdate) {
  14. updateManager.onUpdateReady(function() {
  15. wx.showModal({
  16. title: '更新提示',
  17. content: '新版本已经准备好,是否重启应用?',
  18. success: function(res) {
  19. if (res.confirm) {
  20. // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
  21. updateManager.applyUpdate()
  22. }
  23. }
  24. })
  25. })
  26. updateManager.onUpdateFailed(function() {
  27. // 新的版本下载失败
  28. wx.showModal({
  29. title: '已经有新版本了哟~',
  30. content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~',
  31. })
  32. })
  33. }
  34. })
  35. } else {
  36. // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
  37. wx.showModal({
  38. title: '提示',
  39. content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
  40. })
  41. }
  42. },
  43. /**
  44. * 当小程序启动,或从后台进入前台显示,会触发 onShow
  45. */
  46. onShow: function(options) {
  47. },
  48. /**
  49. * 当小程序从前台进入后台,会触发 onHide
  50. */
  51. onHide: function() {
  52. },
  53. /**
  54. * 当小程序发生脚本错误,或者 api 调用失败时,会触发 onError 并带上错误信息
  55. */
  56. onError: function(msg) {
  57. }
  58. })
  1. // 定义全局数据
  2. globalData: {
  3. userInfo: null
  4. }
  1. // app.json :
  2. {
  3. "pages": ["pages/index/index", "pages/logs/index"],
  4. "window": {
  5. "navigationBarTitleText": "Demo"
  6. },
  7. "tabBar": {
  8. "list": [
  9. {
  10. "pagePath": "pages/index/index",
  11. "text": "首页"
  12. },
  13. {
  14. "pagePath": "pages/logs/logs",
  15. "text": "日志"
  16. }
  17. ]
  18. },
  19. "networkTimeout": {
  20. "request": 10000,
  21. "downloadFile": 10000
  22. },
  23. "debug": true,
  24. "navigateToMiniProgramAppIdList": ["wxe5f52902cf4de896"]
  25. }
  26. // 配置页面路径
  27. // 配置窗口表现
  28. // 配置标签导航
  29. // 配置网络超时
  30. // 配置debug模式

页面配置项列表

  1. {
  2. "navigationBarBackgroundColor": "#ffffff",
  3. "navigationBarTextStyle": "black",
  4. "navigationBarTitleText": "微信接口功能演示",
  5. "backgroundColor": "#eeeeee",
  6. "backgroundTextStyle": "light"
  7. }
  8. navigationBarBackgroundColor 导航栏背景颜色
  9. navigationBarTextStyle 导航栏标题颜色
  10. navigationBarTitleText 导航栏标题文字内容
  11. navigationStyle 导航栏样式
  12. backgroundColor 窗口的背景色
  13. backgroundTextStyle 下拉 loading 的样式,仅支持 dark / light
  14. enablePullDownRefresh 是否全局开启下拉刷新
  15. onReachBottomDistance 页面上拉触底事件触发时距页面底部距离
  16. disableScroll 设置为 true 则页面整体不能上下滚动
  17. disableSwipeBack 禁止页面右滑手势返回

小程序中有工具类文件: utils, 通过module.exports进行注册使用.

  1. App({
  2. onLaunch: function() {
  3. },
  4. onShow: function() {
  5. },
  6. onHide: function() {
  7. },
  8. onError: function() {
  9. },
  10. globalData: 'dashucoding'
  11. })

如果看了觉得不错

点赞!转发!

达叔小生:往后余生,唯独有你

You and me, we are family !

90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通

简书博客: 达叔小生

https://www.jianshu.com/u/c785ece603d1

结语

  • 下面我将继续对 其他知识 深入讲解 ,有兴趣可以继续关注
  • 小礼物走一走 or 点赞

全栈开发工程师微信小程序-中(中)的更多相关文章

  1. 全栈开发工程师微信小程序-上(中)

    全栈开发工程师微信小程序-上(中) width: 750rpx; 750rpx代表与屏幕等宽,rpx的缩写responsive pixel,这个单位是可以根据屏幕大小进行自适应调整的像素单位. 小程序 ...

  2. 全栈开发工程师微信小程序-中(下)

    全栈开发工程师微信小程序-中(下) 微信小程序视图层 wxml用于描述页面的结构,wxss用于描述页面的样式,组件用于视图的基本组成单元. // 绑定数据 index.wxml <view> ...

  3. 全栈开发工程师微信小程序-中

    全栈开发工程师微信小程序-中 多媒体及其他的组件 navigator 页面链接 target 在哪个目标上发生跳转,默认当前小程序,可选值self/miniProgram url 当前小程序内的跳转链 ...

  4. 全栈开发工程师微信小程序-上(下)

    全栈开发工程师微信小程序-上(下) icon 图标 success, success_no_circle, info, warn, waiting, cancel, download, search, ...

  5. 全栈开发工程师微信小程序 - 上

    全栈开发工程师微信小程序-上 实现swiper组件 swiper 滑块视图容器. indicator-dots 是否显示面板指示点 false indicator-color 指示点颜色 indica ...

  6. 全栈开发工程师微信小程序-下

    app.json { "pages": ["pages/index/index"] } index.wxml <text>Hello World&l ...

  7. 全栈之路-微信小程序-SKU开发(代码)

    SKU开发是小程序中最难的一部分,思路在分析中已经记录过了,这里主要看一下代码的实现,感觉老师写的代码太棒了,很优雅!主要想记录一下写代码的思路,对面向对象编程的实践. 一.代码结构的分析 1.说明几 ...

  8. 全栈之路-微信小程序-SKU开发(分析)

    SKU是整个小程序中最难完成的部分了,好好记录一下SKU,主要是想记录一下 从最开始拿到这个业务到最终完成这个功能期间的思考过程,至于代码什么的,记录也好,不记录也行,再看! 一.从思路说起 1.SK ...

  9. 全栈之路-微信小程序-架构总览

    第一阶段是用来学习小程序开发的,这个就相当于PC端的网站吧,只不过现在依靠微信强大的流量来将业务搬移到小程序中,对于企业来说,这是一种很好的发展方向,既减少了开发成本,又减少了推广成本,小程序是很被人 ...

随机推荐

  1. PEP8 规范

    Python PEP8 编码规范中文版   原文链接:http://legacy.python.org/dev/peps/pep-0008/ item detail PEP 8 Title Style ...

  2. srs之深入浅出看流媒体

    本文转载:https://blog.csdn.net/zjqlovell/article/details/50786040 CDN这几年爆炸式增长,带宽提速是根源,而HTTP始终还是那个屌样,因此目前 ...

  3. 探索未知种族之osg类生物---渲染遍历之认识SceneView

    前言 我们在进行osg程序的开发时,最常用到的场景管理方式是“场景节点树”的结构,     a 场景树底端的叶节点(osg::Geode)包含了各种需要渲染的几何体的顶点和渲染状态信息:     b  ...

  4. 常用Linux VPS/服务器SSH连接工具 - Xshell下载与使用

    我们很多网友可能初次接触Linux VPS.服务器,所以在购买完毕VPS主机不知道如何登录.有些网友甚至直接类似WIN系统一样直接在桌面远程连接工具连接,可想而知肯定是无法连接的.因为如果我们购买的是 ...

  5. 3200 [HNOI2009]有趣的数列

    题面 dalao们都说这是一题简单的卡特兰数,画一画就出来了 emmmmm…… 讲讲怎么分解质因数来算组合数 先打个表 void prim(){ ex[]=ex[]=; ;i<=*n;i++){ ...

  6. Finance财务软件(自定义报表专题)

    我们可以通过存储过程自定义报表 1.在菜单中新增报表菜单,这里的代码约束为报表对应存储过程名称,配置完成成后重启客户端生效 2.在自定义模板中适配存储过程入参,这里的功能键值为存储过程名称,字段键值与 ...

  7. C# WPF 通过委托实现多窗口间的传值

    在使用WPF开发的时候就不免会遇到需要两个窗口间进行传值操作,当然多窗口间传值的方法有很多种,本文介绍的是使用委托实现多窗口间的传值. 在上代码之前呢,先简单介绍一下什么是C#中的委托(如果只想了解如 ...

  8. js 中 (function($){...})(jQuery) 含义

    js中定义函数常用写法是 function name(arg){ //arg则是匿名函数的参数. //... } 调用函数时的写法是: name(arg); ===================== ...

  9. 找出数组中最大值and索引

    找出数组中的最大值和和最大值的索引位置..... 第一中方法: /** * 找出数组中最大值和最大值的索引 * @param args */ public static void main(Strin ...

  10. Document.write和 getElementById(ID)

    在javascript中,document.write()方法:常用来网页向文档中输出内容. 示例:通过document.write()方法,向网页文档中输出了一段文字. document.write ...