zoukankan      html  css  js  c++  java
  • 小程序 (一)

    一、概念

      1、小程序的逻辑层与渲染层是分开的,逻辑层 js 运行在JSCore中,渲染层是 WXML 和 WXSS ,使用Webview进行渲染,小程序没有完整的浏览器对象。

      2、小程序的运行环境

              运行环境          逻辑层          渲染层

               ios           JavascriptCore       WKWebview

              Android           v8          chromium 定制内核

            小程序开发者工具        NWJS         chrom webview

      3、小程序代码构成

        .json 文件  -->   配置文件

        .wxml        -->   模板文件

        .wxss        -->   样式文件

        .js             -->   Js 脚本逻辑文件

        

     4、小程序通信:

        

    5、WXML

        

      1、wxml与vue相似,通过 {{ }} 将数据绑定到页面中,text 是行内元素,view是块元素。

      2、列表渲染:列表渲染的属性,也需要写在{{}}中,如wx:for="{{arr}}",若写成wx:for="arr"会被当做字符串处理

    <view>
      <view wx:for="{{arr}}" wx:key="{{index}}">{{item}}</view>
    </view>

      3、条件渲染:wx:if   wx:elif  wx:eles

    <view wx:if="{{judge}}">
      <text>judge为true时显示</text>
    </view>
    <view wx:else>
      <text >judge为false时显示</text>
    </view>

      4、模板:小程序同样支持 template,给 template 标签设置name属性,表示该模板的名称。在使用时,通过is属性选择相应名称的模板进行调用,且可以通过data属性传入相应参数。

    <!--wxml-->
    <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>
    
    
    // index.js
    Page({
      data: {
        staffA: {firstName: 'Hulk', lastName: 'Hu'},
        staffB: {firstName: 'Shang', lastName: 'You'},
        staffC: {firstName: 'Gideon', lastName: 'Lin'}
      }
    })

      5、事件:为标签绑定事件,可以用  bind+事件名  作为属性,方法名称不需要用 {{}} 绑定,与 vue 不同,绑定的方法不支持传参。小程序由于在移动端,绑定点击事件不能用 bindclick ,而是需要用  bindtap 。在方法中获取数据需要 this.data[name] , 修改数据需要  this.setData 方法。

    <!--wxml-->
    <button type="primary" bindtap="onTap">
      修改条件渲染
    </button>
    
    
    onTap() {
      this.setData({
        judge: !this.data.judge
      })
    }
    // 与data属性平级

      6、scroll-view : 用来创建滚动视图,但需要设置 scroll-y="{{true}}" 才可以启动纵轴方向的滚动,同时需要通过 wxss 设置高度,超过高度才会触发滚动。

    <scroll-view scroll-y="{{true}}" style="height: 100rpx;">
      <view wx:for="{{arr}}" wx:key="{{index}}">{{item}}</view>
    </scroll-view>

      7、icon : 用来创建一个图标,它可以通过 type 属性使用微信的内置图标类型,如:success, success_no_circle, info, warn, waiting, cancel, download, search, clear。 还有 size 、color 属性。所有图标都是矢量图。若需要为图标插入文本,使用 text 标签即可。

    <icon type="success" size="23" color="green" />
    <text >成功</text>

      8、navigator :  navigator类似于HTML中的a标签,可通过 url 属性设置跳转地址,仅支持当前小程序内的跳转。

    <navigator url="/pages/login/login">跳转到login</navigator>

      9、radio 和 checkbox : radio 和 checkbox 都需要放在 radio-group 和 checkbox-group 标签中使用,前者用于实现单选功能,后者用于数据分组。

    <form action="">
      <radio-group>
        <label wx:for="{{options}}" wx:for-item="item" wx:key="{{item.id}}">
          <radio value="{{item.value}}" /> {{item.name}}
        </label>
      </radio-group>
      <checkbox-group>
        <label wx:for="{{options}}" wx:for-item="item" wx:key="{{item.id}}">
          <checkbox value="{{item.value}}" /> {{item.name}}
        </label>
      </checkbox-group>
    </form>

      10、picker : picker 可以创建一个选择器,默认的 mode 为普通选择器 selector ,它还支持多列选择器,时间选择器,日期选择器,省市区选择器。

    picker的children可以是一个标签,点击children时会弹出选择器。

    picker的range属性为必须,它可以绑定Array / Object Array,其值为选择器的选项,当其类型为Object Array时,需要用range-key属性指定选择器显示的内容。

    picker的value属性为必须,绑定的是选中项目的index。

    当选择器发生选择时,需要通过bindchange事件改变绑定的value值,bindchange的参数为event,其中event.detail = {value: value}。

    <!--wxml-->
    <form >
      <picker mode="selector" range="{{options}}" value="{{pickerSelected}}" bindchange="onPickerChange">
        <view >{{pickerSelected}}</view>
      </picker>
    </form>
    
    
    // js
    onPickerChange(event) {
      this.setData({
        pickerSelected: event.detail.value
      })
    }

    6、WXSS

      1、wxss 与 css 不同 :

        (1)没有 body ,可以通过对 page 设置样式,来影响整个页面的样式;也可以在 page 的 .json 中设置backgroundColor属性,来设置 page 下拉时出现空白区域的颜色,当页面有下拉刷新、上拉加载功能时,需要设置 backgroundColor 属性。

    page {
        background:#F8F8F8
    }

      2、新增了尺寸单位 rpx , 在小程序里依旧可以使用 px 、em 等尺寸单位。rpx 可以根据屏幕的宽度进行自适应,它规定屏幕的宽为 750rpx , 1 rpx =  0.5 px = 1 物理像素

      3、样式引入 :可以直接导入第三方的 wxss 文件。

    @import "common.wxss";
    .middle-p {
      padding:15px;
    }

      4、内联样式 :和 css 一样,wxss 支持 class 和 style 两种样式,但在用法上有区别:如果样式中有动态内容,将其写到 style 中,其他的都放到 class 文件中。如果 style 中样式写的过多,小程序在渲染视图的时候还要解析对应的样式布局,对性能有影响。

    <view style="color:{{color}};" />

      5、选择器 :

       6、全局样式与局部样式:局部样式会覆盖app.wxss 中相同的选择器。

          

      

      

  • 相关阅读:
    Eclipse Java注释模板设置详解
    windows server 2008 配置安装AD 域控制器
    linux 用户、用户组不能是全数字
    python if __name__ == '__main__'解析
    完美解决:Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x
    yum Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
    在Eclipse中手动安装pydev插件,eclipse开发python环境配置
    xp系统打开软件程序总是弹出警告窗口,很烦人对不,怎么办呢?进来看
    UliPad双击没反应,UliPad打不开
    安装Django,运行django-admin.py startproject 工程名,后不出现指定的工程解决办法!!
  • 原文地址:https://www.cnblogs.com/zhou-xm/p/13044819.html
Copyright © 2011-2022 走看看