由于要开发鸭梨读书的网站,今天在思考,到底应该是选择H5呢,还是选择小程序呢,还是选择做iOS呢?后来我想起来之前学习的时候看到过uni-app这个东西,于是就找了一下官网,发现它真的可以解决这个问题。于是B站找了这个黑马程序员的课程视频来学习。
P1-P3:
看了一下老师的介绍,感觉这个uni-app就是vue和小程序的整合体,基本上大部分是小程序的项目结构,但是具体到页面上,又不像小程序那样把一个页面拆成html/css/js/json四个文件,而是使用vue的模式,在一个.vue文件里直接放置tempate/js/css来完成这个页面。我觉得这样可能更加直观一点。
P4:globalStyle全局配置
这一章讲的是pages.json文件的配置,基本上跟小程序是一样的,具体配置的说明文档在这里。
P5:创建新页面和页面配置
在pages文件夹里创建一个页面同名文件夹和以.vue结尾的同名页面,就创建了一个新页面。在pages.json的pages数组里面新建一个{}里面包含"path"和"style"两个属性,用来定义这个页面的配置。
调整页面展示顺序
在pages.json里将想要默认出现的页面放在第一位,就会默认先展示这个页面。
style里单独设置h5样式
在style里添加一个"h5"属性即可。同样支付宝小程序等也支持。
P6-P7:配置基本tabbar
tabbar即底部导航栏,最少2个,最多5个。文档地址
tabBar在pages.json里最高级配置,里面最主要是list数组,定义菜单的个数内容,里面有两个是必须的,也就是text和pagePath。
P8: condition启动模式配置
condition是用来开发的,模拟上线上用户直达的页面。
比如当我们新建一个详情页,点击tab并不能直接进去,只能通过直接打开页面地址进入。
在pages.json最高级建立"condition"属性,下面使用"current"和"list"来定义要打开的页面。
比如current为0,就会打开list[0]页面。list是一个对象数组,每一个页面对象里可以定义name/path/query(参数)。
之后就可以在小程序开发工具里的“普通编译”那里选择跟name同样名称的选项进入页面了。
P9:text组件
组件就是里面的一个个component,文档在这里
三个属性:selectable, space, decode是否解码
P10:view组件
属性hover-class定义点击时候的class
hover-stop-propagation是当上一级view也有hover-class的时候,点击本view阻止上一级view也同时触发hover-class
hover-start-time和hover-stay-time定义开始时间和持续时间
P11:button组件
这个好像也没有什么特别的,看文档即可。
P12:image组件
标签是全称,src跟原来一样,mode使用的时候了解一下。
P13:样式
- rpx是responsive px,将屏幕默认分为750份,所以750rpx是正好跟屏幕等宽的,375rpx就恒定是一半屏幕宽,同样适用于字体大小
- 导入外部样式文件,只需要在style里@impot url("./aaa.css")即可
- page等于body
- app.vue里面的样式为全局样式,每个页面的样式为局部样式,局部样式优先级高于全局样式
- 字体文件小于40k会自动转成base64格式,超过需要自己转,这个不知道怎么转还
- 引入字体需要使用~@作为路径开头,比如src: url('~@/static/iconfont.ttf')
- 如果使用scss,需要安装scss/sass编译插件
- uni.scss里面的全局变量可以在任何style里面使用,比如color: $global-color;
P14:数据绑定
跟vue一样
P15: v-bind和v-for
跟vue一样
P16: 绑定事件和在事件中传参
跟vue一样
P17:生命周期函数
应用生命周期函数:onLaunch, onShow, onHide, onError,定义在app.vue文件里,其中onLaunch只会调用一次,其他都可以是多次。
页面生命周期函数:onLoad, onShow, onReady, onHide, onUnload,其中onLoad和onReady只会调用一次,onShow和onHide会多次。点击tab直接打开的页面,不会重复onLoad,只会调用onShow和onHide。
P18:下拉刷新
页面生命周期里有onPullDownRefresh函数,下拉页面时调用。
...
P32:封装call API的服务
要封装的原因是因为对于API部分代码来讲,一般是有固定规则的。首先api的域名端口等一般是固定的,如果每次都写就会导致重复,且后续修改起来也很麻烦。然后不同的接口对应的不同的路径,那么每次call的时候只要讲路径作为参数输入就可以。之后是call的结果成功和错误的处理基本上都是一样的,错误的时候抛出异常,成功了就将结果赋值到data里的变量。基于这些考虑,封装这个服务是很好的。
具体做法单独写了一篇文章,参考这里《uni-app封装api接口调用服务》
P33:
最新回复