Vue前端框架

2023-11-16

一、简介

Vue是一个渐进式(真正用到才引用)的JavaScript框架与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,与现代化的工具以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

Vue.js属于SPA一员。

英文全称:Single Page Web Application ,SPA

中文全称:单页Web应用。

整个应用就一个页面,客户端页面通过与服务端的交互动态更新页面中内容。

二、模板语法

(1)普通文本

data() 函数返回值就是Model 对象。方法data()是固定的。

{{}}就是从Model中取值。

<template>
  <div id="app">
    姓名:{{name}} 年龄:{{age}}
  </div>
</template>
<script>

export default {
  name: 'App',
  data(){
    return{
      name:"chen",
      age:"18"
    }
  }
}
</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>

 (2)HTML支持:

如果希望能够解析HTML,必须使用v-html指令。

v-html是任意HTML标签的属性,v-html的取值可以是Model中定义的字段。

<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png">
    <HelloWorld msg="Welcome to Your Vue.js App"/>
    <p>
      我们的名称为:{{name}},已经成立了{{age}}年了。<br>
      描述:<span v-html="desc"></span>
    </p>
  </div>
</template>
<script>
import HelloWorld from './components/HelloWorld.vue'

export default {
  name: 'App',
  components: {
    HelloWorld
  },
  data(){
    return {
      name:"北京尚学堂",
      age: 15,
      desc:"我是<b>好人</b>"
    }
  }

}
</script>

 三、指令

(1)判断

<template>
    <div id="bjsxt">
        <p v-if="age<10">
            不到10年了
        </p>
        <p v-else-if="age<14 && age >=10">
            不到14年了
        </p>
        <p v-else>
            大于14年了
        </p>
    </div>
</template>

<script>
    export default {
        name: 'App',
        data() {
            return {
                name: "北京尚学堂-Java学院",
                age: 15
            }
        }
    }
</script>

(2)循环遍历

v-for=”迭代变量 in 数组属性”

:key=”迭代变量” 此属性必须写,否则页面报错

<template>
    <div id="bjsxt">
      <ul>
        <li v-for="subject in subjects" :key="subject">
          {{subject}}
        </li>
      </ul>
    </div>
</template>

<script>
    export default {
        name: 'App',
        data() {
            return {
                name: "北京尚学堂-Java学院",
                age: 15,
                subjects: ["Java", "AI", "大数据","前端"]
            }
        }
    }
</script>

(3)事件

Vue中事件也可以绑定给特定的方法进行处理。

@click取值是方法名称

methods是固定属性。里面定义了多有事件能绑定的方法。

jqk:function(event){}

  • jqk 是方法名。

  • event是方法形参,在js中方法形参名称随意。只要@click中使用没有参数的方法时,都会默认传递事件对象。如果方法中不使用事件对象,function里面就不需要写event了,在Vue中变量声明后必须使用。

<template>
  <div id="app">
    <button @click="jqk">click</button>
  </div>
</template>

<script>
export default {
  name: 'App',
  data(){
    return {
      field:"值"
    };
  },
  methods:{
    jqk:function (event) {
      // this是当前Vue对象
      alert(this.field);
      if(event){
        alert(event.target.tagName)
      }
    }
  }
}
</script>

 (4)事件传参

  • 字符串值必须有单引号。

  • 没有单引号参数(field),调用data()中属性

  • 方法中不需要使用事件对象时就不写$event。但是如果需要使用事件对象,必须手动传递事件对象,且必须叫做$event,$event是全局Vue对象原型(prototype)里面的属性。

  • 事件调用方法时传递了多个参数,在定义方法时可以只接收参数中前N个(N>=0&&N<=调用时参数个数),但是一定接收了,就必须使用。

<template>
  <div id="app">
    <button @click="jqk('name',$event)">click</button>
    <button @click="jqk(field,$event)">click</button>
  </div>
</template>

<script>

export default {
  name: 'App',
  data(){
    return {
      field:"值"
    };
  },
  methods:{
    jqk:function (name,event) {
      alert("name:"+name);
      if(event){
        alert(event.target.tagName)
      }
    }
  }
}
</script>

四、组件

(1)组件:如果项目中多次用到类似效果,就可以把这个效果进行自定义组件。

(2)新建vue文件:在src/components中新建一个文件。名称任意。示例中叫做MyComponent.vue。

【{{jqk}} 获取组件传递参数的值】 【props:定义组件传递的参数名称和类型】

<template>
    <div>
        <div>这是一个组件</div>
        <div>{{jqk}}</div>
    </div>
</template>

<script>
    export default {
        name: "MyComponent",
        props: {
            jqk: String
        }
    }
</script>

<style scoped>

</style>

 (2)引用组件:【jqk是参数名】【import 导入组件并设置名称为MyComponent】【components 声明组件】

<template>
  <div id="app">
    <MyComponent jqk="这是传递的内容"/>
  </div>
</template>

<script>
  import MyComponent from "@/components/MyComponent";

export default {
  name: 'App',
  components:{
    MyComponent
  }
}
</script>

 (3)参数类型

类型名 说明
String 字符串
Number 数字
Boolean 布尔
Array 数组
Object 对象
Function 函数
Promise 构造方法

五、路由

效果:不同的URL显示不同的内容。

(1)安装路由依赖

cnpm install --save vue-router@3.1.6

(2)创建配置路由的js文件router/index.js

import Router from 'vue-router'
import First from "@/pages/First";
import Second from "@/pages/Second";
import Vue from 'vue';

//启用路由
Vue.use(Router);

const router = new Router({
    // 没有history,访问URL会有#
    mode:"history",
    routes: [
        {
            path: "/first",
            component: First
        },
        {
            path: "/second",
            component: Second
        }
    ]
});
//返回路由对象
export default router

(3)在全局配置文件main.js中加载路由配置文件

import Vue from 'vue'
import App from './App.vue'
//加载路由配置文件
import router from "@/router";

Vue.config.productionTip = false

new Vue({
  router,
  render: h => h(App),
}).$mount('#app')

(4)使用:<router-view></router-view>表示修改URL会更改其中的内容

(5)通过js控制路由跳转

​    可以在当前项目任意页面中通过this.$router调用路由对象。

​    通过下面代码可以实现路由跳转

this.$router.push(“/first”)

六、发送网络请求

(1)安装依赖

cnpm install --save axios

(2)在全局配置文件main.js中配置

import axios from "axios";
import qs from "querystring";

Vue.prototype.$axios=axios;
Vue.prototype.$qstring=qs;

(3)在根目录下新建vue.config.js,配置请求代理

module.exports = {
    devServer: {
        proxy: {
            // 当请求Vue项目路径以/api开头时转发给下面
            '/': {
                // 服务器端URL
                target: 'http://192.168.141.241:8081/',
                ws: true,
                pathRewrite: {
                    // 把路径中api去掉
                    '^/': '/'
                }
            }
        }
    }
}

(4)使用

  methods: {
    mypost:function () {
      this.$axios.post("/demo",this.$qstring.stringify({id:5,name:"李四"}))
              //成功后
              .then(resp=>{
                this.myname=resp.data.name;
                this.myage=resp.data.id;
              })
              //失败后
              .catch(err=>{
                console.log(err);
              })
    }
  }

 七、Vue Element

Vue Element 就是Vue的扩展插件。

网址:https://element.eleme.cn/#/zh-CN

(1)安装命令

cnpm install --save element-ui

(2)在全局配置文件main.js中引入依赖

import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.use(ElementUI);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue前端框架 的相关文章

随机推荐

  • Android开发学习之路-基本事件的使用

    1 事件的响应方法 setOnClickListener view OnClickListener l setOnFocusChangeListener view OnFocusChangeListener l setOnLongClick
  • [从零开始学习FPGA编程-37]:进阶篇 - 基本时序电路-有限状态机实现(Verilog)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 第1章 状态机概述 1 1 UML描述状态机 1 2 数字电路描述状态机
  • VScode的代码截图插件CodeSnap

    CodeSnap 在 VS Code 中为您的代码截取漂亮的屏幕截图 插件名 CodeSnap 官方地址 CodeSnap Visual Studio Marketplace 特征 快速保存代码的屏幕截图 将屏幕截图复制到剪贴板 显示行号
  • user-select不可被用户选中

    目录 背景 字段属性 注意 案例 背景 项目中有这种奇葩需求 就是特定字段不让用户复制 不可被选中状态 这种应用场景最多的就是考试系统啥的吧 不让考生复制题目搜题 真恶心 字段属性 注意 浏览器实现之间的区别之一是继承 案例
  • 我用Python做副业,月赚1W+:千万别让死工资拖垮了自己。。

    被压垮的打工人 你还好吗 房贷车贷 上老下小 日常开销节省不了 但你的收入有多少 所以不敢生病 甚至不敢回家 就为了每个月那么点死工资 还得天天加班 然而忙忙忙 却变成了 穷忙族 成为了职场废人 其实很多人都想改变现状 想学点什么的 但就是
  • Proxy error: Could not proxy request错误解决

    vue 项目 错误原因 跨域 解决办法 package json文件中的scripts调试添加 start node index js server nodemon index js ignore client 这篇文章解释的很清楚http
  • 二叉排序树转化成双向链表

    题目描述 输入一棵二叉搜索树 将该二叉搜索树转换成一个排序的双向链表 要求不能创建任何新的结点 只能调整树中结点指针的指向 输入 输入可能包含多个测试样例 对于每个测试案例 输入的第一行为一个数n 0
  • 浅谈Spring-AOP

    HI 大家好 我是Lee 这篇文章我们主要说一下关于Spring AOP 什么是AOP 什么叫做面向切面编程 为什么要使用AOP 接下来让我们往下看 什么是AOP AOP为Aspect Oriented Programming的缩写 意思为
  • Lua基础之语法

    目录 1 输出2 注释3 控制语句4 赋值语句5 运算符6 关键字7 变量类型8 其他 原文地址http blog csdn net dingkun520wy article details 49930543 1 输出 print Hell
  • ubuntu16.04 开启ssh服务

    安装 sudo apt get install openssh server 启动 sudo service ssh start 查询服务启动状态 sudo ps e grep ssh 或者 sudo service ssh status
  • R绘图的文本大小,字体字号,字样,图形边界设置及坐标轴

    用于指定文本大小的参数 cex 表示相对于默认大小缩放倍数的数值 默认大小为1 1 5表示放大为默认值的1 5倍 0 5表示做小为默认大小的0 5倍 cex axis 坐标轴刻度文字的缩放倍数 类似cex cex lab 坐标轴标签 名称
  • markdown插入音频和视频

    优酷视频 width 560 height 315 src http player youku com embed XMzk1NTkwODkzNg allowfullscreen gt 爱奇艺视频 音乐1 border 0 width 33
  • 3DMAX 卸载工具,完美彻底卸载清除干净3dmax各种残留注册表和文件

    一些同学安装3dmax出错了 也有时候想重新安装3dmax的时候会出现这种本电脑windows系统已安装3dmax 你要是不留意直接安装 只会安装3dmax的附件 3dmax是不会安装上的 这种原因呢就是大家在之前卸载3dmax时没有吧3d
  • 中国联通卡上在苹果5上显示无服务器,苹果iPhone8显示无服务怎么办

    2019 10 11阅读 85 您可以通过以下方式下载壁纸 1 使用浏览器下载符合手机屏幕分辨率的壁纸保存至手机相册 2 使用第三方软件下载主题壁纸并安装 3 通过电脑下载喜欢的壁纸图片 通过数据线传输到手机中 2019 10 11阅读 9
  • Spring Boot 单体应用一键升级成 Spring Cloud Alibaba

    背景 随着 Apache Dubbo Nacos 以及 Spring Cloud 等服务框架的流行 越来越多的企业开始采用微服务架构来构建其应用程序 微服务架构使企业能够将其应用程序拆分成多个小型服务 这些服务可以独立部署和扩展 这种架构模
  • 操作系统 --- 进程/线程 同步

    操作系统 进程 线程 同步 资源竞争 race condition 临界区 critical section 解决临界区问题 实现进程同步 进程同步的三个原则 互斥 mutual exclusive 有限等待 bounded waiting
  • Basic Level 1024 科学计数法 (20分)

    题目 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法 其满足正则表达式 1 9 0 9 E 0 9 即数字的整数部分只有 1 位 小数部分至少有 1 位 该数字及其指数部分的正负号即使对正数也必定明确给出 现以科学计数法的格式给
  • java agent技术原理及简单实现

    注 本文定义 在函数执行前后增加对应的逻辑的操作统称为MOCK 1 引子 在某天与QA同学进行沟通时 发现QA同学有针对某个方法调用时 有让该方法停止一段时间的需求 我对这部分的功能实现非常好奇 因此决定对原理进行一些深入的了解 力争找到一
  • 循环和数据的操作命令

    while循环的本质就是让计算机在满足某一条件的前提下去重复做同一件事情 即while循环为条件循环 包含 1 条件计数循环 2条件无限循环 1 1计数循环 count 0 while count lt 9 print the loop i
  • Vue前端框架

    一 简介 Vue是一个渐进式 真正用到才引用 的JavaScript框架与其它大型框架不同的是 Vue 被设计为可以自底向上逐层应用 Vue 的核心库只关注视图层 不仅易于上手 还便于与第三方库或既有项目整合 另一方面 与现代化的工具以及各