005 vue

2024-08-21 04:12
文章标签 javascript vue frontend 005

本文主要是介绍005 vue,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • vue常用指令
    • 01 vue-helloworld.html
    • 02 v-if与v-show.html
    • 03 v-on.html
    • 04 v-for.html
    • 05 v-bind.html
    • 06 v-model.html
  • vue的生命周期
  • vue组件化开发思想
  • 使用vue脚手架进行模块化开发
    • index.html
    • main.js
    • App.vue
    • Hello.vue
    • index.js

Vue官方文档
https://cn.vuejs.org/
Vue开源项目汇总
https://github.com/opendigg/awesome-github-vue
Vue.js中文社区
https://www.vue-js.com/

https://webpack.docschina.org/
https://vuejs-templates.github.io/webpack

npm install vue@2.6.12

vue常用指令

01 vue-helloworld.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div id="app"><!--获取vue对象中的data里面的值--><input type="text" v-model="num"/><button v-on:click="num++">点赞</button><button v-on:click="cancle">取消</button><h1>{{name}},开发好用,有{{num}}个开发者购买</h1></div>
</body><script src="./node_modules/vue/dist/vue.js"></script><script>let vm = new Vue({el: "#app",//绑定元素data: {//封装数据name: "macPro",num: 1},methods: {//封装方法cancle(){this.num --;}},});
</script></html>

02 v-if与v-show.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div id="app"><!-- 获取vue对象中data里的数据 --><p v-if="isShow">我是v-if数据</p><p v-show="isShow">我是v-show数据</p></div><!-- 引入vue.js文件 --><script src="../node_modules/vue/dist/vue.js"></script><script>let vm = new Vue({el: '#app',data: {isShow: false}});</script>
</body>
</html>

03 v-on.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div id="app"><button v-on:click="count++">增加1</button><!-- 对v-on指令,可以使用 @符号替代--><button @click="count++">增加1</button><!-- 调用add方法,当前count值+1--><button @click="add">增加1</button><!-- 调用total方法,传入当前的count值--><button @click="total(count)">执行total方法</button><!-- 点击回调只会触发一次--><button @click.once="doThis">只会触发一次</button><p>上面的按钮总被点击了{{count}}次</p></div>
</body>
<!-- 引入vue.js文件 -->
<script src="../node_modules/vue/dist/vue.js"></script>
<script>let vm = new Vue({el: '#app',data:{count:0},methods: {add:function(){this.count++;},total:function(num){console.log("累计点击次数"+num);console.log("total方法执行了");},doThis:function(){console.log("doThis方法执行了,只能执行一次");}}});
</script>
</html>

04 v-for.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div id="app"><p v-for="(item, index) in list">{{item}}----{{index}}</p><p v-for="person in persons">{{person.name}} --- {{person.age}} --- {{person.gender}}</p></div>
</body>
<!-- 引入vue.js文件--><script src="../node_modules/vue/dist/vue.js"></script><script>new Vue({el:'#app',data:{list:['迪丽热巴','古力娜扎','欧阳娜娜'],persons:[{name:'老王',age:38,gender:'男'},{name:'热巴',age:26,gender:'女'}]}});</script>
</html>

05 v-bind.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div id="app"><font size="5" v-bind:color="color1">拼多多</font><font size="5" :color="color2">京东</font><hr><a :href="'https://'+url">跳转网站</a></div>
</body>
<!-- 引入vue.js文件--><script src="../node_modules/vue/dist/vue.js"></script>
<script>let vm = new Vue({el:'#app',data:{color1: 'blue',color2: 'red',url:'www.jd.com'}});
</script>
</html>

06 v-model.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div id="app">用户名:<input type="text" id="username" v-model="user.username"><br>密 码:<input type="password" id="password" v-model="user.password"><br><input type="button" @click="func" value="提交数据"></div>
</body>
<!-- 加入vue.js文件--><script src="../node_modules/vue/dist/vue.js"></script><script>let vm = new Vue({el: '#app',data: {user: {username:'',password:''}},methods: {func(){console.log(this.user.username,this.user.password);//对数据的值 再次赋值进行更新this.user.username="tom123";this.user.password="456"}}});</script>
</html>

vue的生命周期

vue⽣命周期可以分为⼋个阶段,分别是:
beforeCreate(创建前)、created(创建后)、beforeMount(载⼊前)、mounted(载⼊后)、
beforeUpdate(更新前)、updated(更新后)、beforeDestroy(销毁前)、destroyed(销毁后)
如果想在⻚⾯加载完毕后就要执⾏⼀些操作的话,可以使⽤created和mounted钩⼦函数

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><div id="app">{{message}}</div><script src="./node_modules/vue/dist/vue.js"></script><script>const vm = new Vue({el: '#app',data: {message: 'Vue的⽣命周期'},beforeCreate: function () {console.group('------beforeCreate创建前状态------');console.log("%c%s", "color:red", "el : " + this.$el);//undefinedconsole.log("%c%s", "color:red", "data : " +this.$data); //undefinedconsole.log("%c%s", "color:red", "message: " +this.message);//undefined},created: function () {console.group('------created创建完毕状态------');console.log("%c%s", "color:red", "el : " + this.$el);//undefinedconsole.log("%c%s", "color:red", "data : " +this.$data); //已被初始化console.log("%c%s", "color:red", "message: " +this.message); //已被初始化},beforeMount: function () {console.group('------beforeMount挂载前状态------');console.log("%c%s", "color:red", "el : " +(this.$el)); //已被初始化console.log(this.$el);console.log("%c%s", "color:red", "data : " +this.$data); //已被初始化 console.log("%c%s", "color:red", "message: " +this.message); //已被初始化 },mounted: function () {console.group('------mounted 挂载结束状态------');console.log("%c%s", "color:red", "el : " + this.$el);//已被初始化console.log(this.$el);console.log("%c%s", "color:red", "data : " +this.$data); //已被初始化console.log("%c%s", "color:red", "message: " +this.message); //已被初始化},beforeUpdate: function () {console.group('beforeUpdate 更新前状态===============》');console.log("%c%s", "color:red", "el : " + this.$el);console.log(this.$el);console.log("%c%s", "color:red", "data : " +this.$data);console.log("%c%s", "color:red", "message: " +this.message);},updated: function () {console.group('updated 更新完成状态===============》');console.log("%c%s", "color:red", "el : " + this.$el);console.log(this.$el);console.log("%c%s", "color:red", "data : " +this.$data);console.log("%c%s", "color:red", "message: " +this.message);},beforeDestroy: function () {console.group('beforeDestroy 销毁前状态===============》');console.log("%c%s", "color:red", "el : " + this.$el);console.log(this.$el);console.log("%c%s", "color:red", "data : " +this.$data);console.log("%c%s", "color:red", "message: " +this.message);},destroyed: function () {console.group('destroyed 销毁完成状态===============》');console.log("%c%s", "color:red", "el : " + this.$el);console.log(this.$el);console.log("%c%s", "color:red", "data : " +this.$data);console.log("%c%s", "color:red", "message: " +this.message)}})// 设置data中message数据值//vm.message = "good...";// 销毁Vue对象//vm.$destroy();</script>
</body></html>

vue组件化开发思想

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div id="app"><button v-on:click="count++">投币了{{count}}次</button><praise-button></praise-button><praise-button></praise-button><collect-button></collect-button><collect-button></collect-button></div>
</body><!-- 引入vue.js文件--><script src="./node_modules/vue/dist/vue.js"></script><script>//1.VUE全局声明一个组件Vue.component("praise-button",{template:'<button v-on:click="count++">点赞了{{count}}次</button>',data() {return {count:1}}});//2.VUE局部声明一个组件const collectButton = {template:'<button v-on:click="count++">收藏了{{count}}次-----</button>',data() {return {count:1}}}let vm = new Vue({el: '#app',data:{count:1},components:{//声明所定义的局部组件'collect-button':collectButton}});</script>
</html>

使用vue脚手架进行模块化开发

全局安装webpack依赖

npm install webpack -g

全局安装vue脚手架

npm install -g @vue/cli-init

创建⼀个⽂件夹在该路径下执⾏

vue init webpack my-project

运行项目

npm install
npm run dev

访问
http://localhost:8080

index.html

<!DOCTYPE html>
<html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>my-project</title></head><body><div id="app"></div><!-- built files will be auto injected --></body>
</html>

main.js

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'Vue.config.productionTip = false/* eslint-disable no-new */
new Vue({el: '#app',router,components: { App },template: '<App/>'
})

App.vue

<template><div id="app"><img src="./assets/logo.png"><!--使用router-link组件来导航通过传入'to'属性指定链接<router-link>默认会被渲染成一个<a>标签--><router-link to="/">首页</router-link><router-link to="/Hello">去Hello</router-link><router-view/></div>
</template><script>
export default {name: 'App'
}
</script><style>
#app {font-family: 'Avenir', Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;
}
</style>

Hello.vue

<template><div><h1>你好,hello,{{name}}</h1></div>
</template><script>
export default {data() {return {name: 'vue'}}
}
</script><style></style>

index.js

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import Hello from '@/components/Hello'Vue.use(Router)export default new Router({routes: [{path: '/',name: 'HelloWorld',component: HelloWorld},{path: '/Hello',name: 'Hello',component: Hello}]
})

这篇关于005 vue的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1092084

相关文章

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

css渐变色背景|<gradient示例详解

《css渐变色背景|<gradient示例详解》CSS渐变是一种从一种颜色平滑过渡到另一种颜色的效果,可以作为元素的背景,它包括线性渐变、径向渐变和锥形渐变,本文介绍css渐变色背景|<gradien... 使用渐变色作为背景可以直接将渐China编程变色用作元素的背景,可以看做是一种特殊的背景图片。(是作为背

CSS自定义浏览器滚动条样式完整代码

《CSS自定义浏览器滚动条样式完整代码》:本文主要介绍了如何使用CSS自定义浏览器滚动条的样式,包括隐藏滚动条的角落、设置滚动条的基本样式、轨道样式和滑块样式,并提供了完整的CSS代码示例,通过这些技巧,你可以为你的网站添加个性化的滚动条样式,从而提升用户体验,详细内容请阅读本文,希望能对你有所帮助...

css实现图片旋转功能

《css实现图片旋转功能》:本文主要介绍了四种CSS变换效果:图片旋转90度、水平翻转、垂直翻转,并附带了相应的代码示例,详细内容请阅读本文,希望能对你有所帮助... 一 css实现图片旋转90度.icon{ -moz-transform:rotate(-90deg); -webkit-transfo

vue基于ElementUI动态设置表格高度的3种方法

《vue基于ElementUI动态设置表格高度的3种方法》ElementUI+vue动态设置表格高度的几种方法,抛砖引玉,还有其它方法动态设置表格高度,大家可以开动脑筋... 方法一、css + js的形式这个方法需要在表格外层设置一个div,原理是将表格的高度设置成外层div的高度,所以外层的div需要

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

详解如何在React中执行条件渲染

《详解如何在React中执行条件渲染》在现代Web开发中,React作为一种流行的JavaScript库,为开发者提供了一种高效构建用户界面的方式,条件渲染是React中的一个关键概念,本文将深入探讨... 目录引言什么是条件渲染?基础示例使用逻辑与运算符(&&)使用条件语句列表中的条件渲染总结引言在现代