找回密码
 立即注册

从零开始一个微信小程序版知乎

匿名  发表于 2021-12-18 10:59:24 阅读模式 打印 上一主题 下一主题
之前工作没间接停止太小法式的开辟,比来闲了下来就赶紧进修一下。由于从零起头,所以没有益用任何框架及UI库,记录一下本次开辟中踩过的坑吧~

展现结果(界面款式设想与交互来自iOS 4.8.0版本知乎App):

从零起头一个微信小法式版知乎-1.jpg


静态结果请移步到GitHub检察。

一、起头前的预备
    申请账号:按照小法式注册文档,填写信息和提交响应的材料,便可以具有自己的小法式帐号。开辟工具:微信开辟者工具数据来历:
  • Easy Mock: 一个数据模拟神器,可以按照自己需要的格式自己编写返回数据,而且一切的数据都是随机天生的。
  • Mock.js: Easy Mock引入了Mock.js,可是文档中仅供给了部分语法,要想自己的mock数据写的更精简,可以在Mock.js中检察更多具体语法。icon: 阿里巴巴矢量图标库

二、初始化一个小法式
    新建一个空文件夹翻开微信开辟者工具,依照“你的第一个小法式”文档中的步调即可建立一个自己的小法式。目录结构
weChatApp|___client|        |___assets                                 // 存储图片|        |___pages                                 // 页面|        |        |___index // 首页| |                |___index.wxml // 页面结构文件|        |                |___index.wxss // 款式表文件|        |                |___index.js // js文件|        |___utils                                 // 全局公共函数|        |___app.js                         // 系统的方式处置文件|        |___app.json                         // 系统全局设置文件|        |___app.wxss                         // 全局的款式表|        |___config.json                 // 域名等设置文件|___project.config.json|___README复制代码
    小法式设置文件app.json内容
{        // 页面路由 "pages": [ "pages/index/index", // 首页 "pages/findMore/findMore", // 想法页(起头起名为发现页面,后来没改/(ㄒoㄒ)/~~) "pages/userCenter/userCenter", // 更多(同上,本来起名为小我中心o(╯□╰)o) "pages/market/market", // 市场 "pages/searchResult/searchResult",// 搜索成果页 "pages/message/message", // 消息列表页 "pages/titleDetail/titleDetail", // 点击题目进入的题目详情页 "pages/contentDetail/contentDetail"// 点击内容进入的回答详情页 ], // 窗口 "window": { "backgroundColor": "#FFF", // 窗口的布风景  "backgroundTextStyle": "dark", // 下拉布景字体、loading 图的款式,仅支持 dark/light "navigationBarBackgroundColor": "#FFF",// 顶部tab布景色彩 "navigationBarTitleText": "知小乎", //顶部显现题目 "navigationBarTextStyle": "black", // 导航栏题目色彩,仅支持 black/white "enablePullDownRefresh": true // 能否开启下拉革新 }, // tab导航条 "tabBar": { "backgroundColor": "#fff", // 布景色彩                "color": "#999", // 默许笔墨色彩 "selectedColor": "#1E8AE8", // 选中时笔墨色彩 "borderStyle": "white", // tabbar上边框的色彩, 仅支持 black/white  /**  * tab列表,最少2个,最多5个         * selectedIconPath: 选中时图片         * iconPath: 默许图片         * pagePath: 对应页面路由         * text: 对应文案         **/ "list": [{ "selectedIconPath": "assets/home-light.png", "iconPath": "assets/home.png", "pagePath": "pages/index/index", "text": "首页" }, { "selectedIconPath": "assets/find-light.png", "iconPath": "assets/find.png", "pagePath": "pages/findMore/findMore", "text": "想法" }, { "selectedIconPath": "assets/market-light.png", "iconPath": "assets/market.png", "pagePath": "pages/market/market", "text": "市场" }, { "selectedIconPath": "assets/msg-light.png", "iconPath": "assets/msg.png", "pagePath": "pages/message/message", "text": "消息" }, { "selectedIconPath": "assets/more-light.png", "iconPath": "assets/more.png", "pagePath": "pages/userCenter/userCenter", "text": "更多" }] }}复制代码
    设置接口域名: 因利用的是Easy Mock模拟接口数据,是以可以在小法式治理背景-开辟设备-办事器域名中将request正当域名设置为https://www.easy-mock.com。

三、开辟中的碰到的题目及处理计划

1、小法式衬着HTML片断

看了网页版知乎,接口返回的回答数据是一段HTML的代码片断,所以答案中可以在肆意位置都插入图片。 对,没错,就是下面酱紫的(╯°□°)╯︵┻━┻

从零起头一个微信小法式版知乎-2.jpg


经过频频尝试,发现原生写法不支持衬着一段HTML代码片断,是以放弃了返回HTML的代码片断的做法,所以我的回答列表中也没有图片(?_?)。

但在调研中发现了一个自界说组件:wxParse-微信小法式富文本剖析组件,还没尝试利用,预备鄙人次优化项目时尝试一下。

2、首页的顶部tab切换

实现思绪

每个可点击的tab别离绑定data-index,在最外层bindtap绑定的方式中获得所点击的tab的index值,再按照index的值别离显现对应的tab-content
<view class="tab-wrapper" bindtap="setActive"> <view class="tab-item {{isActive == 0 ? 'tab-item-active' : ''}}" data-index="0">关注</view> <view class="tab-item {{isActive == 1 ? 'tab-item-active' : ''}}" data-index="1">保举</view> <view class="tab-item {{isActive == 2 ? 'tab-item-active' : ''}}" data-index="2">热榜</view> <view class="tab-item-line" animation="{{animationData}}"></view></view><view class="tab-content {{isActive == 0 ? 'show' : 'hide'}}"> // ...</view><view class="tab-content {{isActive == 1 ? 'show' : 'hide'}}"> // ...</view><view class="tab-content {{isActive == 2 ? 'show' : 'hide'}}"> // ...</view>复制代码
3、上拉加载和下拉革新

实现思绪

上拉加载:emmmmmm......我指的上拉加载是触底后的加载更多,怕跟大师了解的纷歧样o(╯□╰)o。

    原生方式:onReachBottom,获得到新数据后concat到原本的数据列表后。

下拉革新:

    原生方式:onPullDownRefresh,将原本的数据列表concat到获得到的新数据后。

要留意的是,每次对数组停止操纵后,都要利用setData对原数组重新赋值,否则数据不会更新的啊( ⊙ o ⊙ )!

4、搜索历史的存储

实现思绪

wx.setStorage、wx.getStorage和wx.removeStorage

    存储搜索历史:利用wx.setStorage,触发搜索时,检查搜索历史列表中能否含有该字段,倘使有则疏忽,假如没有则将该字段压入数组中。显现搜索历史:利用wx.getStorage,在显现搜索蒙层时,获得到搜索历史列表,循环显现,当搜索历史列表长度大于1时,显现清空搜索历史的按钮。删除搜索历史:单一删除:每个搜索历史都绑定删除事务,获得到改关键词的index,从渠道的搜索历史列表中删除对应index的关键词,并经过wx.setStorage重新存储。全数删除:利用wx.removeStorage,间接移除搜索历史对应的关键字。

5、swiper轮播组件

在想法页的轮播组件中,原知乎App中的xxxx人正在会商是嵌在轮播模块内的垂直偏向的笔墨轮播,可是小法式中的swiper轮播组件不支持相互嵌套,是以没能实现该部分,只好换一种款式去写/(ㄒoㄒ)/~~。

从零起头一个微信小法式版知乎-3.jpg


6、转动吸顶

页面中的题目栏在转动到顶部时,吸顶展现。

实现结果

从零起头一个微信小法式版知乎-4.jpg


实现计划
    全部页面利用<scroll-view></scroll-view>包裹,而且绑定bindscroll事务,监听转动间隔。设备<scroll-view>为垂直偏向时,需设备<scroll-view>的高度。复制一个不异的题目栏,增加吸顶款式的类fixed。利用wx:if判定当前页面转动间隔能否到达要求,假如到达所需间隔,则衬着这个吸顶的题目栏。
<view class="find-hot-header fixed" wx:if="{{scrollTop >= 430}}"> <view class="find-hot-title">比来热门</view></view><view class="find-hot-header"> <view class="find-hot-title">比来热门</view></view>复制代码
7、展开和收起全文

展现结果

从零起头一个微信小法式版知乎-5.jpg


笔墨部分默许增加class,超越两行笔墨显现省略号。
.text-overflow{ height: 85rpx; display: -webkit-box; word-break: break-all; text-overflow: ellipsis; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp:2;}复制代码
点击展开全文和收起全文时对showIndex[index]的值取反,对应增加或移除该class。
<view class="find-hot-content {{!showIndex[index] ? 'text-overflow' : ''}}"> {{item.content}}</view><view wx:if="{{!showIndex[index]}}" class="find-show-all" data-index="{{index}}" bindtap="toggleShow">展开全文</view><view wx:if="{{showIndex[index]}}" class="find-show-all" data-index="{{index}}" bindtap="toggleShow">收起全文</view>复制代码
8、变动switch款式

switch类名以下,一定要加上父类,否则全局的城市被改掉_(:з」∠)_。
父类 .wx-switch-input{ display: inline-block; position: absolute; top: 20rpx; right: 20rpx; width: 84rpx; height: 44rpx;}父类 .wx-switch-input::before{ width: 80rpx; height: 40rpx;}父类 .wx-switch-input::after{ width: 40rpx; height: 40rpx;} 复制代码
四、总结

经过此次小法式的开辟,学到了很多工具,虽然碰到了很多题目,但处理题目标进程让我收获的更多,脱手理论才是进修的最好方式。

别的,此次项目中仍有很多功用不够完善,一些细节还可以继续优化,长路漫漫啊(??????)??。

假如文章中有毛病和不敷接待批评斧正。

从零起头一个微信小法式版知乎-6.jpg
回复

使用道具

大神点评

匿名  发表于 2021-12-18 11:00:13
有云开辟的教程吗?
回复

使用道具

匿名  发表于 2021-12-18 11:01:11
git地址呢
回复

使用道具

匿名  发表于 2021-12-18 11:01:57
转发了
回复

使用道具

匿名  发表于 2021-12-18 11:02:42
转发了
回复

使用道具

说点什么

您需要登录后才可以回帖 登录 | 立即注册
HOT • 推荐

神回复

站长姓名:王殿武 杭州共生网络科技 创始人 云裂变新零售系统 创始人 飞商人脉对接平台 创始人 同城交友聚会平台 创始人 生活经验分享社区 创始人 合作微信:15924191378(注明来意)