IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> uniapp 笔记第二天 -> 正文阅读

[JavaScript知识库]uniapp 笔记第二天

一、在外部封装js方法

在我们平常 有很多个文件使用 同一个方法时 需要在每个页面都需要写入一遍

<view class="">{{timeDate1}}</view> ? 
methods: {
    getTime() {
             ? ?let date = new Date()
             ? ?let year = date.getFullYear()
             ? ?let mounth = date.getMonth()
             ? ?let day = date.getDate()
             ? ?let time = date.getHours()
             ? ?let min = date.getMinutes()
             ? ?let sec = date.getSeconds()
             ? ?let str = year + '-' + mounth +'-' + day + ' ' + time +':' + min + ':' + sec
             ? ?return str
        }   
}
 

所以说我们要在外部做一个封装

根目录/utils/文件名.js

// 默认导出 export default ?
// 1. 如果是默认导出 只能使用一次  export default
// 2. 如果你想导出多个 可以使用 按需导出 ? export ? 
// 3. 在.vue中使用的话 如果是默认  // import 引入的名字 from 文件路径 ? ?
// 4. 在.vue中使用的话 如果是按需  // import {引入的名字,引入的名字} from 文件路径 
 ? 
export default function getDate(){
    let date = new Date()
    let year = date.getFullYear()
    let mounth = date.getMonth()
    let day = date.getDate()
    let time = date.getHours()
    let min = date.getMinutes()
    let sec = date.getSeconds()
    let str = year + '-' + mounth +'-' + day + ' ' + time +':' + min + ':' + sec
    return str
}
?
export ?function getTime(){
    let date = new Date()
    let year = date.getFullYear()
    let mounth = date.getMonth()
    let day = date.getDate()
    let time = date.getHours()
    let min = date.getMinutes()
    let sec = date.getSeconds()
    let str = year + '-' + mounth +'-' + day 
    return str
}
?
?
export ?function getYear(){
    let date = new Date()
    let year = date.getFullYear()
    let mounth = date.getMonth()
    let day = date.getDate()
    let time = date.getHours()
    let min = date.getMinutes()
    let sec = date.getSeconds()
    let str = year
    return str
}

?

.vue文件中使用

<template>
    <!-- template 模板的意思 -->
    <view class="content">
        <!-- 2022-7-2 9:17:56 -->
        <view class="">{{timeDate1}}</view> ? 
        <!-- 2022-7-2  -->
        <view class="">{{getTime1}} </view>
        <!-- 2022 -->
        <view class="">{{getYear1}}</view>
    </view>
    
</template>
<script>
    // import 引入的名字 from 文件路径
    // import timeDate from '../../utils/timeDate.js'
    // 按需导入
    // import {getTime} from '../../utils/timeDate.js'
    // 简写成一行 
import timeDate,{getTime,getYear} ?from '../../utils/timeDate.js'
export default {
    name: 'index',
    data() {
        return {
            aaa: 'hello', // 默认放到vue实例上
            title: 'Hello',
            title1: 'hello world',
            num: 5,
            flag: false,
            timeDate1:timeDate(),
            getTime1:getTime(),
            getYear1:getYear()
        }
    },

二、页面跳转

1.uni.navigateTo

// 保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面。
                 uni.navigateTo({
                    url: '/pages/mine/mine'
                 });

2.uni.redirectTo

  // 关闭当前页面,跳转到应用内的某个页面。 删除一个页
                uni.redirectTo({
                    url: '/pages/mine/mine'
                });

3.uni.reLaunch

// 关闭所有页面,打开到应用内的某个页面。 删除所有页
                 uni.reLaunch({
                    url: '/pages/mine/mine'
                 });

4.uni.switchTab

// 跳转到底部tabbar页
                 uni.switchTab({
                    url: '/pages/mine/mine'
                });

三、生命周期

什么是生命周期

生命周期 : 每到一个阶段就要做不同的事情 生命周期也一样 :每到一个阶段 就执行 不同的钩子函数

img

到了页面中也一样 比如页面从开始创建 =》销毁 会执行哪些生命周期的钩子函数

函数名说明执行时机使用场景
onLoad监听页面加载,其参数为上个页面传递的数据,参数类型为 Object(用于页面传参),参考示例页面初始进入只在初始化时使用一次
onShow监听页面显示。页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面每次进入需要每次更新数据
onReady监听页面初次渲染完成。注意如果渲染速度快,会在页面进入动画完成前触发页面初始进入onLoad、onShow之后更多根据搭配插件使用
onHide监听页面隐藏每次离开更多于 记录一些数据
onUnload监听页面卸载最后离开卸载一些监听事件

四、事件

事件有很多 比如 我们点击按钮进行跳转 这时候就需要给一个按钮绑定点击事件

1. 点击事件

语法 :v-on:click="方法名" 方法名一定是在methods存在这的 方法

<button type="default" v-on:click="add">让数字+1</button>
// v-on: 可以简写成 @
<button type="default" @click="reduce">让数字-1</button>

例如实现一个 加、减 的功能

<template>
    <view>
        <button type="default" @click="reduce">让数字-1</button>
        <button type="default" @click="editStatuss">让涛哥变帅</button>
    </view>
</template>
?
<script>
    export default {
        data() {
            return {
                num:1,
            }
        },
 ? ? ? ?methods: {
            add(){
                // console.log('我想让数字+1呢');
                this.num = this.num + ?1
            },
            reduce(){
                this.num = this.num - 1
            },
 ? ? ?  }
}

2.input 事件

input 顾名思义就是 input标签上的事件 记得只有一些输入的标签才会有这些功能

每次在input上输入一次 就会执行这个方法

<input v-model="name" @input="inputName" type="text" placeholder="请输入你的姓名" ?style="background: skyblue;" ?/>
 ? ?
inputName(e){
            // e/event : 事件对象参数
            console.log(e)
}
 

五、数据双向绑定

也是需要给一些输入的 功能 进行一下双向绑定 比如说input、textarea

<input v-model="name" @input="inputName" type="text" placeholder="请输入你的姓名" ?style="background: skyblue;" ?/>
?
name:'我叫强哥'

只需要加上 v-model  主要数据发生变化就会影响视图 视图变化就会影响数据 所以是双向的意思

如果说你实现很难理解? 你就可以理解为 给他定义了一个变量? 他用了什么变量 他变量的值就是我input 的值

如果想要获取值 只需要 this.定义的变量就可以拿到

六、自定义tabbar?

这东西不需要我们自己去记下来是哪个单词,直接去跟着官网操作就好了? 官网

pages.json

"tabBar": {
		"color": "#323233",
		"selectedColor": "#EB1B34",
		"borderStyle": "black",
		"backgroundColor": "#ffffff",
		"list": [{
			"pagePath": "pages/index/index",
			"iconPath": "static/image/ic_tabar_home_n@2x.png",
			"selectedIconPath": "static/image/ic_tabar_home_n_1@2x.png",
			"text": "首页"
		}, {
			"pagePath": "pages/user/user",
			"iconPath": "static/image/ic_tabar_my_n@2x.png",
			"selectedIconPath": "./static/image/ic_tabar_my_s@2x.png",
			"text": "我的"
		}]
	}

七、封装组件?

组件:一个.vue 文件就是一个组件

?提到封装 肯定是我们经常干的了,比如我们平常会封装一些方法 、例如获取时间 每个页面都要使用我们可以单独抽离出一个文件去使用 ,而组件也是一样,我们也需要自己去封装它

我们一般情况下会在根目录/components/xx.vue 文件 进行创建

举个 例子components/Navigation.vue? ?

<template>
	<view class="">
		<view class="nav flexC">
			我是一个导航栏
		</view>
	</view>
</template>

上面呢 是一个组件 我们需要在其他页面中去使用它?

不管是单文件注册还是全局注册 我们都需要遵循三个顺序
1. 引入要使用的组件

import 引入的变量名 from 来自哪个文件
2. 注册组件
?单文件注册? components:{? ? NavigationBar?}? ? //? ?全局注册 Vue.component('注册的名字',组件变量名)

3. 使用

<注册的组件 />

1.单文件注册

index.vue

<template>
	<view class="">
        // 3. 使用组件
		<NavigationBar></NavigationBar>

	</view>
</template>

<script>
    // 1. 引入组件
	import NavigationBar from '../../componets/Navigation.vue'
	export default {
        // 2.注册组件
		 components:{
			NavigationBar
		 },
	
	}
</script>

2. 全局注册

main.js

import Vue from 'vue'
// 全局注册组件
import Navigation from './componets/Navigation.vue'
// (给全局注册起个名字, 组件的变量)
Vue.component('NavigationBar', Navigation)

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:34:49  更:2022-08-06 10:38:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:53:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码