Vue知识系列-VS Code的安装+Vue环境的搭建+Vue指令

news2024/11/27 22:26:50

一、VS Code下载地址

Visual Studio Code - Code Editing. Redefined

二、VS Code初始化设置 

1.安装插件

在安装好的VSCode软件的扩展菜单中查找安装如下4个插件

2、创建项目

vscode本身没有新建项目的选项,所以要先创建一个空的文件夹,如project_xxxx。

然后打开vscode,再在vscode里面选择 File -> Open Folder 打开文件夹,这样才可以创建项目。

3、保存工作区

打开文件夹后,选择“文件 -> 将工作区另存为...”,为工作区文件起一个名字,存储在刚才的文件夹下即可。

4.在工作区下可以创建文件夹和文件

如创建vuedemo文件夹

5. 在文件夹中创建html文件

在vuedemo文件夹创建"vue入门.html"文件,在空白文件中可使用快捷方式(输入英文 ! )生成html模板。

三、Vue构建页面前端框架

1. 构建页面前端框架的步骤

步骤一: 创建html页面,使用vscode快捷键(英文 ! )生成html代码

步骤二:在body中使用<script>标签引入vue的js文件

<body>
    <!--根据vue.js的实际路径引入 -->
    <script src="../plugins/vue/vue.min.js"></script>
</body>

步骤三:在html页面的body中创建div标签,div添加id属性。主要是为了指定内容显示的地方。

<div id="app"></div>

步骤四:在body的<script>标签中,创建一个vue对象。固定的结构

<script>
//创建一个Vue对象
new Vue({
      el:'#app',//绑定vue作用的范围,#app表示引用div的id
      data:{    //定义页面中显示的模型数据
           message:'Hello Vue!'
      }
})
</script>

步骤五:使用差值表达式获取data里面定义值:{{}}

<div id="app">{{message}}</div>

Vue前端框架

<body>
    <script src="../plugins/vue/vue.min.js"></script>
    <div id="app">
        {{message}}
    </div>
    <script>
        new Vue({
            el:'#app',
            data:{
                message:'Hello Vue!'
            }
        })
    </script>
</body>

四、Vue指令

1. v-bind 指令:

单项数据绑定,这个指令一般用在属性标签里面,获取值。V-bind可以简写为冒号 :

<body>
    <script src="../plugins/vue/vue.min.js"></script>
    <div id="app">
        <h1 v-bind:title="message">{{content}}</h1>
        <!--V-bind简写-->
        <h2 :title="message">{{content}}</h2>
    </div>
    <script>
        new Vue({
            el:'#app',
            data:{
                content:'我是标题',
                message:'页面加载于 ' + new Date().toLocaleString()
            }
        })
    </script>
</body>

2. v-model:双向绑定

V-model绑定的属性的值,会根据页面输入的值而变化。属性的值变化,页面也会跟着变化。

<body>
    <script src="../plugins/vue/vue.min.js"></script>
    <div id="app">
        <input type="text" :value="school.adress"></input>
        <input type="text" v-model:value="school.adress"></input>
        <p>{{school.name}}的地址:{{school.adress}}</p>
    </div>
    <script>
        new Vue({
            el:'#app',
            data:{
                school:{
                    name:'上海交通大学',
                    adress:'上海'
                }
            }
        })
    </script>
</body>

3. v-on 指令绑定事件

v-on:click表示处理鼠标点击事件,事件调用的方法定义在vue对象声明的methods节点中。

v-on:click可以简写为@click

<body>
    <script src="../plugins/vue/vue.min.js"></script>
    <div id="app">
        <!--v-on指令绑定事件,click指定绑定的事件类型,事件发生时调用vue中methods节点中定义的方法-->
        <button v-on:click="search()">查询</button>
        <!--v-on简写为@-->
        <button @click="search()">查询1</button>
    </div>
    <script>
        new Vue({
            el:'#app',
            data:{
            },
            methods:{
                search(){
                    console.log("serch...")
                }
            }
        })
    </script>
</body>

4. 修饰符

修饰符 (Modifiers) 是以半角句号(.)指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。
例如,.prevent 修饰符告诉 v-on 指令对于触发的事件调用 event.preventDefault():
即阻止事件原本的默认行为

data: {
    user: {}
}
<!-- 修饰符用于指出一个指令应该以特殊方式绑定。
     这里的 .prevent 修饰符告诉 v-on 指令对于触发的事件调用js的 event.preventDefault():
     即阻止表单提交的默认行为 -->
<form action="save" v-on:submit.prevent="onSubmit">
    <label for="username">
        <input type="text" id="username" v-model="user.username">
        <button type="submit">保存</button>
    </label>
</form>
methods: {
    onSubmit() {
        if (this.user.username) {
            console.log('提交表单')
        } else {
            alert('请输入用户名')
        }
    }
}

5、条件渲染

v-if:条件指令

<h1 v-if="ok">if执行</h1>
  • v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。
  • v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。

6、列表渲染

v-for:列表循环指令

例1:简单的列表渲染

<!-- 1、简单的列表渲染 -->
<ul>
    <li v-for="n in 10">{{ n }} </li>
</ul>
<ul>
    <!-- 如果想获取索引,则使用index关键字,注意,圆括号中的index必须放在后面 -->
    <li v-for="(n, index) in 5">{{ n }} - {{ index }} </li>
</ul>

例2:遍历数据列表

data: {
    userList: [
        { id: 1, username: 'helen', age: 18 },
        { id: 2, username: 'peter', age: 28 },
        { id: 3, username: 'andy', age: 38 }
    ]
}
<!-- 2、遍历数据列表 -->
<table border="1">
    <!-- <tr v-for="item in userList"></tr> -->
    <tr v-for="(item, index) in userList">
        <td>{{index}}</td>
        <td>{{item.id}}</td>
        <td>{{item.username}}</td>
        <td>{{item.age}}</td>
    </tr>
</table>

五、Vue生命周期 

<body>
    <script src="../plugins/vue/vue.min.js"></script>

    <div id="app">
        <button @click="update">update</button>
        <h3 id="h3">{{message}}</h3>
    </div>

    <script>
        new Vue({
            el:"#app",
            data:{
                message:"床前明月光"
            },
            methods:{
                show(){
                    console.log("执行show方法")
                },
                update(){
                    this.message = "疑是地上霜"
                }
            },
            //===创建时的四个事件
            beforeCreate() { // 第一个被执行的钩子方法:实例被创建出来之前执行
                console.log(this.message) //undefined
                this.show() //TypeError: this.show is not a function
                // beforeCreate执行时,data 和 methods 中的 数据都还没有没初始化
            },
            created() { // 第二个被执行的钩子方法
                console.log(this.message) //床前明月光
                this.show() //执行show方法
                // created执行时,data 和 methods 都已经被初始化好了!
                // 如果要调用 methods 中的方法,或者操作 data 中的数据,最早,只能在 created 中操作
            },
            beforeMount() { // 第三个被执行的钩子方法
                console.log(document.getElementById('h3').innerText) //{{ message }}
                // beforeMount执行时,模板已经在内存中编辑完成了,尚未被渲染到页面中
            },
            mounted() { // 第四个被执行的钩子方法
                console.log(document.getElementById('h3').innerText) //床前明月光
                // 内存中的模板已经渲染到页面,用户已经可以看见内容
            },
            //===运行中的两个事件
            beforeUpdate() { // 数据更新的前一刻
                console.log('界面显示的内容:' + document.getElementById('h3').innerText)
                console.log('data 中的 message 数据是:' + this.message)
                // beforeUpdate执行时,内存中的数据已更新,但是页面尚未被渲染
            },
            updated() {
                console.log('界面显示的内容:' + document.getElementById('h3').innerText)
                console.log('data 中的 message 数据是:' + this.message)
                // updated执行时,内存中的数据已更新,并且页面已经被渲染
            }
        })
    </script>
</body>

六、路由

Vue.js 路由允许我们通过不同的 URL 访问不同的内容。

通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。

Vue.js 路由需要载入 vue-router 库。

1、引入js

<!--vue的导入顺序,必须在vue-router之前 -->
<script src="vue.min.js"></script>
<script src="vue-router.min.js"></script>

2、编写html

<div id="app">
    <h1>Hello App!</h1>
    <p>
        <!-- 使用 router-link 组件来导航. -->
        <!-- 通过传入 `to` 属性指定链接. -->
        <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
        <router-link to="/">首页</router-link>
        <router-link to="/student">会员管理</router-link>
        <router-link to="/teacher">讲师管理</router-link>
    </p>
    <!-- 路由出口 -->
    <!-- 路由匹配到的组件将渲染在这里 -->
    <router-view></router-view>
</div>

3、编写js

<script>
    // 1. 定义(路由)组件。
    // 可以从其他文件 import 进来
    const Welcome = { template: '<div>欢迎</div>' }
    const Student = { template: '<div>student list</div>' }
    const Teacher = { template: '<div>teacher list</div>' }
    // 2. 定义路由
    // 每个路由应该映射一个组件。
    const routes = [
        { path: '/', redirect: '/welcome' }, //设置默认指向的路径
        { path: '/welcome', component: Welcome },
        { path: '/student', component: Student },
        { path: '/teacher', component: Teacher }
    ]
    // 3. 创建 router 实例,然后传 `routes` 配置
    const router = new VueRouter({
        routes // (缩写)相当于 routes: routes
    })
    // 4. 创建和挂载根实例。
    // 从而让整个应用都有路由功能
    const app = new Vue({
        el: '#app',
        router
    })

    // 现在,应用已经启动了!
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/166756.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自主异常检测算法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

AppScan 扫描web应用程序

系列文章 AppScan介绍和安装 第二节-AppScan 扫描web应用程序 1.环境布置 我们准备了如下一个靶场用来做实验 2.扫描步骤 1.启动AppScan 2.选择 【扫描web应用程序】 3.输入起始URL&#xff0c;点击【下一步】 http://127.0.0.1:83/4.选择【不使用代理】,点击【下一…

ctfshow php特性[125-135]

&#x1f60b;大家好&#xff0c;我是YAy_17&#xff0c;是一枚爱好网安的小白&#xff0c;自学ing。 本人水平有限&#xff0c;欢迎各位大佬指点&#xff0c;一起学习&#x1f497;&#xff0c;一起进步⭐。⭐此后如竟没有炬火&#xff0c;我便是唯一的光。⭐web 125<?php…

word怎么转换成pdf?其实很简单,看这里即可!

转眼间又到了校招的季节&#xff0c;想必许多小伙伴都在忙着编辑自己的简历吧。不过&#xff0c;咱们编辑的时候常常用到的都是word文件&#xff0c;但是当我们要将文件投递出去的时候就需要用到pdf了。其实不仅仅是投递简历&#xff0c;许多地方在要求我们发送正式文件的时候都…

vue+node+mysql全栈项目完整记录

文章目录vuenodemysql全栈项目完整记录写在前面项目最终界面展示项目框架搭建后端创建后端项目编写入口文件数据库及数据库使用前端创建前端项目使用elementUI必要包安装设置跨域访问&#xff0c;全局挂载axios删除无用的文件和代码设置统一的页面样式主页面页面设计路由设计登…

【C语言】柔性的数组是什么?C/C++程序的内存开辟又是?

本文主要讲解柔性数组的相关知识点&#xff0c;并穿插一下C/C程序的内存开辟&#xff0c;涉及到动态内存管理函数&#xff0c;如有不了解的&#xff0c;请参考这一篇文章【C语言】小王带您轻松实现动态内存管理&#xff08;简单易懂&#xff09;_小王学代码的博客-CSDN博客 目录…

【C++】类和对象【下篇】--初始化列表,static成员,友元,内部类,匿名对象

文章目录一、再谈构造函数1.构造函数体赋值2.初始化列表1.概念2.特性二、隐式类型转换1.概念2.构造函数的类型转换3.explict关键字4.类型转换的意义三、Static成员1.概念2.static成员变量3.static成员函数四、友元1.友元函数2.友元类五、内部类六、匿名对象七、拷贝对象时的一些…

深入使用noexcept

深入使用noexcept简介好处坏处适用场景不适用场景实验结果总结参考资料简介 noexcept是C11引入的&#xff0c;表明函数是否会抛出异常。正确使用它可以优化性能&#xff0c;错误使用则会带来麻烦。 noexcept使用语法有两种&#xff1a; noexcpetnoexcept(expression) 第二种…

如何提高系统稳定性?

1、系统稳定性的评判标准 在开始谈稳定性保障之前&#xff0c;我们先来聊聊业内经常提及的一个词SLA&#xff01;业内喜欢用SLA &#xff08;服务等级协议&#xff0c;全称&#xff1a;service level agreement&#xff09;来衡量系统的稳定性&#xff0c;对互联网公司来说&am…

测试开发知识总结(一)

本文内容顺序&#xff1a;测试基础理论、测试岗经常被问到的场景题、智力题、测试岗高频算法题、数据库、Linux知识点。常用自动化测试工具1、Appium官网&#xff1a;http://appium.ioAppUI自动化测试Appium 是一个移动端自动化测试开源工具&#xff0c;支持iOS 和Android 平台…

为什么很少拿神经网络来直接做滤波器呢?

其实无论是IIR&#xff08;RNN&#xff09;还是FIR(CNN)滤波器都可以看成一个简单神经网络&#xff0c;而且有严格的推理&#xff0c;可解释性比神经网络强多了&#xff0c;而已易于工程实现&#xff0c;因此在工程中大量应用。你说的含色噪声和其他乱七八糟的噪声难以滤除时&a…

ROS | Realsense中的IMU解算orientation

文章目录概述一、定义介绍二、操作教程(一)、下载并编译imu_tools功能包1.创建工作空间并初始化2.下载imu_tools并编译(二)、修改配置1.修改imu_tools源码2.修改launch文件3.启动解算概述 本文详细介绍了如何使用ROS自带的工具解算6轴IMU&#xff0c;获取其位姿。 一、定义介绍…

mybatis之动态SQL常见标签的使用

引入where标签的原因&#xff1a; 在上篇文章使用if语句的查询中&#xff0c;我们在SQL语句后面都写入了where 11&#xff0c;以保证每次都能够查询出结果&#xff0c;但这种方法并不是最合理的&#xff0c;假设我们现在将where后面的11去掉&#xff1a; 如下所示&#xff1a…

上午摆摊,下午写代码,35岁程序员的双面人生超爽!

最近看到一个程序员发帖分享自己的工作&#xff1a;白天出摊卖馄饨&#xff0c;下午在家为海外公司全职远程工作。“年入百万是可以的&#xff0c;并且我老家是三线城市&#xff0c;没有房租、通勤费用&#xff0c;性价比还是很高的。” 对比在大城市天天996的程序员&#xff0…

【JavaEE】多线程之线程安全(synchronized篇),死锁问题

目录 线程安全问题 观察线程不安全 线程安全问题的原因 从原子性入手解决线程安全问题 ——synchronized synchronized的使用方法 synchronized的互斥性和可重入性 死锁 死锁的三个典型情况 死锁的四个必要条件 破除死锁 线程安全问题 在前面的章节中&#xff0c…

Wav2Vec HuBert 自监督语音识别模型

文章目录Wav2Vec: Unsupervised pre-training for speech recognitionabstractmethodwav2vec 2.0: A Framework for Self-Supervised Learning of Speech RepresentationsabstractintroductionmethodMODEL arch损失函数finetuneexprimentHuBERT: Self-Supervised Speech Repres…

商品期货跨期套利实战笔记

合约对&#xff1a;IC2301&IC2302 价差计算 前-后&#xff08;6082-6079.8&#xff09; 做多价差开仓&#xff08;预期价差变大&#xff09; 买2301&#xff08;前&#xff09; 卖2302&#xff08;后&#xff09; 做空价差开仓&#xff08;预期价差变小&#xff09;&…

【Java|golang】1813. 句子相似性 III

一个句子是由一些单词与它们之间的单个空格组成&#xff0c;且句子的开头和结尾没有多余空格。比方说&#xff0c;“Hello World” &#xff0c;“HELLO” &#xff0c;“hello world hello world” 都是句子。每个单词都 只 包含大写和小写英文字母。 如果两个句子 sentence1…

react hooks组件间的传值方式(使用ts),子孙传值给祖先组件

父子组件传值参考&#xff1a;react hooks组件传值父传子很简单&#xff0c;只要父组件传参&#xff0c;子组件写好interface childProps和props去接收即可子传父稍复杂父组件写一个回调函数&#xff1a;changeTaskState{(id: any) > { changeTaskStateByID(id) }}当然这个 …

图自监督表征

1、综述 数据挖掘领域大师俞士纶团队新作&#xff1a;最新图自监督学习综述图自监督学习综述&#xff1a;Graph Self-Supervised Learning A Survey图自监督学习&#xff08;Graph Self-supervised Learning&#xff09;最新综述Github代码汇总图自监督学习在腾讯Angel Graph中…