微信小程序基础-项目结构、app.json和视图层

    xiaoxiao2021-12-10  21

    一、微信小程序项目基本结构

    微信提供了微信小程序专用的开发者工具

    必须文件:app.js/ app.json(配置文件) /app.wxss(样式文件)

    pages文件夹存放所有页面,每个页面的路径都要在app.json文件中配置,写在pages字段中

    每个页面由四个文件构成.js/.json/.wxss/.wxml,放在pages中的一个文件夹下.wxml是页面结构文件

    二、app.json文件

    app.json配置项如下:

    1.page:将所有页面的路径写在其中,不用写文件后缀名。第一条为首页

    2.window:设置导航条、状态栏、标题、窗口背景色

    navigationBarBackgroundColor 导航栏背景颜色

    navigationBarTextStyle                  导航栏标题颜色

    navigationBarTitleText             导航栏标题文字内容

    backgroundColor                    窗口的背景色

    backgroundTextStyle              下拉背景字体、loading 图的样式(dark/light)

    enablePullDownRefresh       是否开启下拉刷新

    3.tabBar:配置底部的tab栏

    color                  tab上的文字默认颜色

    selectedColor  tab上的文字选中时的颜色

    backgroundColor      tab 的背景色

    borderStyle              tabbar上边框的颜色(black/white)

    list                            tab 的列表

    重点的list,其中设置一个数组,数组每个项都是一个对象,对应着一个tab和其对应的页面,配置如下:

    pagePathtab           对应的页面文件路径(必须在 pages 中先定义)

    text                         tab 上按钮文字

    iconPath                 tab上的icon路径

    selectedIconPath   选中时的icon路径

    一个tabBar示例:

    "tabBar": {

    "list": [{

      "pagePath": "pages/index/index",

      "text": "首页"

    }, {

      "pagePath": "pages/logs/logs",

      "text": "日志"

    }]

    }

    4.networkTimeout:设置各种微信请求的网络超时时间

    request            wx.request的超时时间

    connectSocket       wx.connectSocket的超时时间

    uploadFile       wx.uploadFile的超时时间

    downloadFile       wx.downloadFile的超时时间

    微信小程序-视图层

    1.数据绑定

    使用{{}}即可完成数据绑定,{{}}内也可以进行计算、逻辑判断、字符串运算等

    也可以为属性进行数据绑定,在引号内使用,如:

    <view id="item-{{id}}"> </view>,在data中定义id=1,就可以在这里绑定id为item-1

    2.列表渲染

    使用wx:for后面接需要渲染的数组,示例如下:

    <!--wxml--> <view wx:for="{{array}}"> {{item}} </view> // page.js Page({ data: { array: [1, 2, 3, 4, 5] } })

    使用列表渲染有默认值index,表示当前下标,如:{{index}}: {{item}}

    使用wx:for-index和wx:for-item可以指定当前下标名和元素名:

    <view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName"> {{idx}}: {{itemName.message}} </view>

    3.条件渲染

    使用wx:if/elif/else,示例:

    <!--wxml--> <view wx:if="{{view == 'WEBVIEW'}}"> WEBVIEW </view> <view wx:elif="{{view == 'APP'}}"> APP </view> <view wx:else="{{view == 'MINA'}}"> MINA </view> // page.js Page({ data: { view: 'MINA' } })

    上面的代码根据data中的view的值判断到底显示什么样的内容

    可以使用<block>结构进行条件渲染多个组件,注意block只是一个包装元素没有实际样式:

    <block wx:if="{{true}}"> <view> view1 </view> <view> view2 </view> </block>

    4.使用模版

    <template name="staffName"> <view> FirstName: {{firstName}}, LastName: {{lastName}} </view> </template> <template is="staffName" data="{{...staffA}}"></template> <template is="staffName" data="{{...staffB}}"></template> <template is="staffName" data="{{...staffC}}"></template> // page.js Page({ data: { staffA: {firstName: 'Hulk', lastName: 'Hu'}, staffB: {firstName: 'Shang', lastName: 'You'}, staffC: {firstName: 'Gideon', lastName: 'Lin'} } })

    上面的例子首先使用template定义了一个模版,指定name属性,然后定义了模版的内容。下面就可以直接使用这个模版了,定义data属性为模版传递每个实例化的数据,is指定要使用的是哪个模版

    5.事件

    分为bind开头的事件属性和catch开头的事件属性,前者不会阻止冒泡,后者会阻止冒泡

    每个事件对应一些属性,如果把一个event打印出来返回内容如下:

    <pre name="code" class="javascript"><view id="tapTest" data-hi="MINA" bindtap="tapName"> Click me! </view>

    Page({ tapName: function(event) { console.log(event) } }) 可以看到log出来的信息大致如下:

    { "type": "tap", //事件类型 "timeStamp": 1252, //事件生成的事件戳 "target": { //出发事件的源组件 "id": "tapTest", "offsetLeft": 0, "offsetTop": 0, "dataset": { //组件属性中以data-开头的属性集合 "hi": "MINA" } }, "currentTarget": { //事件绑定的当前组件 "id": "tapTest", "offsetLeft": 0, "offsetTop": 0, "dataset": { "hi": "MINA" } }, "touches": [{ //触摸信息,分别是距离文档左上角、出去导航栏的左上角、整个屏幕左上角距离 "pageX": 30, "pageY": 12, "clientX": 30, "clientY": 12, "screenX": 112, "screenY": 151 }], "detail": { "x": 30, "y": 12 } }

    转载请注明原文地址: https://ju.6miu.com/read-700000.html

    最新回复(0)