vue基本语法总结大全

vue基本语法

文章目录

  • vue基本语法
    • 基本用法
    • 内容渲染指令
    • 属性绑定指令
    • 使用js表达式
    • 事件绑定指令
    • 条件渲染指令
    • v-else和v-else-if指令
    • 列表渲染指令
    • v-for中的key
  • 组件化开发
    • 安装
    • 详细讲解
  • 第三方组件
    • 1. 组件间的传值
    • 2. element-ui介绍
    • 3. 组件的使用
    • 4. 图标的使用
  • Axios网络请求
    • 1. Axios的使用
    • 2. 与vue的整合
    • 3. 跨域
  • 前端路由VueRouter
    • 1. VueRouter安装与使用
    • 2. 参数传递
    • 3.子路由
  • 状态管理VueX
    • 1. Vuex介绍
    • 2. 状态管理

基本用法

  1. 导入vue的脚本文件
  2. 声明要被vue所控制的DOM区域
  3. 创建vue的实例对象

内容渲染指令

<p> {{desc}} </p>
<p v-html="desc"> </p>

第二种可以渲染html页面

v-model: 双向绑定

属性绑定指令

<a v-bind:href="link">百度</a>
<a :href="link">百度</a>

可以简写

使用js表达式

<p>{{number + 1}}</p>
<p :id="'list-'+id">xxx</p>

里面只能是表达式或者变量

事件绑定指令

<button v-on:click="addCount">点击</button></button>
<button @click="count+=1">+1</button></button>

里面可以是表达式或者方法

条件渲染指令

<p v-if="flag"> 请求成功 </p>

如果为false,标签就不会被创建;性能差一点

<p v-show="flag"> 请求成功 </p>

如果为false,标签会被创建,但不会显示display:none;性能好,用于标签被频繁切换

v-else和v-else-if指令

<p v-if="type=='A'">优秀</p>

判断指令,v-else-if可以有多个

列表渲染指令

<ul><li v-for="(user,i) in userList">索引是:{{i}},姓名是:{{user.name}}     </li>
</ul>

userList是一个集合;

(user,i)可以是一个参数,也可以是两个参数;

v-for中的key

<ul><li v-for="(user,i) in userList" :key="index">索引是:{{i}},姓名是:{{user.name}}     </li>
</ul>

每个v-for要加一个key标签,用来当唯一索引

如果设置为index,当list头部添加一个数据,原来数据勾选0,新增数据添加后也变为0,会勾选为新增数据,所以,一般会将数据库查询出的id设置为key值

  • 索引是:{{i}},姓名是:{{user.name}}

组件化开发

  • NPM: 是nodeJS包管理和分发的工具。最常用法就是用于安装和更新依赖。

​ 安装命令:npm install

  • vue cli: vue官方提供的构建工具。基于webpack构建,也可以根据项目内的配置文件进行配置。

​ 安装命令:npm install -g @vue/cli

​ -g:代表全局安装

安装

vue create 项目名

在这里插入图片描述

第一二项分别为vue3和vue2,eslint会强制检查语法风格,学习初期用这个会出现各种问题。所以选择 最后一个选项(手动选择功能 将LISTER按空格取消掉)。

然后将项目拖入vscod。

详细讲解

在这里插入图片描述

文件格式如上:

package.json:记录项目的信息

main.js:程序的入口文件,创建了vue的vm对象。

其他是vue的组件

APP.vue: 是一个根组件。里面的内容会被渲染到

的index.html界面中;因为main里面将APP.vue与#app进行了绑定

运行: 在package.json 中找到scripts中的指令

​ 然后 npm run serve

  • vue主要用到了模块化:

​ 通过import来导入各种模块,来完成前端代码的组件。

  • 组件化开发:

​ 组件是vue.js最强大的功能之一。组件可以扩展HTML元素,封装可重用的代码。

​ vue的组件系统允许我们使用小型、独立和通常可复用的组件构建大型应用。

​ 组件里面也可以有组件。

组件的构成:

  1. Vue 中规定组件的后缀名是.vue

  2. 每个 .vue 组件都由 3部分构成,分别是

    template,组件的模板结构,可以包含HTML标签及其他的组件

    script,组件的 JavaScript 代码

    style,组件的样式

第三方组件

1. 组件间的传值

  • 组件可以由内部的Data提供数据,也可以由父组件通过props方式传值给子组件

  • 兄弟组件之间可以通过vuex等同意数据源提供数据共享

2. element-ui介绍

饿了么公司开源的前端框架,简洁优雅,提供了vue,react,angular等多个版本

文档地址:https://element.eleme.cn/#/zh-CN/
安装:npm i element-ui

-S:同时将element-ui 记录到package.json文件中,可以省略,也会记录

下载的源码会放在node_modules文件夹,这个文件不会进行传递。

网上下载的源码需要从package.json中再下载第三方模块,需要运行 :npm install

3. 组件的使用

4. 图标的使用

  • 由于Element U!提供的字体图符较少,一般会采用其他图表库,如著名的Font
    Awesome

  • 文档地址:http: //fontawesome.dashgame.com/

  • 安装:npm install font-awesome

  • 使用:import ‘font-awesome/css/font-awesome.min.css’

    <i class="fa fa-camera-retro"></i> fa-camera-retro
    

vue2中所有组件都必须包含在一个父标签下(要有一个总包含的标签),vue3没有限制

Axios网络请求

1. Axios的使用

  • 在实际项目开发中,前端页面所需要的数据往往需要从服务器端获取,这必然
    涉及与服务器的通信。

  • Axios 是一个基于 promise 网络请求库,作用于nodejs 和浏览器中。

  • Axios 在浏览器端使用XMLHttpRequests发送网络请求,并能自动完成JSON
    数据的转换。

  • 安装:

  • 地址:https://www.axios-http.cn/

  • 导入

import axios from 'axios'

​ 发送post请求

​ 异步回调: 同步方式(async/await成对出现) ; 异步方式(.then(function(response)))常用

​ 其他请求方式

2. 与vue的整合

vue中的方法:

  • created :组件被创建时调用 比如http请求

  • mounted : 组件被挂载/渲染完毕调用

  //异步回调axios.get("http://localhost:8888/user").then(  (response) => {//异步回调作用域会发生编发 function(response){}会产生作用域问题//采用新版本这种(response)=> 的作用域继承于父类console.log(response);this.tableData =response.data});

在实际项目中,通过全局配置方式来调用axios请求

// 配置请求根路径
axios.defaults.baseURL ='http://api.com'//将axios 作为全局的自定义属性,每个组件可以在内部直接访问 (Vue3)
app.config.globa1Properties. Shttp = axios//将axios 作为全局的自定义属性,每个组件可以在内部直接访问 (Vue2)
Vue.prototype.$http = axios

3. 跨域

浏览器会有同源策略,这是浏览器核心也是最基本的安全功能

同源是指两个页面要有相同的协议,主机,端口号

当一个请求的协议、域名、端口三者任意一个与当前页面url不同即为跨域,此时无法读取非同源网页的cookie,无法向非同源地址发送AJAX请求

  • 解决方法:

    CORS:W3C制定的一种跨域资源共享技术标准,就是为了解决跨域问题

    cors将请求分为两类:

    简单请求

    ​ 满足以下条件的请求即为简单请求:
    ​ 请求方法:GET、 POST、 HEAD
    ​ 除了以下的请求头字段之外,没有自定义的请求头:
    ​ Accept. Accept-Language、 Content-Language、 Last-Event-ID、Content-Type
    ​ Content-Type的值只有以下三种:
    ​ text/plain、 multipart/form-data、 application/x-www-form-urlencoded

    ​ 处理方法:http请求头添加Access-Control-Allow-Origin:http://localhost:8080 字段(后端接口)

    非简单请求

    ​ 非简单请求,会在真实请求发出前增加一次OPTION请求,称为预检请求

    ​ 预检请求将真实请求的信息,包括请求方法,自定义头字段,源信息添加到HTTP头信息字段中,询问服务器是否允许这样的操作。服务器会将允许的请求方式等数据放在响应头返回

前端路由VueRouter

1. VueRouter安装与使用

vue路由是官方路由插件。

vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。

vue-route 3.x只能结合vue2进行使用,vue-route 4.x只能结合vue3进行使用。

安装

npm install vue-router@4

创建路由组件

  • 在项目中定义Discover.vue、Friends.vue、My.vue三个组件,将来要使用vue-router来控制它们的展示与切换:

Discover.vue:

<template><div><h1>发现音乐</h1></div>
</template>

Friends.vue:

<template><div><h1>关注</h1></div>
</template>

My.vue:

<template><div><h1>我的音乐</h1></div>
</template>

声明路由链接和占位标签

  • 可以使用标签来声明路由链接,并使用标签来声明路由占位符。

App.vue:

<template><div id="app"><!-- 声明路由链接 --><router-link to="/discover">发现音乐</router-link><router-link to="/my">我的音乐</router-link><router-link to="/friends">关注</router-link><!-- 声明路由占位符 --><router-view></router-view></div>
</template>

创建路由模块

在项目中创建index.js模块,加入以下代码:

import Vue from "vue";
import VueRouter from "vue-router";
import Discover from '../components/Discover.vue'
import Friends from '../components/Friends.vue'
import My from '../components/My.vue'Vue.use(VueRouter)const router = new VueRouter({// 指定hash属性与组件的对应关系routes: [{ path: '/', redirect: "/discover" },{ path: '/discover', component: Discover },{ path: '/friends', component: Friends },{ path: '/my', component: My }]
})export default router

挂载路由模块

在main.js中导入并挂在router

import Vue from 'vue'
import App from './App.vue'
import router from './router'Vue.config.productionTip = falsenew Vue({render: h => h(App),// router: routerrouter
}).$mount('#app')

路由重定向

  • 路由重定向指的是:用户在访问地址A的时候,强制用户跳转到地址C,从而展示特定的组件页面
  • 通过路由规则的redirect属性,指定一个新的路由地址,可以很方便地设置路由的重定向:
const router = new VueRouter({// 指定hash属性与组件的对应关系routes: [{ path: '/', redirect: "/discover" },{ path: '/discover', component: Discover },{ path: '/friends', component: Friends },{ path: '/my', component: My }]
})

嵌套路由

  • 在Discover.vue组件中,声明toplist和playlist的子路由链接以及子路由占位符。示例代码如下:
<template><div><h1>发现音乐</h1><!-- 子路由链接 --><router-link to="/discover/toplist">推荐</router-link><router-link to="/discover/playlist">歌单</router-link><hr /><router-view></router-view></div>
</template>
  • 在 src/router/index.js路由模块中,导入需要的组件,并使用 children 属性声明子路由规则:
const router = new VueRouter({// 指定hash属性与组件的对应关系routes: [{ path: '/', redirect: "/discover" },{path: '/discover',component: Discover,children: [{ path: 'toplist', component: Toplist },{ path: 'playlist', component: Playlist },]},{ path: '/friends', component: Friends },{ path: '/my', component: My }]
})

动态路由

  • 动态路由是指:把Hash地址中可变的部分定义为参数项,从而提高路由规则的复用性。在vue-router中使用英文冒号(:)来定义路由的参数项。示例代码如下:
{path: ':id', component: Project}
  • 通过动态路由匹配的方式渲染出来的组件中,可以使用 $route.params 对象访问到动态匹配的参数值,比如在商品详情组件的内部,根据id值,请求不同的商品数据
    <template><div><h3>商品{{$route.params.id}}</h3></div></template>
  • 为了简化路由参数的获取形式,vue-router 允许在路由规则中开启 props 传参。示例代码如下:
{ path: ':id', component: Project, props: true }
<template><div><!-- 获取动态id值 --><h3>商品{{ id }}</h3></div>
</template><script>export default {props: ["id"],};
</script>
  • 编程式导航

声明式:

编程式:router.push(…)

除了使用 创建a 标签来定义导航链接,我们还可以借助 router 的实例方法,通过编写代码来实现。
想要导航到不同的 URL,则使用 router.push 方法。这个方法会向 history 栈添加一个新的记录,所以,当用户点击浏览器后退按钮时,则回到之前的 URL。
当你点击 〈router-1ink> 时,这个方法会在内部调用,所以说,点击 <router-link :to=".…“>等同于调用 router.push(.…)。

<template><button @click="gotoProduct(2)" > 跳转到商品2</button >
</template ><script>export default{methods:{gotoProduct: function(id) {this.$router.push('/movie/${id}')}}}</script>

导航守卫

  • 导航守卫可以控制路由的访问权限。
  • 全局导航守卫会拦截每个路由规则,从而对每个路由进行访问权限的控制
  • 可以使用router,beforeEach注册一个全局前置守卫:
router.beforeEach(to,from,next) =>{if(to.path==='/main'&&!isAuthenticated)next('/login')}else{next()}
})
  • to:即将要进入的目标

  • from:当前导航正要离开的路由

  • 在守卫方法中如果声明了 next 形参,则必须调用 next()函数,否则不允许用户访问 任何—个路由!
    直接放行:next()
    强制其停留在当前页面: next(false)
    强制其跳转到登录页面:next(/login’)

2. 参数传递

3.子路由

状态管理VueX

1. Vuex介绍

Vue兄弟组件之间数据传递十分麻烦,许多框架提供了解决方案-使用全局的状态管理器,将所有分赛的共享数据交由状态管理器保管,Vue也不例外。

Vuex用于管理分散在Vue各个组件中的数据,采用集中式存储管理响应用的所有组件状态。

  • 安装
npm install vuex@next

有两个版本 vue2 - vuex3 ; vue3 - vuex4

2. 状态管理

  • 每一个Vuex应用的核心都是一个store,与普通的全局对象不同的是,基于Vue
    数据与视图绑定的特点,当store中的状态发生变化时,与之绑定的视图也会被
    重新渲染。
  • store中的状态不允许被直接修改,改变store中的状态的唯一途径就是显式地
    提交(commit)mutation,这可以让我们方便地跟踪每一个状态的变化。
  • 在大型复杂应用中,如果无法有效地跟踪到状态的变化,将会对理解和维护代
    码带来极大的困扰。
  • Vuex中有5个重要的概念:State、Getter、 Mutation、 Action、 Module。

status

​ status用于维护所有应用层的状态,并确保应用只有唯一的数据源。

​ 在组件中,可以直接使用this.$store.state.count访问数据,也可以先用mapState辅助函数将其映射下来

Mutation

​ Mutation提供修改state状态的方法。

​ 在组件中,可以直接使用store.commit来提交mutation(同步的)

​ 也可以先用mapMutation辅助函数将其映射下来

Action
Action类似Mutation,不同在于

​ Action不能直接修改状态,只能通过提交mutation来修改,Action可以包含异步操作

​ 在组件中,可以直接使用this.$store.dispatch(xxx)分发 action,或者使用mapActions辅助函数先将其映射下来

Getter

​ Getter维护由State派生的一些状态,这些状态随着state状态的变化而变化。

​ 在组件中,可以直接使用this.$store.getters.doneTodos,也可以先用
mapGetters辅助函数将其映射下来:

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

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

相关文章

15:矩阵按键

矩阵按键 1、 矩阵按键的原理图分析2、 矩阵键盘的工作过程3、编程实战3.1、先通过LED灯进行按键测试3.2、通过静态数码管显示键值 1、 矩阵按键的原理图分析 (1)横向和纵向分割 (2)按键两端分别接不同的IO引脚 (3)按键的物理作用不变&#xff1a;按下接通电路&#xff0c;弹起…

ArcGIS Pro 按照字段进行融合或拆分

ArcGIS Pro 按字段融合 在ArcGIS Pro中&#xff0c;通过使用“融合”工具可以轻松地合并具有相同字段的图层。 步骤一&#xff1a;打开ArcGIS Pro 启动ArcGIS Pro应用程序&#xff0c;确保您已经登录并打开您的项目。 步骤二&#xff1a;添加图层 将包含相同字段的图层添加到…

06-Java适配器模式 ( Adapter Pattern )

原型模式 摘要实现范例 适配器模式&#xff08;Adapter Pattern&#xff09;是作为两个不兼容的接口之间的桥梁 适配器模式涉及到一个单一的类&#xff0c;该类负责加入独立的或不兼容的接口功能 举个真实的例子&#xff0c;读卡器是作为内存卡和笔记本之间的适配器。您将内…

CodeMeter强化了ETM WinCC 开放架构平台的许可与安全保护

在面对日益复杂的网络安全威胁时&#xff0c;ETM professional control采取了前瞻性的措施&#xff0c;选择了业界领先的威步CodeMeter技术&#xff0c;以保护其标志性的WinCC开放架构平台。这一选择不仅体现了ETM对安全的高度重视&#xff0c;也标志着其在保障关键基础设施运营…

《大魔界村》中的人物性格——亚瑟

《大魔界村》作为一款经典的街机动作游戏,其主角——勇敢的骑士亚瑟,以其独特的性格特点和坚定的信念,在玩家心中留下了深刻印象。本文将深入探讨亚瑟这一角色的性格特质,通过分析他在游戏中的行为表现及决策过程,展现他身上的勇气、坚韧与智慧三大要点。 一、无畏挑战的…

如何配置SSH实现无公网ip远程连接访问Deepin操作系统

&#x1f4d1;前言 本文主要是配置SSH实现无公网ip远程连接访问Deepin操作系统的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️** &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &…

fastapi 链接数据库,并报错问题

还有一个重点需要下载 pip install sqlalchemy -i https://pypi.tuna.tsinghua.edu.cn/simple pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simplefrom fastapi import FastAPI import uvicorn from student.urls import student_id_mysql from sqlalchemy …

【Linux】文件周边002之初步理解文件管理(打开的文件)

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.&#xff08;打开…

leetcode(滑动窗口)3.无重复字符的最长字串(C++详细题解)DAY2

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。 示…

【算法分析与设计】无重复的最长子串

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 题目 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 示例 1: 输入: s "abcabcbb" 输…

九州金榜|如何做好家庭教育

孩子的家庭教育是每个家庭都要做的&#xff0c;也是每个家长面临的事情&#xff0c;同样不同的家庭教育教育出来的孩子性格也各不相同&#xff0c;有时候家长看别别人家的孩子品学兼优非常羡慕&#xff0c;很多家长会把问题归结到孩子身上&#xff0c;其实有没有想过是家庭教育…

机器学习算法与Python实战 | 2024年吴恩达预测:关于AI,这些事未来十年不会变

本文来源公众号“机器学习算法与Python实战”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;2024年吴恩达预测&#xff1a;关于AI&#xff0c;这些事未来十年不会变 2024年&#xff0c;AI的发展会有怎样的改变&#xff1f; 在吴…

CSDN文章导出工具

源码地址&#xff1a; github:https://github.com/lishuangquan1987/CSDNExportergitee:https://gitee.com/lishuangquan1987/csdnexporter 介绍 最近有CSDN博客导出来的需求&#xff0c;翻看了很多开源工具&#xff0c;都不能用或者不好用&#xff0c;于是决定自己做一个。…

支持534种语言,开源大语言模型MaLA-500

无论是开源的LLaMA 2还是闭源的GPT系列模型&#xff0c;功能虽然很强大&#xff0c;但对语言的支持和扩展比较差&#xff0c;例如&#xff0c;二者都是以英语为主的大模型。 为了提升大模型语言的多元化&#xff0c;慕尼黑大学、赫尔辛基大学等研究人员联合开源了&#xff0c;…

香港优才VS高才计划对比哪个好?详解申请条件、优缺点、续签转永居!

香港优才和高才计划对比哪个好&#xff1f;详解申请条件、优缺点、续签转永居&#xff01; 香港优才计划和香港高才通计划&#xff0c;都是热门的香港人才引进项目&#xff0c;在2023年&#xff0c;这两个项目为香港引进了超6万的优秀人才和高端人才&#xff0c;为香港经济发展…

CSRF:跨站请求伪造攻击

目录 什么是CSRF&#xff1f; DVWA中的CSRF low medium hight impossible 防御CSRF 1、验证码 2、referer校验 3、cookie的Samesite属性 4、Anti-CSRF-Token 什么是CSRF&#xff1f; CSRF全称为跨站请求伪造&#xff08;Cross-site request forgery&#xff09;&…

【Linux】静态库和动态库

动静态库 一、静态库1. 静态库概念2. 制作静态库&#xff08;1&#xff09;朴素方法 --- 不打包&#xff08;2&#xff09;对静态库打包 3. 使用静态库&#xff08;1&#xff09;朴素方法 --- 直接使用&#xff08;2&#xff09;使用打包好的静态库 二、动态库1. 动态库概念2. …

jenkins 发布远程服务器并部署项目

安装参考另一个文章 配置maven 和 jdk 和 git 注意jdk的安装目录&#xff0c;是jenkins 安装所在服务器的jdk目录 注意maven的目录 是jenkins 安装所在服务器的maven目录 注意git的目录 是jenkins 安装所在服务器的 git 目录 安装 Publish Over SSH 插件 配置远程服务器 创…

不会Git也能玩Github吗?

不会Git也能玩Github吗&#xff1f; 前言使用Github的准备步骤使用一种访问外网资源的方法&#xff08;这一步才是新手最难的一步&#xff09;注册账号 创建一个自己的仓库创建完仓库后的界面 搜索你想要的代码类型以搜索坦克大战为例以下载烟花代码为例 总结 前言 说到Github&…

计算机自顶向下 Wireshark labs——DNS

如本文第2.4节所述&#xff0c;域名系统(DNS)将主机名转换为IP地址&#xff0c;在互联网基础设施中发挥着关键作用。在本实验中&#xff0c;我们将仔细研究DNS的客户端。回想一下&#xff0c;客户端在DNS中的角色相对简单—客户端向其本地DNS服务器发送查询&#xff0c;并收到响…