小程序开发中的记录【持续更新】

调试

  • 通过 console.log(e) 可以打印任何东西,当然可以通过断点查看
  • 此时如果是真机调试的话,点击右上角也可以打开调试功能,但只能打印信息(从新打开后点击右下角的vConsole
Paste_Image.png

代码运行

  • 文档 说会自动保存,但通过实际测试,修改代码后需要手动保存,而且没有全部文件保存,修改一个文件保存一个,command + r 不能更新,command + s 就会保存并编译运行

查看代码是否已保存

  • 没保存最新就有个小绿点


    没保存就有个小绿点

新建项目

  • 必须要有index文件,不然总是提示报错,找不到路径

文件格式 文档

  • js 文件中Page必须是首字段,不能修改,数据都放data里面,自定义事件同级
//获取应用实例
var app = getApp()
Page({
  // 数据
  data: {
    motto: 'MiHome_Store'
  },
  //事件处理函数
  bindViewTap: function () {
    wx.navigateTo({
      url: '../logs/logs'
    })
  }
})
  • wxml 文件是 数据界面展示 ,跟HTML 一样,只是标签不一样了,可参考官方文档

  • wxss 文件是 界面样式修改,更CSS 差不多,听说暂时不能完美兼容CSS3

  • json 文件是 基本配置,如果是在app.json 中写的就是全局配置;如果在对应页面中写就指定页面的配置,但是pages只能写在app.json 中,注意:必须在pages设置项目中的文件路径,才能正常使用文件,pages 第一个配置的路径就会首先显示的界面

图片格式支持

  • 不支持jpeg 格式,支持png、支持j'p

创建tabBar

  • 在app.json 中设置,此时显示的路径必须是已经在pages 中配置好
"tabBar": {
    "list": [
      {
        "pagePath": "pages/index/index",
        "text": "框架",
        "iconPath": "image/wechat.png",
        "selectedIconPath": "image/wechatHL.png"
      },
      {
        "pagePath": "pages/component/component",
        "text": "组件",
        "iconPath": "image/wechat.png",
        "selectedIconPath": "image/wechatHL.png"
      },
      {
        "pagePath": "pages/api/api",
        "text": "API",
        "iconPath": "image/wechat.png",
        "selectedIconPath": "image/wechatHL.png"
      },
      {
        "pagePath": "pages/tool/tool",
        "text": "工具",
        "iconPath": "image/wechat.png",
        "selectedIconPath": "image/wechatHL.png"
      }
    ]
  }

页面中设置窗口配置信息

  • app.json中需要添加window标签,子页面json不需要添加window标签,直接在{}内设置
"window": {
  "navigationBarBackgroundColor": "#ffffff",
  "navigationBarTextStyle": "black",
  "navigationBarTitleText": "小程序",
  "backgroundColor": "#eeeeee",
  "backgroundTextStyle": "light",
  "enablePullDownRefresh": false
  }
{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "gitkong",
    "navigationBarTextStyle":"black"
}

项目文件快速创建

  • 直接在app.json 的 pages 中设置路径就可以,比如你想在pages文件夹中创建image文件夹,image文件夹中创建四个文件,image.js、image.json、image.wxml、image.wxss ,只需要添加路径pages/image/image 就行了


    快速创建 文件

数据读取

  • 单个字段属性,通过 {{xxx}}
    autoplay="{{autoplay}}" 其中 autoplay 是 js 里面的data json 中的字段

  • 数组遍历,通过 wx:for或者类似iOS 的 banner_list[0]单个获取(默认下标变量是index,对应当前项变量是item)
    wx:for-items="{{banner_list[0].banner}}"

    • 可以使用block 标签 配合,item 就是遍历后的某一个,通过点语法继续向下获取
    <block wx:for-items="{{banner_list[1].banner}}">
     <image src="{{item.pic_url}}" class="menue-image" />
     </block>
    

数据更新

  • 改变js 中的 data 数据 , 通过this.setData 修改;this 是当前页面的一个实例对象,当然如果是嵌套方法里面就要注意使用this,此时this就代表内部嵌套的方法
// name 是 data 中的一个字段属性,通过点击方法changeName 修改
changeName:function(){
    this.setData({
      name : 'gitkong'
    })
  }

传值

  • 一般页面中不需要传形参值(表单也不需要),默认是把当前的控件传进去,在方法中可以获取实参e(名字随你写),HTML 中可以通过document获取当前的控件对象,但小程序这边废弃了,虽然方法还存在,但调用是一点效果都没有的

changeName: function(e){
this.change(e)
}

> 此时获取到的e 就是 当前的控件对象,用 `console.log(e)` 打印


![打印的信息](http://upload-images.jianshu.io/upload_images/1085031-b1501b00b8988901.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- 当然,如果你在js 需要 获取到 wxml(界面) 中 传递的值,利用 id 或者 `data-你喜欢的变量名` 给个view绑定 个值,然后在实参获取到了,当然你喜欢传多少个都可以,名字不一样就行,**注意:不管你外部命名的变量名是否含有大写字母,dataset内部获取到的字段key 都全部转成小写,获取的时候注意,例如`id="{{detailFrameItem.detailName}}" data-index="{{detailIndex}}"` ,此时注意:里面dataset 里面的字段都是小写,不管你在外面怎么写;比如此时我传入 data-detailIndex(驼峰命名法),此时dataset 对应的字段是 detailindex**

WXML

<button class = "name" bindtap = "changeName" data-src = "{{name}}">{{name}}</button>

js

changeName: function(e){
console.log(e)
console.log(e.target.dataset.src)
}


![绑定](http://upload-images.jianshu.io/upload_images/1085031-b933a1f512c4bb44.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)



- 形参一般是在js 文件中传递,通过 `this.方法名(形参)` 调用并传参

change:function(e){
// 此时打印的就是 hello
console.log(e)
},

changeName: function(e){
this.change('hello')
console.log(e.target.dataset.src)
},


#页面跳转
- 通过 `wx.navigateTo` 方法跳转,同级目录就只有一个 `../` 上层有多少个就添加多少个`../`

wx.navigateTo({
url: '../question/question'
})


- 通过 `navigator` 标签,在 WXML 中创建并传入跳转的url

#换行
-  `<br>` 是不行的,要用 `\n`

#setData 里面不能处理任何逻辑,只能是赋值

this.setData({
xx : ''
})

![error](http://upload-images.jianshu.io/upload_images/1085031-abaf13959ebef298.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/400)


# JS 的 forin 是遍历出角标,并不能直接获取数组元素

for (var item in items){
console.log(items[item].name)
}


# let 接收变量
- 小程序使用let 接收变量,然后修改了,编译通过,运行还不报错;所以推荐都是用var 来接收吧,防止手残,找问题找死你

# js 里面的点语法
- 编写代码的时候,js 文件中,你可以点任何东西,他不报错也不提示

# 注释问题
- 都可以通过快捷键 command + / 注释
- **注意:app.json 里面不能添加注释,编译不过**

# 断点问题
- 如果你打了断点,没取消,然后去编辑代码,当你编译触发断点后,界面不会跳到调试界面,所以要注意自己的断点喔

# wxss 文件中代码不提示
- 在wxss 文件中,如果首次布局对应的 class选择器或者id 选择器,不会提示,但第二次就会提示了,类似于xcode 8 的一个bug,导入文件的时候,首次不会提示,需要手动打

# 快速拷贝单行
- WXML 里面编写代码同样,一行可以写到底,写得很长,全选复制就麻烦,其实它像HTML 一样,只要你光标停在那,不选中,command + c 就是复制整行代码了

#标签内容换行问题
- 设置宽度了,但如果是英文,不会换行,如果是中文,会自动换行

![中文能换行](http://upload-images.jianshu.io/upload_images/1085031-b9b33c409a003500.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![英文不会换行](http://upload-images.jianshu.io/upload_images/1085031-5e4ec083ac83ca0d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#json 格式显示
- 因为小程序中没有了code标签,因此不能直接显示json 数据,可以手动添加\n 实现换行,但\t 没效果,不能实现缩进

#页间文本中使用嵌套,换行问题
- 里面的标签不要使用view,view会默认换行,而text不会

![view 标签会自动换行](http://upload-images.jianshu.io/upload_images/1085031-99eba50e14338081.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![text标签不会自动换行](http://upload-images.jianshu.io/upload_images/1085031-31cdaa2b867131ad.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#WXML 字符转义问题
- 在小程序中,HTML 对应的转义字符已经不适用了,官方文档也没发现有对应的解决办法,测试能通过 js 中获取

![WXML 字符转义问题](http://upload-images.jianshu.io/upload_images/1085031-0d66c4e3163118e3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#text标签嵌套事件绑定响应问题
- 默认text是不能响应事件的,view可以,如果嵌套text标签内部要响应事件,最外层的text需要绑定响应事件才能响应

#路径问题
app.json 中的路径是绝对路径,而图片加载、文件导入都是相对路径,可以通过../回到上一级来获取

#import 和 include 导入问题
- import 是 导入模板,就是使用 `template` 定义的
- include 是 导入标签内容

#require 获取其他 js 文件的路径问题
- `var common = require('../../../../../alert.js')` 此时如果路径不正确,不会报错,但会将整个项目的路径打乱,还没搞清楚

#快速关闭其他标签的问题
- 右键选择关闭其他标签或者关闭右侧标签,此时会弹出一个 `检查` 按钮,而且是截取了屏幕的点击事件,此时需要先 按 `esc` ,去掉 `检查` 按钮,然后才能选择关闭标签

![关闭其他标签](http://upload-images.jianshu.io/upload_images/1085031-22c8e121e052eaf2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#HTTPS 请求
- 模拟器调试情况下,可以关闭ATS检查,请求http可以获取数据
- 真机情况下,就必须使用HTTPS请求

# 数组操作
- 跟js完全一样,通过 `concat` 拼接数组,通过 `slice` 截取数组

# textarea 的注意问题
- textarea 使用会有默认的高度,而且默认是透明颜色,因此容易出现遮挡问题而没发现。


# 列表中数据保存的问题
- 如果是列表数据的话,很容易出现数据被清空,因为很多时候我们通过setData重新赋值,此时修改的内容没更新,就出现清空情况,作者是通过绑定事件,监听输入焦点不在的时候,保存一次数据

# picker 真机不显示的问题
- 如果你的picker 里面是input 并且disable为false,那么在模拟器上是可以正常使用的,但真机上就没办法显示;换成view标签就行了

#video 标签播放问题
- 模拟器上面是不能全屏播放,而且多个视频都共用一套,真机不是

#安卓设配flex问题
- 苹果使用flex布局没问题,但放到安卓上就出现很多问题,flex没效果,需要使用 `display: -webkit-flex;`

#小程序上使用 `background-image ` 的使用问题
- 真机上不能显示本地路径的图片,网络的可以
- 模拟器上都能正常显示

#监听上拉加载更多的状态,可以实现系统的方法 `onReachBottom`

# form 表单提交问题
- 使用form提交虽然快捷,但适配安卓的时候就出现很多问题,会出现按钮点击无效果,不建议使用form表单提交

# 小程序或者js中的常量表示
- const 表示 常量,var 表示变量,let 也是变量,但是局部变量(外界不能访问)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352

推荐阅读更多精彩内容

  • 转载请注明出处, 谢谢! (~ o ~)Y 1月9日,也就是今天,微信推出的“小程序”正式上线。“小程序”是一种无...
    Jimmy_P阅读 14,381评论 52 273
  • 最近由于公司需求要做小程序开发,而且做h5的前端同事现在都很忙,所以我们移动开发就开始学习这个微信小程序了,...
    无沣阅读 1,584评论 1 4
  • 微信小程序 简介 腾讯在微信中推出的一种介于 Native App 和 Web App 之间的程序 程序中的程序,...
    LiLi原上草阅读 1,189评论 0 2
  • 家里人一直觉得我现有的工作不好,想让我换一份体制内的工作,轻松,可以以后照顾家庭。我用各种自己的想法和他们辩论,然...
    乡间_小路阅读 564评论 0 0
  • 斩不断 理还乱 不是离愁 恰是 你我之间
    林之源阅读 215评论 0 0