小程序开发,注册,基础组件

122 阅读5分钟

1.1开发开发准备

开发微信小程序前首先要在微信公众平台申请一个小程序账号,通过这个账号对小程序的开发进行管理。

点击 + 号,新建项目 picture_1.c7a48a9b.jpg

picture_4.1ed0905f.jpg 如上图所示填写信息时 AppID 填写各自申请的小程序账号的 AppID,不使用云开发,选择 Javascript 基础模板

2.2 目录结构

创建小程序项目后会初始小程序的目录结构,我们先来了解一下这些文件和目录的作用,这对于我们学习小程序开发非常有帮助。

我们将从两个方面入手来介绍小程序的目录结构:文件类型和特定名称的文件。

先来看文件类型,小程序主要提供了 4 种文件类型:

类型名称作用是否必须存在
.wxml用于页面的布局结构,相当于网页中 .html 文件
.wxss用于页面的样式,相当于网页中的 .css 文件
.js用于页面的逻辑
.json用于页面的配置
再来看一些特定名称的文件:
文件名作用是否必须存在
app.js小程序入口(首先执行的文件)
app.json小程序的全局配置
app.wxss小程序的全局样式
project.config.json小程序开发者工具配置是(会自动创建)
sitemap.json小程序搜索优化

组件

小程序里没有div span img 但有其他新标代替

  1. view定义一个块级元素相当于div
  2. text定义一个行内元素相当于span
  3. weiper轮播图标签
  4. weiper-item轮播图可滑动的每一个区块
  5. image图片标签
属性名默认值作用
indicator-dotsfalse是否显示面板指示点
autoplayfalse自动播放轮播图
circularfalse循环播放轮播图
indicator-colorrgba(0, 0, 0, .3)小圆点颜色
indicator-active-color#000000当前选中的指示点颜色
关于小程序页面布局中的样式几乎和网页的 css 是一样的

定义初始数据

  • 在index.js里必须调用一个全局函数page至少要传入一个空对象作为它的参数否则可能会报错
Page({
  data: {
    message: "大家好,这是我的第一个小程序",
    num: 1,
  },
});

调用数据使用插值{{}}
  {{num}} -1
</view>

监听事件

bind固定语法tap事件名sayHi回调函数
<button bind:tap="sayHi">点击一下</button>

调用函数使用方法在index.js中的Page调用
Page({ data: { msg: '大家好,这是我开发的第一个小程序!', }, sayHi() { console.log('按钮被点击了...') }, })

更新数据 this.getData({xx:“修改的值”})

Page({
  data: {
    msg: "大家好,这是我开发的第一个小程序!",
  },

  sayHi() {
    console.log("按钮被点击了...");
    // 错误的写法!
    // this.msg = 'Hello everybody,this is my first miniprogram!'
    // 正确的写法
    this.setData({
      msg: "Hello everybody,this is my first miniprogram!",
    });
  },
});

读取数据this.data.要读取的值

 // 读取
    console.log(this.data.message);

全局配置即小程序根目录中的 app.json 它的最外层是一个对象,可以包含一些常见的配置项:

配置项类型是否必须说明
pagesstring[]页面路径列表
windowobject全局的默认窗口表现
tabBarobject底部 tab 栏的表现
entryPagePathstring小程序默认启动首页
  1. pages 的值是一个数组,所有页面的路径都要写在这个数组里,否则页面无法被访问到,数组的第一个单元为小程序的启动首页。

json

{
  "pages": ["pages/index/index", "pages/logs/logs"]
}

跳转组件

组件名作用与 htm 对比
navigator地址跳转相当于 html 中的 a 标签
  1. window 的值是一个对象,通过它可以全局配置小程序的状态栏、导航条、标题、窗口背景色。
属性类型默认值说明
navigationBarTitleTextstring空白导航栏标题文字内容
navigationBarTextStylestringblack导航栏标题颜色,仅支持 black / white
navigationBarBackgroundColor16 进制颜色#00000导航栏背景颜色,如 #000000
navigationStylestringdefault导航栏样式,仅支持 default / custom
enablePullDownRefreshbooleanfalse是否开启全局的下拉刷新
... 还有更多

json

{
  "pages": [
    "pages/index/index",
    "pages/logs/logs",
    "pages/demo/demo"
  ],
  "window": {
    "navigationBarTitleText": "小程序示例",
    "navigationBarTextStyle": "white",
    "navigationBarBackgroundColor": "#f5a11c",
    "enablePullDownRefresh": true
  }
}
  1. tabBar 定义小程序 tab 栏的表现,如下图即所谓的 tab 栏:

定义 tab 的内容有些多,大家参照着上图和下面的表格来对小程序的 tab 栏进行配置:

属性类型默认值是否必须说明
listarraytab 的列表,详见 list 属性说明,最少 2 个、最多 5 个 tab
color16 进制颜色tab 上的文字默认颜色,仅支持十六进制颜色
selectedColor16 进制颜色tab 上的文字选中时的颜色,仅支持十六进制颜色
backgroundColor16 进制颜色tab 的背景色,仅只持 16 进制颜色
borderStylestringblacktabbar 上边框的颜色, 仅支持 black / white
positionstringbottomtabBar 的位置,仅支持 bottom / top

上述配置中 list 具体又包含以下内容:

属性类型默认值是否必须说明
pagePathstring页面路径,必须在 pages 中先定义
textstringtab 上按钮文字
iconPathstring图片路径,icon 大小限制为 40kb,建议尺寸为 81px * 81px,不支持网络图片,当 position 为 top 时,不显示 icon
selectedIconPathstring选中时的图片路径,icon 大小限制为 40kb,建议尺寸为 81px * 81px,不支持网络图片,当 position 为 top 时,不显示 icon

以上的配置不用刻意的去背,根据需要随时查看文档就可以,以下为完整示例代码:

json

{
  "pages": [
    "pages/index/index", 
    "pages/logs/logs",
    "pages/demo/demo"
  ],
  "window": {
    导航标题
    "navigationBarTitleText": "小程序示例",
    导航栏标题颜色
    "navigationBarTextStyle": "white",
    导航背景颜色
    "navigationBarBackgroundColor": "#f5a11c",
    下拉刷新
    "enablePullDownRefresh": true
  },
  底部
  "tabBar": {
    "color": "#999",
    "selectedColor": "#e93b3d",
    "backgroundColor": "#fff",
    "list": [
      {
        "pagePath": "pages/index/index",
        "text": "首页",
        底部图标
        "iconPath": "static/tabbar/home-default.png",
        点击后底部图标
        "selectedIconPath": "static/tabbar/home-active.png"
      },
      {
        "pagePath": "pages/logs/logs",
        "text": "日志",
        "iconPath": "static/tabbar/video-default.png",
        "selectedIconPath": "static/tabbar/video-active.png"
      },
      {
        "pagePath": "pages/index/demo",
        "text": "示例",
        "iconPath": "static/tabbar/face-default.png",
        "selectedIconPath": "static/tabbar/face-active.png"
      }
    ]
  }
}