小程序2

今天学习的是wxhl和js以及wxss的基本写法内容。
新建了一个mycenter的页面, 每个页面是4个标准文件组成。 js,wxss,wxhl,json
运行效果如下图
在这里插入图片描述
在这里插入图片描述

下面贴上代码
mycenter.wxss,里面的common.wxss是引用另外一个样式文件, 一般是把某些样式专门写在某个样式文件,需要的地方这样引用即可。
不过我个人认为既然是抽离出来通用的样式,可以直接放在app.wxss文件里面, 这样全局生效。比如我在app.wxss里面加了一个样式.bold{ font-weight: bold; }这样无论在哪个页面,写class=‘bold’ 就是加粗字体效果了。

/* pages/mycenter/mycenter.wxss */
/* 
 * 可以导入别的样式文件
 * @import "common.wxss";
 */

 .button{
  background-color: #05adea;
  color: #ffffff;
}
/* 单位是rpx,不同的设备下 1rpx 显示的效果略有不同 */
/* .button,.button2{
  width: 630rpx;
  height:96rpx;
  margin-top:80rpx;
  border-radius:6rpx;
  font-size:36rpx;
  color: #05adea;
} */

mycenter.wxhl 这个里面的注释比较详细不多解释了

<!-- 这个class用的app.wxss里面的,公共的样式,若当前页面的wxss和app.wxss里面有相同的class名称,则以当前页面的wxss里面的为准 -->
<view class="bold">数据类型</view>
<!-- isshow这个变量控制是否显示 -->
<view wx:if='{{isshow}}'>
  <view>后台传来的字符串是:{{mystr}}</view>  
  <view>后台传来的数字是:{{num}}</view>
  <!-- 做一个判断 -->
  <view>mun与5比较:
    <label wx:if='{{num<5}}'>num小于5</label>
    <label wx:elif='{{num>5}}'>num大于5</label>
    <label wx:else>num等于5</label>
  </view>
  <view hidden="{{isshow?true:false}}"> 隐藏中 </view>
  <button bindtap="autoaddnum">点击一次就加1</button> 
  <!-- bindtap后面的autoaddnum是js里面的function名称,等同java里面的action名。catchtap和bindtap功能相同,区别是catchtap不冒泡,也就是有form表达有包含关系时不触发别的action -->
</view>
  


  <text>\n</text> <!-- 换行作用  -->
  <view class="bold">勾选类功能</view>
  <!-- 勾选 -->
  <checkbox checked="{{isshow}}"> 是否默认被勾选</checkbox>
  <!-- 选中按钮 -->
  <switch bindchange="changeswitch">这是一个开关按钮,开或者关上面的数字变成100</switch>


  <text>\n\n</text> 
  <view class="bold">遍历固定写死的数组列表</view>
  <!-- 数组 -->
  <view wx:for-items="{{[0, 1, 2, 3, 4]}}">第 {{item}} 个 </view>

  <text>\n</text>
  <view class="bold">遍历后台传来的数组列表</view>
  <!-- 遍历数组列表 index是默认的下标名称, item是默认的数据名称 可以用wx:for-index 和 wx:for-item 来自定义他们的名称。 wx:for也可以用在block标签,block类似div标签 -->
  <view wx:for="{{array}}">
    第{{index}}个是: {{item.msg}}
  </view>

  
  <text>\n</text>
  <!-- 看js里面如何在数组里面新增一个元素 -->
  <view class="bold">自动添加一个按钮</view>
  <!-- key必须唯一,作用类似id或者name,可以写固定字符串,也可以用*this表示数据本身的名称nums(等同使用固定字符串nums) -->
  <switch wx:for="{{nums}}" wx:key="*this" style="display: block;"> {{item}} </switch>
  <!-- 这里使用是的当前页面mycenter.wxss里面的样式,mycenter.wxss里面的只在当前页面有效 -->
  <button bindtap="addoneoff" class="button">点击在添加一个开关</button>

<text>\n</text>
<view class="bold">wxs模块引用</view> <!-- 有点类似html里面的引入或者写js -->
<!-- 引用wxs文件的模式 -->
<wxs src="mycenter.wxs" module="mywxsfile" />
<view>显示mycenter.wxs文件里面的变量:{{mywxsfile.testtext}}</view>
<view>显示mycenter.wxs文件里面的函数bar:{{mywxsfile.bar('yulisao')}}</view>
<view style="color:red">显示mycenter.wxs文件里面的函数substr:{{mywxsfile.substr('yulisao',1,3)}}</view>

<!-- wxs标签模式 这里有点像写了一个javascripit -->
<wxs module="mywxs"> //<!-- 自定义模块名字 -->
  var msg = "我是来自wxs标签"; //<!-- 此时私有 -->
  module.exports = { //<!-- 对外共享 -->
    msg : msg,
  }
</wxs>
<view> 显示wxs标签里面的信息是:{{mywxs.msg}} </view>

mycenter.js 新建之后自动会有data、onLoad、onReady、onShow、onHide、onUnload、onPullDownRefresh、onReachBottom、onShareAppMessage等。整体和app.js的结构一样,区别大点的就是data里面的定义的数据只在mycenter这个页面有效,而app.js里面的globalData的数据全局有效。

// pages/mycenter/mycenter.js
Page({

  /**
   * 页面的初始数据
   * 支持字符串,数字,布尔值,对象,数组
   * 在wxhl里面使用时候用两个大括号中间变量名的形式调用
   * 如{{mystr}}
   */
  data: {
    mystr: 'mystr is a', // 定义了字符串数据
    num:1, // 定义了数字
    array: [{ msg: '1' }, { msg: '2' }, { msg: '4' }, { msg: '5' }], //定义数组
    isshow: true, // 定义布尔型

    //列表测试数据
    objectArray: [
      { id: 2, obj: 'obj2' },
      { id: 1, obj: 'obj1' },
      { id: 0, obj: 'obj0' },
    ],
    nums: [1, 2, 3, 4]

    
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   * 只有定义了此事件处理函数,右上角菜单才会显示“转发”按钮
   */
  onShareAppMessage: function () {
    return {
      title: '我的分享', // 转发名称
      path: '/pages/center/center?id=123' //当前页面 path ,必须是以 / 开头的完整路径
    }
  },

  // 按一次加1按钮 功能实现
  autoaddnum: function (){
    let currentnum = this.data.num; // 获取当前number的值
    console.info("当前num:"+ currentnum);
    currentnum = currentnum + 1;//每次加1
    //重新给num赋值
    this.setData({
      num: currentnum
    })
  },

  // 开关按钮改变时触发
  changeswitch: function (){    
    this.setData({
      num: 100
    })
  },

  addoneoff: function (e) {
    // 往数组里面新增一个元素
    this.data.nums = [this.data.nums.length + 1].concat(this.data.nums)
    this.setData({
      nums: this.data.nums
    })
  }
})

mycenter.wxs 是外部的js文件,可以理解为mycenter.js抽取出来给大家共用的

/*
 * 这个文件类似单独的js文件
 * wxs 标签类似 JavaScript标签
 * 这个文件可以被别的wxs文件或者wxhl里面的wxs标签引用
 */

//var tools = require("./tools.wxs"); // 引用别的wxs文件

//每个模块都有自己独立的作用域。即在一个模块里面定义的变量与函数,默认为私有的,对其他模块不可见。
var testtext = "我来自wxs里面"; // 在wxs里面定义一个变量

// 在wxs里面定义一个函数:拼接字符串
var bar = function (msg) {
  return "我是来自wxs的"+msg;
}
// 在wxs里面定义一个函数:截取字符串
function substr(str, a, b) {
  return str.slice(a, b);
}

//一个模块要想对外暴露其内部的私有变量与函数,只能通过 module.exports 实现
//没有写这wxhl无法直接使用testtext这个变量 和 函数
module.exports = {
  testtext: testtext,
  bar: bar,
  substr: substr
};

mycenter.json一般都无数据, 根据自己需要决定是否添加

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值