uni-app 开发一次 多端覆盖的前端框架

1. uni-app

基于Vue的前端框架,一套代码使用Web、ios、Android、小程序等多个平台

使用HBduilderX作为开发工具,HBduilderX针对uni-app做了很多优化

2. 基本概念

2.1 Vue单文件组件规范

.vue文件中包含三个一级节点模板<template> 脚本<script> 样式<style>

<template>  
    <view>  
    注意必须有一个view,且只能有一个根view。所有模板内容写在这个view下面。  
    </view>  
</template>  

<script>  
    // 导入js组件
    var util = require('../../common/util.js')
    import util2 = from "../../common/util.js"
    export default {  

    }  
</script>  

<style>  
    // 导入央视组件
    @import "./common/uni.css"

</style>

如果想所有页面都共享样式,可以在app.vue页面写入

2.2 导入自定义组件

1.导入组件 2.注册组件 3.使用(单词之间用 - 分隔)

<template>  
    <view>  
        <uni-badge text="abc" :inverted="true"></uni-badge><!--3.使用组件-->  
    </view>  
</template>  
<script>  
    import uniBadge from "../../../components/uni-badge.vue";//1.导入组件(传统vue规范,在uni-app的easycom下可以省略这步)  
    export default {  
        data() {  
            return {  

            }  
        },  
        components: {  
            uniBadge //2.注册组件(传统vue规范,在uni-app的easycom下可以省略这步)  
        }  
    }  
</script>

如果想所有页面共享某个vue组件,可以在main.js中导入

import pageHead from './components/page-head.vue' //导入  
Vue.component('page-head', pageHead) //注册。注册后每个vue的page页面可以直接用<page-head></page-head>组件。

easycom

上面的导入自定义组件需要三步,但在HBuilderX 2.5.5后支持easycom模式,只要组件在components目录下,符合components/组件名/组件名.vue目录结构,就可以直接在template引用

2.3 对比以前html页面变化

【标签变化】

​ div变成view

​ span、font变成text

​ a变成mavigator

​ img变成image

​ select变成picker

​ iframe变成web-view

【js变化】

​ 支持给标签设置ref(类似于html里面的给元素设置id),然后在js中用this.$refs.xxx获取

<template>  
  <view>  
    <view ref="testview">11111</view>  
    <button @click="getTest">获取test节点</button>  
  </view>  
</template>  

<script>  
export default {  
  methods: {  
    getTest() {  
      console.log(this.$refs.testview)  
    }  
  }  
};  
</script>

【css变化】

没有选择器了变成了page

page {
        background-color: #efeff4;
        height: 100%;
        font-size: 28rpx;
        line-height: 1.8;
    }

3. 引入资源

【模板内引入静态资源】

<!-- 绝对路径,/static指根目录下的static目录,在cli项目中/static指src目录下的static目录 -->
<image class="logo" src="/static/logo.png"></image>
<image class="logo" src="@/static/logo.png"></image>
<!-- 相对路径 -->
<image class="logo" src="../../static/logo.png"></image>

【js引入】

// 绝对路径,@指向项目根目录,在cli项目中@指向src目录
import add from '@/common/add.js'
// 相对路径
import add from '../../common/add.js'

注意:js不支持用 / 开头引入

【css引入】

/* 绝对路径 */
@import url('/common/uni.css');
@import url('@/common/uni.css');
/* 相对路径 */
@import url('../../common/uni.css');

4. 生命周期

4.1 应用生命周期(仅App.vue)

生命周期函数功能
onLaunchuni-app初始化完成时触发(仅以此)
onShowuni-app展示在前台
onHideuni-app不再展示在前台
onErroruni-app报错时触发
onUniNViewMessage对nvue页面发送的数据进行监听
onUnhandledRejection对未处理的Promise拒绝事件监听函数
onPageNotFound页面不存在监听函数
onThemeChange监听系统主题变化时触发

4.2 页面生命周期

生命周期函数功能平台差异
onInit页面初始化触发仅百度小程序
onLoad页面加载触发
onShow页面每次出现在屏幕上都触发
onReady页面渲染完成触发
onHide页面隐藏时触发
onUnload页面卸载时触发
onResize页面窗口尺寸变化时触发仅app、微信小程序
onPullDownRefresh用户下拉时触发
onReachBottom页面滚动到底部时触发
onTabItemTap点tab时触发
onShareAppMessage用户点分享时触发
onPageScroll页面滚动时触发nvue不支持
onNavigationBarButtonTap原生标题栏按钮点击时触发仅App、H5
onBackPress页面返回时触发app、H5、支付宝小程序
onNavigationBarSearchInputChanged原生标题栏搜索框输入时触发仅App、H5
onNavigationBarSearchInputConfirmed原生标题栏搜索框搜索时触发仅App、H5
onNavigationBarSearchInputClicked原生标题栏搜索框点击时触发仅App、H5
onShareTimeline用户点击转发到朋友圈触发仅微信小程序
onAddToFavorites用户点收藏时触发仅微信小程序

5. 路由

在pages.json中的pages节点下配置页面跳转,属性为路径path和样式style

【页面栈】

6. 条件渲染和循环渲染

在一级template节点嵌套<template>做条件和循环渲染

条件渲染

<template>    <view>        <template v-if="test">            <view>test 为 true 时显示</view>        </template>        <template v-else>            <view>test 为 false 时显示</view>        </template>    </view></template>

循环渲染

<template>    <view>        <template v-for="(item,index) in list" :key="index">            <view>{{item}} - {{index}}</view>        </template>    </view></template>

7. 配置

7.1 pages.json

  • globalStyle:配置应用状态栏、导航条、标题、窗口颜色等
  • topWindow:解决宽屏适配问题
  • pages:页面跳转路由
  • easycom
  • tabBar:底层导航栏
  • condition:模式配置
  • subPackages:分包加载
  • preloadRule:分包预载配置

7.2 manifest.json

配置文件,指定应用名称,图标,权限等

7.3 package.json

增加自定义条件编译平台

7.4 uni.scss

方便整体控制应用风格,比如边框颜色,按钮颜色,背景颜色等

7.5 App.vue

主组件,但是不能写试图。

用来调用应用生命周期函数,配置全局样式,配置全局变量globalData

7.6 main.js

所有页面的入口文件,用来初始化vue实例,挂载vue,定义全局组件,使用插件如vuex等等

8. 组件

这里所谓组件其实类似于html的标签

详见官方文档https://uniapp.dcloud.io/component/view配合官网提供的temo项目一起看

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值