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知识库 -> Vue学习总结-组件化,web前端开发面试技巧 -> 正文阅读

[JavaScript知识库]Vue学习总结-组件化,web前端开发面试技巧


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

</head>

<body>

    <div id="app">

        <!--自定义属性num1-->

        <counter :num1="num"></counter>

    </div>

</body>

<script src="node_modules/vue/dist/vue.js"></script>

<script> Vue.component("counter",{

        //使用props接收到的属性来渲染页面

        template: "<button @click='num1++'>点我呀,点我加1。{{num1}}</button>",

        // 通过props来接收一个父组件传递的属性

        props: ["num1"]

    })



    const app= new Vue({

        el:"#app",

        data: {

            num: 0

        }

    }) </script>

</html> 

效果:

在这里插入图片描述

[](

)props验证

我们定义一个子组件,并接收复杂数据:


<!--自定义属性num1-->

<counter :num1="num1" :num2="num2"></counter>

......

Vue.component("counter",{

    //子组件模板有且只有一个根标签

    template: "<button @click='num1++,num2++'>{{num1}}+{{num2}}={{num1+num2}}</button>",

    props: {

        num1: {

            type: Number,

            default: 0

        },

        num2: {

            type: Number,

            default: 0

        }

    }

})



const app= new Vue({

    el:"#app",

    data: {

        num1: 1,

        num2: 2

    }

}) 

子组件可以对 items 进行迭代,并输出到页面。 props:定义需要从父组件中接收的属性

  • items:是要接收的属性名称

    • type:限定父组件传递来的必须是数组

    • default:默认值

    • required:是否必须

当 prop 验证失败的时候,(开发环境构建版本的) Vue 将会产生一个控制台的警告,但还是会执行

运行效果:

在这里插入图片描述

type类型,可以有:

在这里插入图片描述

[](

)子向父的通信:$emit

子组件接收到父组件属性后,默认是不允许修改的。既然只有父组件能修改,那么加和减的操作一定是放在父组件:


const app= new Vue({

    el:"#app",

    data: {

        num: 0

    },

    methods:{

        incr(){

            this.num++;

        }

    }

}) 

但是,点击按钮是在子组件中,那就是说需要子组件来调用父组件的函数,怎么做?

我们可以通过v-on指令将父组件的函数绑定到子组件上:


<div id="app">

    <counter :num1="num" @incr1="incr()"></counter>

    <counter :num1="num" @incr1="incr()"></counter>

    <counter :num1="num" @incr1="incr()"></counter>

</div> 

在子组件中定义函数,函数的具体实现调用父组件的实现,并在子组件中调用这些函数。当子组件中按钮被点击时,调用绑定的函数:


Vue.component("counter",{

    template: "<button @click='subIncr'>点我呀,点我加1。{{num1}}</button>",

    props: {

        num1: {

            type: Number,

            default: 0

        }

    },

    methods:{

        subIncr(){

            this.$emit("incr1")

        }

    }

}) 

vue提供了一个内置的 this.$emit() 函数,用来调用父组件绑定的函数

效果:

在这里插入图片描述

[](

)路由vue-router

=========================================================================

实现功能:一个页面,包含登录和注册,点击不同按钮,实现登录和注册页切换

在这里插入图片描述

[](

)编写登录及注册组件

新建一个user目录以及login.js及register.js,编写组件,这里我们只写模板,不写功能。

login.js内容如下:


const loginForm = {

    template:'\

    <div>\

    <h2>登录页</h2> \

    用户名:<input type="text"><br/>\

    密码:<input type="password"><br/>\

    </div>\

    '

} 

register.js内容:


const registerForm = {

    template:'\

    <div>\

    <h2>注册页</h2> \

    用&ensp;户&ensp;名:<input type="text"><br/>\

    密&emsp;&emsp;码:<input type="password"><br/>\

    确认密码:<input type="password"><br/>\

    </div>\

    '

} 

[](

)编写父组件并引用子组件


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

</head>

<body>

    <div id="app">

        <span>登录</span>

        <span>注册</span>

        <hr>

        注册页/登录页

        <!--html是大小写不敏感的,对于大写字母如F用-f表示-->

        <login-form></login-form>

        <register-form></register-form>

    </div>



</body>

<script src="../node_modules/vue/dist/vue.js"></script>

<script src="js/login.js"></script>

<script src="js/register.js"></script>

<script> const app= new Vue({

        el: "#app",

        components: {

            loginForm,

            registerForm

        }

    }) </script>

</html> 

样式:

在这里插入图片描述

[](

)使用vue-router模块实现路由功能

vue-router简介和安装

使用vue-router和vue可以非常方便的实现 复杂单页应用的动态路由功能。

官网:[https://router.vuejs.org/zh-cn/](

)

使用npm安装:npm install vue-router --save

在这里插入图片描述

在index.html中引入依赖:


<script src="../node_modules/vue-router/dist/vue-router.js"></script> 

快速入门:

新建vue-router对象,并且指定路由规则:

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-10 10:46:10  更:2021-09-10 10:47:10 
 
开发: 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年5日历 -2024/5/18 22:49:40-

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