小程序2

匿名 (未验证) 提交于 2019-12-03 00:09:02

今天学习的是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一般都无数据, 根据自己需要决定是否添加

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!