微信开发工具深入介绍

https://developers.weixin.qq.com/miniprogram/dev/devtools/devtools.html

 

 

 

基本项目目录

 

 

 

一个小程序应用程序会包括最基本的两种配置文件。一种是全局的 app.json 和 页面自己的 page.json

注意:配置文件中不能出现注释

app.json 是当前小程序的全局配置,包括了小程序的所有页面路径、界面表现、网络超时时间、底部 tab 等。普通快速启动项目里边的 app.json 配置

  1. {
  2. "pages":[
  3. "pages/index/index",
  4. "pages/logs/logs"
  5. ],
  6. "window":{
  7. "backgroundTextStyle":"light",
  8. "navigationBarBackgroundColor": "#fff",
  9. "navigationBarTitleText": "WeChat",
  10. "navigationBarTextStyle":"black"
  11. }
  12. }

 

字段的含义

  1. pages字段 —— 用于描述当前小程序所有页面路径,这是为了让微信客户端知道当前你的小程序页面定义在哪个目录。

  2. window字段 —— 定义小程序所有页面的顶部背景颜色,文字颜色定义等。

  3. 完整的配置信息请参考 https://developers.weixin.qq.com/miniprogram/dev/framework/config.html

 

这里的 page.json 其实用来表示页面目录下的 page.json 这类和小程序页面相关的配置。

开发者可以独立定义每个页面的一些属性,如顶部颜色、是否允许下拉刷新等等。

页面的配置只能设置 app.json 中部分 window 配置项的内容,页面中配置项会覆盖 app.jsonwindow 中相同的配置项。

 

WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件事件系统,可以构建出页面的结构。

  普通写法

  1. <view> {{ message }} </view>
  1. Page({
  2. data: {
  3. message: \'Hello MINA!\'
  4. }
  5. })

 

简直和上面没区别啊

  1. <view id="item-{{id}}"> </view>

 

  1. Page({
  2. data: {
  3. id: 0
  4. }
  5. })

 

不要直接写 checked=”false”,其计算结果是一个字符串

  1. <checkbox checked="{{false}}"> </checkbox>

 

  1. <view hidden="{{flag ? true : false}}"> Hidden </view>

 

  1. <view> {{a + b}} + {{c}} + d </view>
  1. Page({
  2. data: {
  3. a: 1,
  4. b: 2,
  5. c: 3
  6. }
  7. })

 

  1. <view wx:if="{{length > 5}}"> </view>
  1. <view>{{"hello" + name}}</view>
  1. Page({
  2. data:{
  3. name: \'MINA\'
  4. }
  5. })

 

 

 

项的变量名默认为 item wx:for-item 可以指定数组当前元素的变量名

下标变量名默认为 index wx:for-index 可以指定数组当前下标的变量名  index是索引

  1. <view wx:for="{{array}}">
  2. {{index}}: {{item.message}}
  3. </view>
  1. Page({
  2. data: {
  3. array: [{
  4. message: \'foo\',
  5. }, {
  6. message: \'bar\'
  7. }]
  8. }
  9. })

 

 

渲染一个包含多节点的结构块 block最终不会变成真正的dom元素

  1. <block wx:for="{{[1, 2, 3]}}">
  2. <view> {{index}}: </view>
  3. <view> {{item}} </view>
  4. </block>
  1. <view wx:for="{{array}}" wx:for-item="val" wx:for-index="key" wx:key="jiakuai">
  2. <view>{{index +"索引 val是值" + key}}: {{val.message}}</view>
  3. <view>{{index +"索引" + key}}: {{val.id}}</view>
  4. </view>
  1. array:[{
  2. "id": 1,"message":"jllklk"},{ "id":2,
  3. "message":"klj"}]

提高效率使用的

 

  1. <button bindtap="click">按钮</button>
  2. <button bindlongtap="longclick">长按按钮</button>

 

  1. // click:function(e){
  2. // console.log(\'lllll\')
  3. // console.log(e)
  4. // },
  5. // longclick:function(){
  6. // console.log(\'长按时间\')
  7. // // timeStamp: 4798 进入页面知道点击所经历的时间
  8. // },

 

 

  1. <button bindtap="clic" data-val="这是值" data-key="周四">传值按钮</button>

 

  1. clic: function (e) {
  2. console.log(e.target.dataset)
  3. },

 

 

 

在框架中,使用 wx:if="{{condition}}" 来判断是否需要渲染该代码块:

  1. <view wx:if="{{condition}}"> True </view>

 

  1. <view hidden="{{condition}}"> True </view>

 

类似 wx:if

频繁切换 用 hidden

不常使用 用 wx:if

 

WXSS(WeiXin Style Sheets)是一套样式语言,用于描述 WXML 的组件样式。

与 CSS 相比,WXSS 扩展的特性有:

  • 尺寸单位

  • 样式导入

rpx(responsive pixel): 可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。

建议: 开发微信小程序时设计师可以用 iPhone6 作为视觉稿的标准。

注意: 在较小的屏幕上不可避免的会有一些毛刺,请在开发时尽量避免这种情况。

 

 使用@import语句可以导入外联样式表,@import后跟需要导入的外联样式表的相对路径,用;表示语句结束。

示例代码:

  1. /** common.wxss **/
  2. .small-p {
  3. padding:5px;
  4. }

 

  1. /** app.wxss **/
  2. @import "common.wxss";
  3. .middle-p {
  4. padding:15px;
  5. }

 

  1. <view id="yy" class="oo">将老空间来记录</view>

 

  1. #yy{
  2. width: 100rpx;
  3. height: 80rpx;
  4. background-color: red
  5. }
  6. .oo{
  7. width: 100rpx;
  8. height: 800rpx;
  9. background-color: yellow
  10. }

 

 

框架组件上支持使用 style、class 属性来控制组件的样式。

  • style:静态的样式统一写到 class 中。style 接收动态的样式,在运行时会进行解析,请尽量避免将静态的样式写进 style 中,以免影响渲染速度。
  1. <view style="color:{{color}};" />
  • class:用于指定样式规则,其属性值是样式规则中类选择器名(样式类名)的集合,样式类名不需要带上.,样式类名之间用空格分隔。

    1. <view class="normal_view" />

     

 

 

 定义在 app.wxss 中的样式为全局样式,作用于每一个页面。在 page 的 wxss 文件中定义的样式为局部样式,只作用在对应的页面,并会覆盖 app.wxss 中相同的选择器。

 

小程序提供了常用的标签组件用于构建页面

代码

  1. <view hover-class="h-class">
  2. 点击我试试
  3. </view>
  4. <!-- wxss -->
  5. .h-class{
  6. background-color: yellow;
  7. }

 

 

 显示普通的文本 text只能嵌套text

 

  1. <text selectable="{{false}}" decode="{{false}}">
  2. &nbsp;
  3. </text>

 

 

 图片标签,image组件默认宽度320px、高度240px

 注意:该标签 其实是 web中的 图片标签 和 背景图片的结合!!! 并且不支持以前的web中的背景图片的写法!!!

 

mode 有效值

mode 有 13 种模式,其中 4 种是缩放模式,9 种是裁剪模式。

微信内置有轮播图组件

默认宽度 100% 高度 150px

滑块视图容器。

滑块

默认宽度和高度都是100%

 

视频。该组件是原生组件,使用时请注意相关限制

  1. <video src="{{src}}" controls></video>

 

 

 

小程序允许我们使用自定义组件的方式来构建页面。

自定义组件  https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/

类似于页面,一个自定义组件由 json wxml wxss js 4个文件组成

首先需要在 json 文件中进行自定义组件声明

  1. {
  2. "component": true
  3. }

 

  1. <view>{{title}}{{name}}</view>
  2. <!-- 组件自定义变量写在my-com.js中组件的属性列表中 -->
  3. <view bindtap="click">自定义组件的点击事件</view>
  4. <!-- 事件不能直接写在。js里面 yao写在js里面的method里面 -->

 

 

 

 

 同时,还要在 wxml 文件中编写组件模板,在 wxss 文件中加入组件样式

 注意:在组件wxss中不应使用ID选择器、属性选择器和标签名选择器

 

  1. <!-- 这是自定义组件的内部WXML结构 -->
  2. <view class="inner">
  3. {{innerText}}
  4. <slot></slot>
  5. </view>

 

  1. /* 这里的样式只应用于这个自定义组件 */
  2. .inner {
  3. color: red;
  4. }

 

在自定义组件的 js 文件中,需要使用 Component() 来注册组件,并提供组件的属性定义、内部数据和自定义方法

  1. Component({
  2. properties: {
  3. // 这里定义了innerText属性,属性值可以在组件使用时指定
  4. innerText: {
  5. type: String,
  6. value: \'default value\',
  7. }
  8. },
  9. data: {
  10. // 这里是一些组件内部数据
  11. someData: {}
  12. },
  13. methods: {
  14. // 这里是一个自定义方法
  15. customMethod: function(){}
  16. }
  17. })

 

首先要在页面的 json 文件中进行引用声明。还要提供对应的组件名和组件路径

  1. {
  2. // 引用声明
  3. "usingComponents": {
  4. // 要使用的组件的名称 // 组件的路径
  5. "component-tag-name": "path/to/the/custom/component"
  6. }
  7. }

 

  1. #页面中wxml
  2. <my-con title="{{变量名}}"><my-con/>
  1. #再组件中
  2. properties: {
  3. title:{
  4. type:String,
  5. value:"你好"
  6. }
  7. }
  1. <view>{{title}}{{name}}</view>
  2. <!-- 组件自定义变量写在my-com.js中组件的属性列表中 -->
  3. <view bindtap="click">自定义组件的点击事件</view>
  4. <!-- 事件不能直接写在。js里面 yao写在js里面的method里面 -->

 

页面中

  1. <my-com title="555"></my-com>

 

踩的坑

  1. <!-- 自定义组件中的变量随时变换在导入的地方 直接写title=变量 -->
  2. <my-com title="{{ll}}"></my-com>
  3. <!-- 在自定义组件中自定义一个变量 在引用的地方可以直接传送过来 -->
  4. <!-- 如果自定义组件的变量注释掉就不会显示了在饮用的地方 -->

 

  1. 页面
  2. <my-com title="{{title}}" bind:icre="icre"></my-com>
  1. 页面中js
  2. icre:function(e){
  3. console.log(e)
  4. this.setData({
  5. num:this.data.num+1
  6. })
  7. },

组件中的wxml

  1. <button bindtap=\'clickpush\'>加我</button>

 

组件中的js

  1. clickpush:function(e){
  2. console.log(e)
  3. this.triggerEvent("icre",{"index":13},{})
  4. }

 

示例二

组件页面

  1. <view bindtap="click">自定义组件的点击事件</view>
  2. <!-- 事件不能直接写在。js里面 yao写在js里面的method里面 -->

 

组件。js文件

  1. /**
  2. * 组件的方法列表
  3. */
  4. methods: {
  5. click:function(){
  6. console.log(\'lljljl\')
  7. this.triggerEvent("icre", {"a":123}, {})
  8. // 自定义组件触发事件时 需要使用这个方法 指定事件名 detail对象和时间选项
  9. // ice是个事件 第二个是传参数
  10. }
  11. }
  12. })

 

 

使用组件的页面中

  1. <text>{{sum}}</text>
  2. <!-- sum初始值为零 -->
  3. <my-com title="{{ll}}" bind:icre="click"></my-com>
  4. <!-- 绑定事件是bind不要加tap -->

 

 

使用组件页面的js文件中

  1. click:function(e){
  2. // console.log("****")
  3. console.log(e.detail.a)
  4. var _this = this
  5. var sum = this.data.sum
  6. _this.setData({
  7. sum: sum+1
  8. })
  9. }
  10. // 没接收e之前 可以点击sum参数增加
  11. // 自定义绑定组件传值在抛出页面那个方法第二个参数里传值,获取从e.datail中获取注意是一个对象需要继续点击key

 

使用组件页面的js文件中

  1. data:{
  2. ll:"随时变话的自定义组件的值",
  3. sum:0
  4. }

 

版权声明:本文为lakei原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lakei/p/11253356.html