美文网首页
小程序入门

小程序入门

作者: YX_亚亚呀 | 来源:发表于2019-11-04 14:34 被阅读0次

    要开发小程序首先要明白下面几个问题

    1. 我们如何创建小程序,如何对项目的目录结构分析?
    2. 一个小程序页面的生命周期是什么?
    3. 如何增加页面?
    4. 如何设置导航栏的属性?
    5. 小程序是如何将视图层和逻辑层进行绑定的?

    小程序的文件结构

    一个小程序首先有四个应用入口文件:

    • app.js:设置一些项目的全局变量,小程序逻辑,初始化APP
    • app.json:小程序的全局配置,比如导航、窗口、页面http请求跳转等。全局配置页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。
    • app.wxss:项目全局样式
    • project.config.json:项目配置文件

    一个页面主要是包含以下四个文件,这四个文件必须是相同的名字和路径,最好以页面所在的文件夹名字为标准:

    • xxx.wxml:页面的结构(必须)
    • xxx.wxss:页面的样式
    • xxx.json:页面的配置文件
    • xxx.js:页面的脚本文件(必须)

    页面可以嵌套页面,但是建议不要超过5个层级。

    app.json文件
    "pages": [ //设置页面的路径
      "pages/index/index", //不需要写index.wxml,index.js,index,wxss,框架会自动寻找并整合
      "pages/logs/logs"
    ],
    "window": { //设置默认窗口的表现形式
      "navigationBarBackgroundColor": "#ffffff", //顶部导航栏背景色
      "navigationBarTextStyle": "black", //顶部导航文字的颜色 black/white
      "navigationBarTitleText": "微信接口功能演示", //顶部导航的显示文字
      "backgroundColor": "#eeeeee", //窗口的背景色
      "backgroundTextStyle": "light", //下拉背景字体、loading 图的样式,仅支持 dark/light
      "enablePullDownRefresh": "false", //是否支持下拉刷新 ,不支持的话就直接不写!
      "disableScroll": true, //  设置true不能上下滚动,true/false,注意!只能在 page.json 中有效,无法在 app.json 中设置该项。
    },
    "tabBar": { //底部tab或者顶部tab的表现,是个数组,最少配置2个,最多5个
      "list": [{ //设置tab的属性,最少2个,最多5个
        "pagePath": "pages/index/index", //点击底部 tab 跳转的路径
        "text": "首页", //tab 按钮上的文字
        "iconPath": "../img/a.png", //tab图片的路径
        "selectedIconPath": "../img/a.png" //tab 在当前页,也就是选中状态的路径
      }, {
        "pagePath": "pages/logs/logs",
        "text": "日志"
      }],
      "color": "red", //tab 的字体颜色
      "selectedColor": "#673ab7", //当前页 tab 的颜色,也就是选中页的
      "backgroundColor": "#2196f3", //tab 的背景色
      "borderStyle": "white", //边框的颜色 black/white
      "position": "bottom" //tab处于窗口的位置 top/bottom
      },
    "networkTimeout": { //默认都是 60000 秒一分钟
        "request": 10000, //请求网络超时时间 10000 秒
        "downloadFile": 10000, //链接服务器超时时间 10000 秒
          "uploadFile": "10000", //上传图片 10000 秒
        "downloadFile": "10000" //下载图片超时时间 10000 秒
      },
    "debug": true //项目上线后,建议关闭此项,或者不写此项
    

    可以看到共有五个部分可以配置,分别是pages, window, tarBar, networkTimeout和debug

    pages:定义的是这个小程序由哪些页面组成。在以后需要新增或者减少页面时,都需要在这里进行设置,有几个页面pages数组就有几项。pages是一个数组,而数组的第一项就是小程序的初始页面.

    window: 定义的是窗口的配置信息。
    属性类型默认值描述
    
    navigationBarBackgroundColorHexColor#000000导航栏背景颜色,如"#000000"
    
    navigationBarTextStyleStringwhite导航栏标题颜色,仅支持 black/white
    
    navigationBarTitleTextStringa导航栏标题文字内容
    
    backgroundColorHexColor#ffffff窗口的背景色
    
    backgroundTextStyleStringdark下拉背景字体、loading 图的样式,仅支持 dark/light
    
    enablePullDownRefreshBooleanfalse是否开启下拉刷新
    
    tarBar: 用来定义 tabBar 的表现

    tabBar 是一个数组,只能配置最少2个、最多5个 tab,tab 按数组的顺序排序。

    我们可以在项目目录下添加一个images文件,用来存放我们的图片文件。

    注意:目前小程序只支持网络图片或者base64图片,使用本地图片需要将图片转为base64代码

    networkTimeout: 用来设置各种网络请求的超时时间。
    属性类型必填说明
    
    requestNumber否wx.request的超时时间,单位毫秒
    
    connectSocketNumber否wx.connectSocket的超时时间,单位毫秒
    
    uploadFileNumber否wx.uploadFile的超时时间,单位毫秒
    
    downloadFileNumber否wx.downloadFile的超时时间,单位毫秒
    

    小程序的生命周期

    (1)App()生命周期

    • 用户首次打开小程序,触发 onLaunch(全局只触发一次)。

    • 小程序初始化完成后,触发onShow方法,监听小程序显示。

    • 小程序从前台进入后台,触发 onHide方法。

    • 小程序从后台进入前台显示,触发 onShow方法。

    • 小程序后台运行一定时间,或系统资源占用过高,会被销毁。

    • 小程序出错,触发onError

    • 前台、后台定义: 当用户点击左上角关闭,或者按了设备 Home 键离开微信,小程序并没有直接销毁,而是进入了后台;当再次进入微信或再次打开小程序,又会从后台进入前台

        //app.js
        App({
          onLaunch: function() { 
              //小程序初始化(全局只触发一次)
          },
          onShow: function() {
              //小程序显示
          },
          onHide: function() {
              //小程序隐藏
          },
          onError: function(msg) {
              //小程序错误
          },
        })    
        //其他 开发者可以添加任意的函数或数据到 Object 参数中,用 this 可以访问
      

    (2)Page页面生命周期(每个页面也有自己的生命周期)

    • 小程序注册完成后,加载页面,触发onLoad方法。

    • 页面载入后触发onShow方法,显示页面。

    • 首次显示页面,会触发onReady方法,渲染页面元素和样式,一个页面只会调用一次。

    • 当小程序后台运行或跳转到其他页面时,触发onHide方法。

    • 当小程序有后台进入到前台运行或重新进入页面时,触发onShow方法。

    • 当使用重定向方法wx.redirectTo(OBJECT)或关闭当前页返回上一页wx.navigateBack(),触发onUnload

      //index.js
      Page({
      onLoad: function(options) {
      //页面加载-----(一个页面只会调用一次)
      },
      onReady: function() {
      //页面渲染-----(一个页面只会调用一次)
      },
      onShow: function() {
      //页面显示-----(每次打开页面都会调用一次)
      },
      onHide: function() {
      //页面隐藏-----(当navigateTo或底部tab切换时调用)
      },
      onUnload: function() {
      //页面卸载-----(当redirectTo或navigateBack的时候调用)
      },
      })
      //其他 开发者可以添加任意的函数或数据到 object 参数中,在页面的函数中用 this 可以访问

    (3)应用生命周期影响页面生命周期

    • 小程序初始化完成后,页面首次加载触发onLoad,只会触发一次。
    • 当小程序进入到后台,先执行页面onHide方法再执行应用onHide方法。
    • 当小程序从后台进入到前台,先执行应用onShow方法再执行页面onShow方法

    视图层和逻辑层数据绑定

    <!--index.wxml-->
    <view>{{text}}</view>
    <button bindtap="changeText"> Change normal data </button>
    <view>{{array[0].text}}</view>
    <button bindtap="changeItemInArray"> Change Array data </button>
    <view>{{obj.text}}</view>
    <button bindtap="changeItemInObject"> Change Object data </button>
    <view>{{newField.text}}</view>
    <button bindtap="addNewField"> Add new data </button>
    
    
    //index.js
    Page({
      data: {
        text: 'init data',
        array: [{text: 'init data'}],
        object: {
          text: 'init data'
        }
      },
      changeText: function() {
        this.setData({
          text: 'changed data'
        })
      },
      changeItemInArray: function() {
        this.setData({
          'array[0].text':'changed data'
        })
      },
      changeItemInObject: function(){
        this.setData({
          'object.text': 'changed data'
        });
      },
      addNewField: function() {
        this.setData({
          'newField.text': 'new data'
        })
      }
    })
    

    创建小程序页面步骤

    1. 在pages 中添加一个目录 ,选中page,右击鼠标新建一个文件夹test(或者点击+号,逐个添加目录,添加目录下面所需要的文件)
    1. 新建一个wxml 文件,在test文件夹底下新建一个wxml空文件
    1. 编辑test.wxml 文件

       <view class="container">  
              <text>这是test页面!!!</text>  
       </view>  
      
    2. 同样的方法,创建test.js文件,编辑test.js文件

       //test.js  
       //获取应用实例  
       var app = getApp()  
       Page({  
         data: {  
           userInfo: {}  
         },  
         onLoad: function () {  
           console.log('onLoad test');  
         }  
       })  
      
    3. 将test 页面加入 app.json,打开全局文件 app.json,在文件里面添加 "pages/test/test"(加入一条 test 页面所在的目录 )

    1. 在首页加入跳转访问链接, 在首页写一个页面入口 ,跳转到我们要测试的页面上,直接在首页 pages/index/index.wxml 添加一段代码一句链接

       <view class="btn-area">  
          <navigator url="/pages/test/test" hover-class="navigator-hover">跳转test页面</navigator>  
        </view>  
      
    2. 测试,保存代码,点击上面的编译按钮,所有代码运行起来,点击首页的“跳转到test页面”,跳转成功。

    3. 设置页面标题,找到 pages/test/ 目录 新建一个 test.json 文件 加入如下代码。

       {
         "navigationBarTitleText": "test详情页"
       }
      

    相关文章

      网友评论

          本文标题:小程序入门

          本文链接:https://www.haomeiwen.com/subject/srhdbctx.html