Vue学习-笔记(初学)

Vue

1.vue的判断循环

v-if: 用来控制页面元素是否展示底层控制是DOM元素 操作DOM

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

</head>
<body>
<div id="app">
    <h1 v-if="ok">yes</h1>
    <h1 v-else>no</h1>
</div>
<script>
    let vue = new Vue({
        el:"#app",
        data:{
            ok: true
        }
    });
</script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

</head>
<body>
<div id="app">
    <li v-for="item in items">
        {{item.message}}
    </li>
</div>
<script>
    let vue = new Vue({
        el:"#app",
        data:{
            items:[
                {message:"java"},
                {message:"java1"},
                {message:"java2"},
                {message:"java3"}
                ]
        }
    });
</script>
</body>
</html>

2.绑定事件

v-on

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head><!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

</head>
<body>
<div id="app">
    <button v-on:click="sayHi">点我</button>
</div>
<script>
    let vue = new Vue({
        el:"#app",
        data:{
            message:"haipeng"
        },
        methods:{//方法必须在vue的methods中
            sayHi:function (event){
                alert(this.message);
            }
        }
    });
</script>
</body>
</html>
<body>

</body>
</html>

总结:

	事件  事件源:发生事件dom元素  事件: 发生特定的动作  click....  监听器  发生特定动作之后的事件处理程序 通常是js中函数
	1.在vue中绑定事件是通过v-on指令来完成的 v-on:事件名 如  v-on:click
	2.在v-on:事件名的赋值语句中是当前时间触发调用的函数名
	3.在vue中事件的函数统一定义在Vue实例的methods属性中
	4.在vue定义的事件中this指的就是当前的Vue实例,日后可以在事件中通过使用this获取Vue实例中相关数据
	简化写法为日后在vue中绑定事件时可以通过@符号形式 简化  v-on 的事件绑定

v-show:用来控制页面中某个标签元素是否展示 底层使用控制是 display 属性

v-bind: 用来绑定标签的属性从而通过vue动态修改标签的属性

3.vue的七个属性

  • el属性
    • 用来指示vue编译器从什么地方开始解析 vue的语法,可以说是一个占位符。
  • data属性
    • 用来组织从view中抽象出来的属性,可以说将视图的数据抽象出来存放在data中。
  • template属性
    • 用来设置模板,会替换页面元素,包括占位符。
  • methods属性
    • 放置页面中的业务逻辑,js方法一般都放置在methods中
  • render属性
    • 创建真正的Virtual Dom
  • computed属性
    • 用来计算
  • watch属性
    • watch:function(new,old){}
    • 监听data中数据的变化
    • 两个参数,一个返回新值,一个返回旧值,

4.双向数据绑定

v-model: 作用用来绑定标签元素的值与vue实例对象中data数据保持一致,从而实现双向的数据绑定机制

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head><!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

</head>
<body>
<div id="app">
    输入文本:<input type="text" v-model="message">{{message}}
</div>
<script>
    let vue = new Vue({
        el:"#app",
        data:{
           message:""
        },
        methods:{
            }

    });
</script>
</body>
</html>
<body>

</body>
</html>

总结

	1.使用v-model指令可以实现数据的双向绑定 
	2.所谓双向绑定 表单中数据变化导致vue实例data数据变化   v5.vue组件(数组遍历)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

</head>
<body>
<div id="app">
    <hp v-for="item in items" v-bind:chp="item"></hp>
</div>
<script>
    Vue.component("hp",{
        props:['chp'],
        template: '<li> {{chp}}</li>'
    });
    let vue = new Vue({
        el:"#app",
        data:{
            items:["java","c","python"]
        },

    });
</script>
</body>
</html>
<body>

</body>
</html>

6.网络通信:jquary.ajax和Axios

用在浏览器和node.js异步通信框架

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
    <div id="vue">

    </div>
<script>
    var vm=new Vue({
        el:"#vue",
        mounted(){//钩子函数 链式编程
            axios.get('../data.json').then(response=>(console.log(response.data)))
        }
    })
</script>
</body>
</html>

渲染到浏览器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
    <div id="vue">
            {{info.name}}
    </div>
<script>
    var vm=new Vue({
        el:"#vue",
        data(){
            return{
                info:{
                    name:null,
                    adress:{
                        street:null,
                        city:null,
                        country:null
                    }
                }
            }
        },
        mounted(){//钩子函数 链式编程
            axios.get('../data.json').then(response=>(this.info=response.data))
        }
    })
</script>
</body>
</html>

解决闪烁模板问题

<style>
        [v-clock]{
            display: none;
        }
    </style>
</head>
<body>

    <div id="vue" v-cloak>
            {{info.name}}
    </div>

10.2.1 GET方式的请求

	  //发送GET方式请求
    axios.get("http://localhost:8989/user/findAll?name=xiaochen").then(function(response){
        console.log(response.data);
    }).catch(function(err){
        console.log(err);
    });

10.2.2 POST方式请求

		//发送POST方式请求
    axios.post("http://localhost:8989/user/save",{
        username:"xiaochen",
        age:23,
        email:"xiaochen@zparkhr.com",
        phone:13260426185
    }).then(function(response){
        console.log(response.data);
    }).catch(function(err){
        console.log(err);
    });

10.2.3 axios并发请求

并发请求: 将多个请求在同一时刻发送到后端服务接口,最后在集中处理每个请求的响应结果

 //1.创建一个查询所有请求
    function findAll(){
        return axios.get("http://localhost:8989/user/findAll?name=xiaochen");
    }

    //2.创建一个保存的请求
    function save(){
        return axios.post("http://localhost:8989/user/save",{
            username:"xiaochen",
            age:23,
            email:"xiaochen@zparkhr.com",
            phone:13260426185
        });
    }

    //3.并发执行
    axios.all([findAll(),save()]).then(
        axios.spread(function(res1,res2){  //用来将一组函数的响应结果汇总处理
            console.log(res1.data);
            console.log(res2.data);
        })
    );//用来发送一组并发请求

7.计算属性

将计算出来的结果保存在属性中。内存中运行:虚拟dom

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

</head>
<body>
<div id="app">
    <p>
        {{currentTime()}}
    </p>
</div>
<script>
    let vue = new Vue({
        el:"#app",
        data:{
            message:"chp"
        },
        methods:{
            currentTime:function (){
                return Date.now();//返回一个时间戳
            }
        },
        computed:{//计算属性,不能重名和方法,重名后调用了方法中的函数,调用不需要打括号{{currentTime}}
            currentTime1:function (){//可以把值存在属性中,而方法每次都要调用计算。结果不常变化就可以缓存起来
                return Date.now();//返回一个时间戳
        }
        }
    });
</script>
</body>
</html>

7.1生命周期(补充)

8.插槽

第一个插槽程序

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

</head>
<body>
<div id="app">
    <todo>
        <todo-title slot="todo-title":title="title">

        </todo-title>
        <todo-items slot="todo-items" v-for="item in todoitems":item="item">

        </todo-items>
    </todo>
</div>
<script>
    Vue.component("todo",{
        template:
            '<div>\
                 <slot name="todo-title"></slot>\
                 <ul>\
                    <slot name="todo-items" ></slot>\
                </ul>\
            </div>'
    })
    Vue.component("todo-title",{
        props:['title'],
        template: '<div>{{title}}</div>'
    })
    Vue.component("todo-items",{
        props:['item'],
        template: '<li>{{item}}</li>'
    })
    let vue = new Vue({
        el:"#app",
        data :{
            title:"chp",
            todoitems:["chp","chp","chp"]

        }

    });
</script>
</body>
</html>

9.自定义事件内容分发

splice():方法是修改array的万能方法,他可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素

例:arr.splice(2,3)//在下标为2的地方删除三个元素

10.vur-cli

vue-cli是官方提供的一个脚手架

什么是cli

命令行界面(英语:command-line interface,缩写:CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。也有人称之为字符用户界面(CUI)

Vue CLI安装

  1. 环境准备

    #1.下载nodejs
    http://nodejs.cn/download/
    windows系统: .msi 安装包(exe)指定安装位置 .zip(压缩包)直接解压缩指定目录
    mac os 系统: .pkg 安装包格式自动配置环境变量 .tar.gz(压缩包)解压缩安装到指定名

    #2.配置nodejs环境变量
    windows系统:
    1.计算上右键属性----> 高级属性 ---->环境变量 添加如下配置:
    NODE_HOME= nodejs安装目录
    PATH = xxxx;%NODE_HOME%
    2.macos 系统
    推荐使用.pkg安装直接配置node环境

    #3.验证nodejs环境是否成功
    node -v

    #4.npm介绍
    node package mangager nodejs包管理工具 前端主流技术 npm 进行统一管理
    maven 管理java后端依赖 远程仓库(中心仓库) 阿里云镜像
    npm 管理前端系统依赖 远程仓库(中心仓库) 配置淘宝镜像

    #5.配置淘宝镜像
    npm config set registry https://registry.npm.taobao.org
    npm config get registry

    #6.配置npm下载依赖位置
    windows:
    npm config set cache “D:\nodereps\npm-cache”
    npm config set prefix “D:\nodereps\npm_global”
    mac os:
    npm config set cache “/Users/chenyannan/dev/nodereps”
    npm config set prefix “/Users/chenyannan/dev/nodereps”

    #7.验证nodejs环境配置
    npm config ls
    //验证
    ; userconfig /Users/chenyannan/.npmrc
    cache = “/Users/chenyannan/dev/nodereps”
    prefix = “/Users/chenyannan/dev/nodereps”
    registry = “https://registry.npm.taobao.org/”

2.安装脚手架

#0.卸载脚手架
	npm uninstall -g @vue/cli  //卸载3.x版本脚手架
	npm uninstall -g vue-cli  //卸载2.x版本脚手架

#1.Vue Cli官方网站
		https://cli.vuejs.org/zh/guide/

#2.安装vue Cli
		npm install -g vue-cli

3.第一个vue脚手架项目

# 1.创建vue脚手架第一个项目
	vue init webpack 项目名
# 2.创建第一个项目
	hello     ------------->项目名
    -build  ------------->用来使用webpack打包使用build依赖
    -config ------------->用来做整个项目配置目录
    -node_modules  ------>用来管理项目中使用依赖
    -src					 ------>用来书写vue的源代码[重点]
    	+assets      ------>用来存放静态资源 [重点]
      components   ------>用来书写Vue组件 [重点]
      router			 ------>用来配置项目中路由[重点]
      App.vue      ------>项目中根组件[重点]
      main.js      ------>项目中主入口[重点]
    -static        ------>其它静态
    -.babelrc      ------> 将es6语法转为es5运行
    -.editorconfig ------> 项目编辑配置
    -.gitignore    ------> git版本控制忽略文件
    -.postcssrc.js ------> 源码相关js
    -index.html    ------> 项目主页
    -package.json  ------> 类似与pom.xml 依赖管理  jquery 不建议手动修改
    -package-lock.json ----> 对package.json加锁
    -README.md         ----> 项目说明文件

# 3.如何运行在项目的根目录中执行
		npm start 运行前端系统

# 4.如何访问项目
		http://localhost:8081    

# 5.Vue Cli中项目开发方式
	 注意: 一切皆组件   一个组件中   js代码  html代码  css样式
	 
	 	1. VueCli开发方式是在项目中开发一个一个组件对应一个业务功能模块,日后可以将多个组件组合到一起形成一个前端系统
	 	2. 日后在使用vue Cli进行开发时不再书写html,编写的是一个个组件(组件后缀.vue结尾的文件),日后打包时vue cli会将组件编译成运行的html文件	  

4.如何开发Vue脚手架

注意:在Vue cli 中一切皆组件

15.在脚手架中使用axios

15.1 安装axios

# 1.安装axios
	npm install axios --save-dev

# 2.配置main.js中引入axios
	import axios from 'axios';

	Vue.prototype.$http=axios;

# 3.使用axios
	在需要发送异步请求的位置:this.$http.get("url").then((res)=>{}) this.$http.post("url").then((res)=>{})

16.Vue Cli脚手架项目打包和部署

# 1.在项目根目录中执行如下命令:
	  vue run build

		注意:vue脚手架打包的项目必须在服务器上运行不能直接双击运行

# 2.打包之后当前项目中变化
	 	在打包之后项目中出现dist目录,dist目录就是vue脚手架项目生产目录或者说是直接部署目录

# 3.

this.$route.query.id//取路由的id
this.$router.push("/路径")//切换路由

11.打包

12.vue vue-router 路由
教程使用狂神说和编程不良人
在此感谢
部分空缺以后填坑吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值