uni-app 框架超详细新手入门_uni框架-程序员宅基地

技术标签: 前端  js  javascript  uni-app  

什么是uni-app?(介绍)

uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架。
开发者通过编写 Vue.js 代码,uni-app 将其编译到iOS、Android、微信小程序等多个平台,保证其正确运行并达到优秀体验。

uni-app 继承自 Vue.js,提供了完整的 Vue.js 开发体验。
uni-app 组件规范和扩展api与微信小程序基本相同。

有一定 Vue.js 和微信小程序开发经验的开发者可快速上手 uni-app ,开发出兼容多端的应用。

uni-app提供了条件编译优化,可以优雅的为某平台写个性化代码、调用专有能力而不影响其他平台。

uni-app打包到App时仍然使用了5+引擎,5+的所有能力都可以在uni-app中可以使用。在App端运行性能和微信小程序基本相同。

对于技术人员而言:不用学那么多的平台开发技术、研究那么多前端框架,学会基于vue的uni-app就够了。
对于公司而言:更低成本,覆盖更多用户,uni-app是高效利器
 

uni-app的优点

  1. uni-app是一套可以适用多端的开源框架,一套代码可以同时生成ios,Android,H5,微信小程序,支付宝小程序,百度小程序等。
  2. uni-app对前端开发人员比较友好,学习成本比较低,首先uni-app是基于vue.js的。其次封装的组件和微信小程序的组件一模一样,所以对于现在的主流前端人员来说学习几乎为零,如果你作为一个前端,没有接触过vue和微信小程序的话那建议你多去加加油。
  3. uni-app使用HBX进行开发,HBX对于vue语法等支持可以说是比较完备了。使用HBX进行开发可以说是速度杠杠的。开发速度比较快
  4. uni-app拓展能力强,封装了H5+,支持nvue,也支持原生Android,ios开发。可以将原有的移动应用和H5应用改成uni-app应用。
  5. uni-app是DCloud出品的,属于国产,对于国产我们当然要支持一下
     

uni-app的缺点

  1. uni-app问世的时间还比较短,有很多地方还不是完善,坑很多,建议不喜欢爬坑的朋友那就少用uni-app。
  2. 对于使用中的一些bug及问题,官方回应的不是很及时。
     

uni-app的功能框架浏览图

在这里插入图片描述
 

工具安装

首先开发者需先下载安装 HBuilderX
在这里插入图片描述
接着在HBuilderX 点击工具栏里的文件 -->新建 -->项目:
在这里插入图片描述
创建uni-app
在这里插入图片描述

项目结构介绍

在这里插入图片描述
 
目录结构基本和小程序的目录结构相似,只是多了个基础组件的文件夹;
uni-app有自己的插件库,直接点击安装即可,而且,它也支持npm包管理,点击 工具 >> 插件安装 即可配置
在这里插入图片描述
 

uni-app开发规范

为了实现微信小程序、原生App的跨端兼容,综合考虑编译速度、运行性能等因素,uni-app 约定了如下开发规范:

页面文件遵循 Vue 单文件组件 (SFC) 规范
每个 .vue 文件包含三种类型的顶级语言块:
1.最多包含一个<template></template>模板模块
2.最多包含一个<script></script>脚本模块
3.可以包含一个或多个<style></style>样式模块,标签可以有scoped或者module属性,不同封装模式的多个style可以在同一个组件中混合使用,如可包含css、sass、less等多种封装模式。
Tips:允许添加可选的自定义块,支持导入自定义块,需要注意的是 src 导入遵循和 webpack 模块请求相同的路径解析规则,这意味着相对路径需要以 ./开始

组件标签靠近微信小程序规范,所以有微信开发经验的话将会飞速上手uni-app,没有经验也不要怕,即使不会微信小程序也会快速上手。
注意:不能使用标准HTML标签,也不能用js对dom进行操作

接口能力(JS API)靠近微信小程序规范,不过前缀 wx 需要替换为 uni

数据绑定及事件处理靠近 Vue.js 规范,同时补充了App及页面的生命周期,为兼容多端运行,建议使用flex布局进行开发
 

uni-app的样式与布局

注意:请删除 app.vue 中的全局样式:view{
    display:flex;} 在需要flex的时候使用flex即可。
尺寸单位

uni-app框架目前仅支持长度单位 px 和 %。与传统 web 页面不同,px 是相对于基准宽度的单位,已经适配了移动端屏幕,其原理类似于 rem。
PS:uni-app 的基准宽度为 750px。
开发者只需按照设计稿确定框架样式中的 px 值即可。设计稿 1px 与框架样式 1px 转换公式如下:设计稿 1px / 设计稿基准宽度 = 框架样式1px / 750px
换言之,页面元素宽度在uni-app中的宽度计算公式:750px * 元素在设计稿中的宽度 / 设计稿基准宽度

举例说明:

若设计稿宽度为 640px,元素 A 在设计稿上的宽度为 100px,那么元素 A 在uni-app里面的宽度应该设为:750 * 100 / 640,结果为:117px。

若设计稿宽度为 375px,元素 B 在设计稿上的宽度为 200px,那么元素 B 在uni-app里面的宽度应该设为:750 * 200 / 375,结果为:400px。

样式导入

使用@import语句可以导入外联样式表,@import后跟需要导入的外联样式表的相对路径,用;表示语句结束。

示例代码:
<style>
    @import "../../common/uni.css";
    .uni-card {
    
        box-shadow: none;
    }
</style>
内联样式

框架组件上支持使用 style、class 属性来控制组件的样式。

style:静态的样式统一写到 class 中。style 接收动态的样式,在运行时会进行解析,请尽量避免将静态的样式写进 style 中,以免影响渲染速度。

<view style="color:{
    {color}};" />

class:用于指定样式规则,其属性值是样式规则中类选择器名(样式类名)的集合,样式类名不需要带上.,样式类名之间用空格分隔。

<view class="normal_view" />
选择器

目前支持的选择器有:
.class .intro 选择所有拥有 class=“intro” 的组件
#id #firstname 选择拥有 id=“firstname” 的组件
element view 选择所有 view 组件
element, element view, checkbox 选择所有文档的 view 组件和所有的 checkbox 组件
::after view::after 在 view 组件后边插入内容,仅微信小程序和5+App生效
::before view::before 在 view 组件前边插入内容,仅微信小程序和5+App生效

全局样式与局部样式

定义在 App.vue 中的样式为全局样式,作用于每一个页面。在 pages 目录下 的 vue 文件中定义的样式为局部样式,只作用在对应的页面,并会覆盖 App.vue 中相同的选择器。
注意: App.vue 中通过 @import 语句可以导入外联样式,一样作用于每一个页面。

Flex布局

为支持跨平台,框架建议使用Flex布局,关于Flex布局可以参考外部文档A Complete Guide to Flexbox等。
 

注意

1.请删除 app.vue 中的全局样式:view{display:flex;} 在需要flex的时候使用flex即可。
2.App.vue 中通过 @import 语句可以导入外联样式,一样作用于每一个页面。
 

总结

本篇文章介绍了 uin-app 框架的介绍, 安装, 创建, 和基本的样式与布局,如有任何疑问请移步官网

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chen4565/article/details/118312354

智能推荐

微信小程序设置tabBar选中颜色和图标-程序员宅基地

文章浏览阅读2.9k次。{ "pages":[ "pages/index/index", "pages/logs/logs" ], "window":{ "backgroundTextStyle":"light", "navigationBarBackgroundColor": "#000", "navigationBarTitleText": "首页", "navigationBarTextStyle":"white"//只能black和white }, "t

《Linux多线程服务端编程:使用muduoC++网络库》学习笔记_there ara no arguments to weak_from_this c++-程序员宅基地

文章浏览阅读2.2k次,点赞4次,收藏25次。boost库安装:apt-cache search boost搜到所有的boost库然后:sudo apt-get install libboost-all-dev安装相应的库第一章 线程安全的对象生命期管理1.1 当析构函数遇到多线程C++多线程对象的销毁可能会碰到竞态条件,解决办法是使用shared_ptr。1.1.1 线程安全的定义1.1.2 MutexLock与MutexLockGuard#include<bits/stdc++.h>#include<b_there ara no arguments to weak_from_this c++

[Error] expression list treated as compound expression in initializer [-fpermissive]-程序员宅基地

文章浏览阅读1.4w次。[Error] expression list treated as compound expression in initializer [-fpermissive]经检查输入语句上面一行;写成 ,逗号hh~~_[error] expression list treated as compound expression in initializer [-fper

51nod 1134最长递增子序列_说明书上有着一个长度为 n (2 <= n <= 50000)的序列 a (-10^9 <= a[i-程序员宅基地

文章浏览阅读340次。1134 最长递增子序列基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注给出长度为N的数组,找出这个数组的最长递增子序列。(递增子序列是指,子序列的元素是递增的)例如:5 1 6 8 2 4 5 10,最长递增子序列是1 2 4 5 10。Input第1行:1_说明书上有着一个长度为 n (2 <= n <= 50000)的序列 a (-10^9 <= a[i] <= 10^9)的

beego之orm多条数据插入-程序员宅基地

文章浏览阅读1.1w次。有些数据库,比如MySQL支持一次性插入多条数据的语法,当然也有些数据库不支持。这里演示了两种方法,一种适用于支持多条数据插入语法的数据库,另外一个适用于不支持多条数据插入语法的数据库,两者都能实现一次性插入多条数据的功能。这里用到的两个方法:InsertMulti和PrepareInsert的原型如下:func (o *querySet) PrepareInsert() (Inserte

Ubuntu小知识(持续更新)_z,,,j vf-程序员宅基地

文章浏览阅读4.5k次,点赞2次,收藏2次。一、环境变量1、/etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。 2、/etc/environment:在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量。 3、~/.bash_profile:在登录时用到的第三个文件是.bash_pr_z,,,j vf

随便推点

Mars3D(含Cesium)数据及服务篇:在线地图的下载和使用_三维地图切片下载-程序员宅基地

文章浏览阅读2.3k次。TIF文件为栅格图像文件,后缀为tif或tiff,是ogc规范的一种,全称GeoTiff。通常不能在资源管理器中查看tif栅格影像数据的坐标系信息,需要用GIS软件查看,因为它的坐标系信息写在数据文件内部。tif可以有8位,24位等深度,一般真彩色是24位,而地形数据只有一个高度值,采用8位。目前很多卫星影像数据、地形数据的存储格式都是tif。_三维地图切片下载

基于RV1126平台imx291分析 --- rkcif_mipi注册_rockchip cif 驱动源码分析-程序员宅基地

文章浏览阅读5.1k次,点赞5次,收藏20次。Linux v4l2架构学习总链接rkcif_mipi源码dts源码如下rkcif_mipi_lvds: rkcif_mipi_lvds { compatible = "rockchip,rkcif-mipi-lvds"; ... status = "okay"; port { cif_mipi_in: endpoint { remote-endpoint = <&mipi_csi2_output>; _rockchip cif 驱动源码分析

(记)解决idea构建maven工程失败,无法解析插件_无法解析插件 com.massyframework.maven:project-maven-plug-程序员宅基地

文章浏览阅读3.3k次,点赞4次,收藏13次。记录解决这个问题的步骤过程出现无法解析插件的报错。不断的百度,修改源,还是不行。手动下载出现问题的jar包,下载到本地仓库中还是无法解析。换了手机热点,不行,挂了代理也不行。知乎上搜到了一个回答,说是ssl证书验证的问题。解决换了阿里源,这里很玄学,我直接复制阿里云上maven的配置就行,自己写就不行。知乎上一位大佬的回答(知乎)。这两部之后,成功了,很玄学。..._无法解析插件 com.massyframework.maven:project-maven-plugin:2.0.0.release

Linux的包安装—源码安装,yum安装,rpm安装_linux apr源码安装-程序员宅基地

文章浏览阅读572次,点赞21次,收藏8次。指定启用或者禁用的功能 --enable-ssl --disable-filter。16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?5、LVS、Nginx、HAproxy有什么区别?9、讲述一下Tomcat8005、8009、8080三个端口的含义?7、Tomcat和Resin有什么区别,工作中你怎么选择?

代码都智能自动生成了,还要程序员干嘛?-程序员宅基地

文章浏览阅读1.3k次。前端干着干着,就把自己干没了......作者 | 郭芮出品 | CSDN资讯要说开源精神,阿里估计在国内能够排在最前列。近几年,阿里接二连三“搞事情”。根据阿里近期发布的..._源代码智能科技有限公司

Spark数据倾斜解决方案五:对倾斜key采样后单独Join(包含完整案例代码)_spark 数据采样-程序员宅基地

文章浏览阅读870次。对倾斜的Keys采样进行单独的Join操作步骤有点复杂:首先对RDD1进行采样,例如RDD1进行Sample抽样(15%)可以计算出一个结果,其是一个RDD,采样之后进行Map操作,通过reduceBykey操作计数,然后对Key和Value进行置换,通过SortByKey进行排序,再进行Map置换操作,从而找出哪一个Key值倾斜比较严重,对其进行过滤,提取到RDD11中,剩下的提取到RDD12中。避免了占用过多内存。如果倾斜的Key特别多,如50多个倾斜的Key,我们可以一个一个地对Key进行过滤处理。_spark 数据采样