Uni-App - 学习心得(下)

简介: Uni-App - 学习心得(下)

新闻列表页 index.vue

视频中就是一个新闻列表页,而列表页也就是一个列表而已。在index.vue中编写如下代码。

  • v-for表示要循环的语句,其中的news是在js部分中的data定义的属性,表示新闻列表。v-for中的item表示一个列表项,也就是一个新闻;index表示列表的下标。
  • @tap表示绑定点击事件。因为是在移动端,还是不要写@click了。click事件在移动端会有300ms的延迟
  • :data-postid表示绑定一个动态的数据,而postid表示这个动态的数据属性是这个名字。
  • 如果想直接输出数据中的内容,通过{{}}两对大括号将数据内容包裹在里面即可。例如{{item.title}}
  • 视频中特别强调了声明data属性时要注意,必须声明为返回一个初始数据对象的函数。只需要更新最新版本的HBuilder X 新建页面的时候就会自动生成。
  • 编写js代码的时候,编辑器会自动用eslint对代码进行检查。可以通过工具-插件配置-eslint-vue查看和修改配置项。
  • onLoad是页面的生命周期。uni-app 完整支持 Vue 实例的生命周期,同时还支持应用生命周期及页面生命周期
  • uni.request是发起请求,直接通过代码块敲代码会特别快。另外这个接口跟ajax还是有些不太一样的。例如发送给服务器的数据都是string类型的。具体可以查看文档发起网络请求
  • 关于项目目录、开发规范一定要遵守,直接通过官网学习即可。开发规范
<template>
    <view class="content">
        <view class="uni-list">
            <view class="uni-list-cell" hover-class="uni-list-cell-hover" v-for="(item,index) in news" :key="index" @tap="opennews" :data-postid="item.post_id">
                <view class="uni-media-list">
                    <image class="uni-media-list-logo" :src="item.author_avatar"></image>
                    <view class="uni-media-list-body">
                        <view class="uni-media-list-text-top">{{item.title}}</view>
                        <view class="uni-media-list-text-bottom uni-ellipsis">{{item.created_at}}</view>
                    </view>
                </view>
            </view>
        </view>
    </view>
</template>
<script>
    export default {
        data() {
            return {
                news: []
            };
        },
        onLoad:function(){
            uni.request({
                url: 'https://unidemo.dcloud.net.cn/api/news',
                method: 'GET',
                data: {},
                success: res => {
                    this.news = res.data;
                },
                fail: () => {},
                complete: () => {}
            });
        },
        methods:{
            opennews(e){
                uni.navigateTo({
                    url: '../news/news?postid='+e.currentTarget.dataset.postid
                });
            }
        }
    }
</script>
<style>
    .uni-media-list-body{height: auto;}
    .uni-media-list-text-top{line-height: 1.6em;}
</style>

这个列表页面就算完成了。通过整体代码,可以发现采用vue这种开发模式,代码如此的简洁,总共才不到50行的代码。相比较于传统的jQuery方式,不知道要方便多少倍。通过代码,再一次鼓舞我继续下去,将项目修改成uni-app项目,不管工作量有多么大,也不管坑有多深了。

新闻详情页 news.vue

新闻详情页,超级简单,全部代码才区区40行。就可以比较好的展示页面了。因为新闻页面一般都包含

标签等富文本内容,所以使用uni-app提供的内置组件rich-text来实现。

另外需要注意的就是,在页面的onLoad函数中,接到的参数e,实际上就是在页面index.vue传过来的参数。这种页面之间传参的方式非常方便。不用写任何多余的代码。

<template>
    <view class="wrap">
        <view class="title">
            {{title}}
        </view>
        <view class="content">
            <rich-text :nodes="content"></rich-text>
        </view>
    </view>
</template>
<script>
    export default {
        data() {
            return {
                title: '',
                content: ''
            };
        },
        onLoad:function(e){
            uni.request({
                url: 'https://unidemo.dcloud.net.cn/api/news/36kr/'+ e.postid,
                method: 'GET',
                data: {},
                success: res => {
                    this.title = res.data.title;
                    this.content = res.data.content;
                },
                fail: () => {},
                complete: () => {}
            });
        }
    }
</script>
<style>
    .wrap{padding: 10upx 2%;width: 96%;flex-wrap: wrap;}
    .title{line-height: 2em;font-weight: bold;font-size: 40upx;}
    .content{line-height: 2em;}
</style>

运行和调试项目

uni-app调试是在微信开发者工具之中调试的。所以本地一定要按照这个软件。之后ctrl+R,在微信中运行就可以调试了。开发App程序和微信小程序都需要在微信开发者工具之中调试。运行与调试介绍

我觉得还是非常方便的,因为首先在HBuilder X 编辑代码之后,按下ctrl+s,会自动编译,然后就会自动刷新微信开发者工具。这就好像是前端开发中会使用自动刷新工具一样。以前我开发的时候还会专门去用一些工具去做到实时刷新,然后可以双屏幕开发。但是我发现没有那个第三方软件做得比较好的,所以每次在浏览器里我还是需要手动刷新。但是这个HBuilder X 内置的实时刷新,是非常好用的。

另外就是编译的时候会对代码进行检查,如果有错误会直接在控制台报错。

最后就是发布安卓包和苹果包了。因为我没有申请相应的开发者证书,不能进行本地打包。这里还是要对HBuilder X 再点一个赞的。它在软件内部集成了一个打包工具,支持本地打包和云打包。如果使用云打包还可以使用Dcloud 公用的开发者证书进行测试,或者使用自己的开发者证书。非常非常的方便。

我将自己做的第一个新闻列表、新闻详情程序打包,安装到了安卓手机上测试了下,效果非常棒。因为我的苹果手机没有越狱,我也不想对自己手机越狱,就没有测试苹果系统下效果。

用Mock模拟虚拟数据

在看这个项目之前,我一直没有使用过Mock数据,进行开发。主要是我没有接触过。但是刚好在接这个项目的前一天,我知道了还有Mock数据这个东西,然后就学习了一下。我才发现自己是有多么的懒惰,没有学习这个技能。Mock数据简直是前端开发的神器啊。在实际项目开发中,经常是前端开发完成了,后端数据还没有到。等后端数据到了,会发现接口跟当初预定的接口不一致了,等各种意想不到的问题。尤其是在等接口的过程中,我以前是自己写假数据。但是当后端接口数据提供之后,会发现自己写的假数据有问题,然后就影响到我的代码了。经常搞得自己焦头烂额。

Mock数据就是为了解决这个痛点的。通过对比学习,我决定使用Easy-Mock。使用方法和注意事项可以参考数据模拟神器 easy-mock 正式开源

之所以采用这种平台化的Mock数据,是因为我没有花时间去看怎么在本地搭建一个测试服务。直接就拿来主义了。

总结

通过这个新闻列表的程序,快速上手了uni-app,完成了一套代码,多端运行。按照官网给出的说法是,学习成本非常低的,但对比我个人,我觉得还是有成本的,至少要理解其中的概念,才能更愉快的上手项目。

需要熟练掌握至少以下知识点

  • Vue的语法,至少要知道如何创建文件、怎样绑定数据、怎样通讯、如何绑定事件、怎样通过绑定数据刷新页面。我虽然没有做过vue的项目,但是好在我有看过vue文档,并练习了官网的例子。否则,在运行这个项目之前我得花不少时间去vue官网学习vue~
  • 微信小程序相关知识。同样的,如果完全没有看过微信小程序相关知识,同样会遇到问题,尤其是后续开发会用到微信小程序API
  • css3、flex布局、ES6、打包、发布、模块化开发等等。相关的知识点,都需要学习、强化。

可以发现,通过uni-app,就将目前主流的技术全都链接起来了。这样的好处是非常多的。对我个人而言,可以学习新框架、开发IOS和Android APP项目、串联起来目前主流的技术栈,积累经验。另外最重要的就是,通过这个过程,还能挣一笔零花钱~ 不仅学习了知识,积累了项目经验,还有伙食费,真是好处多多啊~

目前已经上手了这个框架,下一步就应该考虑将mui项目,修改成uni-app项目了。希望这个过程是幸福并快乐的。目前项目是180多个html页面,希望采用vue之后,页面数量能减少一半。

 

目录
相关文章
|
1月前
uni-app 17朋友圈开发
uni-app 17朋友圈开发
16 0
uni-app 17朋友圈开发
|
1月前
uni-app 155朋友圈评论功能(二)
uni-app 155朋友圈评论功能(二)
40 0
|
JavaScript 数据安全/隐私保护
uni-app移动端开发技巧总结(三)
uni-app移动端开发技巧总结
969 1
uni-app移动端开发技巧总结(三)
|
1月前
uni-app 150朋友圈点赞功能
uni-app 150朋友圈点赞功能
12 0
|
1月前
uni-app 154朋友圈评论功能(一 )
uni-app 154朋友圈评论功能(一 )
13 0
|
5月前
学习uni-app官方教程
学习uni-app官方教程
38 0
|
存储 缓存 JavaScript
uni-app移动端开发技巧总结(一)
uni-app移动端开发技巧总结
624 0
uni-app移动端开发技巧总结(一)
|
缓存 JavaScript
uni-app移动端开发技巧总结(二)
uni-app移动端开发技巧总结
171 0
uni-app移动端开发技巧总结(二)
|
移动开发 小程序 JavaScript
【知识】Uni-app-学习笔记 01
【知识】Uni-app-学习笔记 01
124 0
【知识】Uni-app-学习笔记 01
|
存储 缓存 JavaScript
【知识】Uni-app-学习笔记 05
【知识】Uni-app-学习笔记 05
180 0
【知识】Uni-app-学习笔记 05