Vue进阶

目录

1.vue-cli脚手架

1.1 什么是vue-cli脚手架?

1.2 vue-cli脚手架的作用

1.3 vue-cli脚手架的安装

2.Node.js

2.1 什么是Node.js?

2.2 安装Node.js

2.3 测试Node.js是否安装成功

3.npm

3.1 什么是npm

3.2 npm常用命令

3.3 查看npm全局安装下包的路径

4.开始vue-cli脚手架的安装

4.1 测试vue-cli是否安装成功

5.使用vue-cli创建并运行第一个项目

5.1 切换安装路径

5.2 创建项目

5.3 安装完成!

5.4 目录结构

5.5 运行项目

6.注册组件

6.1 什么是组件?

6.2 全局注册组件

6.3 本地注册组件

7.组件之间的参数传递

父传子

子传父

8.Axios

8.1 什么是Axios?

8.2 安装Axios

8.3 使用Axios发送Get请求

8.4 跨域问题

9.vue-router路由

9.1 什么是路由?

9.2 安装vue-router路由

9.3 使用路由跳转页面

9.4 路由中的参数传递

9.5 嵌套路由

9.6 路由重定向

10.Element-ui


1.vue-cli脚手架

1.1 什么是vue-cli脚手架?

CLI Command-Line Interface 命令行界面,俗称脚手架

🎨这里用的是4.x的新版本

关于旧版本

Vue CLI 的包名称由 vue-cli 改成了 @vue/cli。 如果你已经全局安装了旧版本的 vue-cli (1.x 或 2.x),你需要先通过 npm uninstall vue-cli -gyarn global remove vue-cli 卸载它。

Node 版本要求

Vue CLI 4.x 需要 Node.js v8.9 或更高版本 (推荐 v10 以上)。你可以使用 nnvmnvm-windows 在同一台电脑中管理多个 Node 版本。

1.2 vue-cli脚手架的作用

能够快速搭建出vue项目的骨架,能够大大增加你的开发效率,让你减少前端项目环境的配置(类似于后端中的Maven)

1.3 vue-cli脚手架的安装

想要安装 vue-cli脚手架 ,那我得先介绍一下 Node.jsnpm

2.Node.js

2.1 什么是Node.js?

看看官方的描述

Node.js是一个Javascript运行环境(runtime environment),不是一个js文件,实质是对Chrome V8引擎进行了封装。Node.js 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python 等服务端语言平起平坐的脚本语言。 Node.js提供替代的API,使得V8在非浏览器环境下运行得更好。V8引擎执行Javascript的速度非常快,性能非常好。 Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用

总结来说:Node.js就是一个JavaScript的运行环境,能够让JavaScript脱离浏览器独立在服务端运行🐱‍🏍

2.2 安装Node.js

🌍官网地址:Node.js

点进去最新版本,下载安装一直下一步就好啦!

2.3 测试Node.js是否安装成功

打开cmd命令行输入 node -v 出现版本号则安装成功!

3.npm

3.1 什么是npm

npm是Node.js内置的工具,可以用来下载与管理如jquery.js这一类的第三方包(类似于linux的rpm)

这里我们使用npm来安装vue-cli脚手架

3.2 npm常用命令

  • npm install <xxx> -g 将包安装到全局环境中

  • npm ls 列出当前安装的了所有包

  • npm help 查看npm命令帮助

  • npm help <命令>查看某个命令的详情

3.3 查看npm全局安装下包的路径

  • 使用 -g 标志可以执行全局安装

  • 通过 npm config get prefix 来获取当前设置的全局目录

4.开始vue-cli脚手架的安装

命令行输入

npm install -g @vue/cli

4.1 测试vue-cli是否安装成功

命令行输入

vue --version

出现版本信息则安装成功!

5.使用vue-cli创建并运行第一个项目

5.1 切换安装路径

像我这,我要安装到D盘下的WorkSpace\Projects\VsCode\Code路径

5.2 创建项目

命令行输入: vue create 项目名

例如我这要创建一个叫hello-word的脚手架项目

vue create hello-world

之后会出现这样几个选项

如果你只学了vue2就选第一个,学了vue3就选第二个,第二个的模板会多一些东西

这里我们选第一个!

5.3 安装完成!

安装完成后,目录里面会多出一个文件夹

5.4 目录结构

我们通过VsCode打开看看

这个目录结构非常重要,就像maven一样,我们要把对应的资源放到对应的目录中,以起到规范作用,同时避免不必要的错误发生!

5.5 运行项目

创建成功项目后,命令行会变成这样

第一步:我们cd 进我们想要运行的项目

cd hello-word

第二步:输入 运行命令

npm run serve

执行完后会出现两个地址

随便一个复制进浏览器就可以访问啦!(❗有的会是8080端口,但不用担心,npm很智能,会自动分配没有被占用的端口,因为我这里的8080端口被占用了)

访问结果

结束运行:在命令行里面 ctrl+c 然后再Y

6.注册组件

6.1 什么是组件?

组件是可复用的 Vue 实例, 把一些公共的模块抽取出来,然后写成单独的的工具组件或者页面,在需要的页面中就直接引入即可那么我们可以将其抽出为一个组件进行复用。例如 页面头部、侧边、内容区,尾部,上传图片,等多个页面要用到一样的就可以做成组件,大大提高了代码的复用率

一个vue组件通常由三部分构成:

html部分:在template标签中可以定义html代码 (❗标签里必须有一个div作为大盒子)

js部分:vue代码部分,包括data,created,methods,computed,watch等实例属性

css部分:定义css样式

👀Vue组件模板

<template>
    <div>
    
  </div>
</template>
<script>
export default {
  data() {
   return {
​
   }
​
  },
​
  created(){
​
  },
​
  computed:{
​
  },
​
  methods:{
​
  },
​
}
​
</script>
​
<style lang="css" scoped>
​
</style>

6.2 全局注册组件

全局注册后,该组件在任何地方都可以使用

以我要在App.vue中使用Header.vue组件为例

第一步: 在main.js中导入并注册组件

第二步:使用

在其他组件的template中以标签的形式使用即可!

6.3 本地注册组件

在组件的内部去注册另外一个组件,只有在该组件内才有效

7.组件之间的参数传递

父传子

通过子组件的props部分,来指明可以接收的参数,父组件通过在标签中写明参数的键值对来传递参数

子传父

8.Axios

8.1 什么是Axios?

Axios 是一个开源的可以用在浏览器端和 NodeJS 的异步通信框架,她的主要作用就是实现 A JAX 异步通信,其功能特点如下: 拦截请求和响应 转换请求数据和响应数据取消请求 自动转换 JSON 数据 客户端支持防御 XSRF (跨站请求伪造)

🔻诚然,jquery的ajax也很好用,但是由于vue的盛行,我们不可能为了用ajax去单独引入一个jquery库,所以axios这样的轻量级异步通信框架就诞生了

8.2 安装Axios

🌍官网地址:axios中文网|axios API 中文文档 | axios

使用 npm:

npm install axios 

使用 cdn:

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

如果想全局引用cdn需要将其放在index.html中

🎂在main.js中引用

import axios from 'axios'
Vue.prototype.$axios = axios

8.3 使用Axios发送Get请求

✨Axios发送请求的方式有几种,这里只提供一种,想要了解可以去🌍官网axios中文网|axios API 中文文档 | axios

Get请求和Post请求

this.$axios({
   //这里的get修改为post则为post请求
 method: 'get',
    //需要请求的url
 url: 'http://localhost:8087/vue',   //此时会将baseURL与该url进行拼接成最终请求的url
    //携带参数,后端可以request.getParameter接收,也可以以形参的形式接收
 params:{
  page:1,
  count:2,
  type:'video'
 }
//这里的response是后台回调的值
}).then(response=>{
//回调函数
alert(response.data)
​
})
​

8.4 跨域问题

🎨什么是跨域

跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。

同源:**域名,协议,端口 都相同

跨域:域名,协议,端口中一项或多项不同

http://www.4399.com/index.html 请求 http://www.4399.com/login.html 非跨域

http://www.4399.com/index.html 请求 404 跨域 主域名不同

http://abc.4399.com/index.html 请求 http://defg.4399.com/login.html 跨域 子域名不同

http://www.4399.com:8080/index.html 请求 http://www.4399.com:8081/login.html 跨域 端口不同

http://www.4399.com/index.html 请求 https://www.4399.com/login.html 跨域 协议不同

❗请注意:localhost和127.0.0.1端口虽然都指向本机,但也属于跨域。

浏览器执行javascript脚本时,会检查这个脚本属于哪个页面,如果不是同源页面,就不会被执行。

解决跨域问题

springmvc:

在springmvc配置文件中加入

<!-- 接口跨域配置 -->
<mvc:cors>
    <mvc:mapping path="/**"
                 allowed-origins="*"
                 allowed-methods="POST, GET, OPTIONS, DELETE, PUT"
                 allowed-headers="Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"
                 allow-credentials="true" />
</mvc:cors>

springboot:

在配置类中

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
                .allowCredentials(true)
                .maxAge(3600)
                .allowedHeaders("*");
​
    }
}

9.vue-router路由

9.1 什么是路由?

vue-router是Vue.js官方的路由插件,它和vue深度集成,以用于设定访问路径,以往的页面都是通过<a></a>标签来进页面跳转的

由于vue中各个页面都是以组件的形式进行拼接,所以无法用传统的方式进行页面跳转,从而vue官方引入的vue-router来解决这个问题

🌍官网地址:Vue Router

9.2 安装vue-router路由

npm:

npm install vue-router

cdn:

<script src="https://cdn.bootcdn.net/ajax/libs/vue-router/3.5.3/vue-router.common.js"></script>

9.3 使用路由跳转页面

第一步:在src下创建一个静态路由表 routes.js

// 1 导入组件
import Context from './components/Context.vue'
import Header from './components/Header.vue'
//2 引入路由模块,这里以数组的形式,用逗号分割
export const routes=[{
    path: '/toHeader', //所需要路由的路径,通过这个路径可以访问到Header组件
    component: Header //添加被该路径访问的组件
},{
    path: '/toContext', 
    component: Context 
}
]

第二步:在main.js中配置

//3 引入路由模块,这相当于引入vue-router这个插件
import VueRouter from 'vue-router'
//4 让vue能够使用 VueRouter
Vue.use(VueRouter)
//5 引入第一步配置的routes.js静态路由表
import {routes} from './routes'
//6 创建一个VueRouter模块实例
 const router = new VueRouter({
  routes:routes
});
//7 将routes放入vue对象中
new Vue({
  router,//只需这里加上就好了!
  render: h => h(App), 
​
}).$mount('#app')

使用:

1.使用html标签进行页面跳转:在其他组件里,通过<router-link to="路由表里配置的路径"></router-link> 即可进行页面跳转,类似于html中的a标签

通过 <router-view></router-view> 标签来显示跳转后的组件

2.js进行页面跳转:在js方法中直接进行页面跳转 this.$router.push('/toLoginSuccess');,在需要显示的位置使用<router-view></router-view>

场景:登录成功后需要跳转页面

9.4 路由中的参数传递

第一种: 通过动态路由传递

我们经常需要把某种模式匹配到的所有路由,全都映射到同个组件。例如,我们有一个 User 组件,对于所有 ID 各不相同的用户,都要使用这个组件来渲染。那么,我们可以在 vue-router 的路由路径中使用“动态路径参数”(dynamic segment) 来达到这个效果:

const User = {
  template: '<div>User</div>'
}
​
const router = new VueRouter({
  routes: [
    // 动态路径参数 以冒号开头
    { path: '/user/:id', component: User }
  ]
})

现在呢,像 /user/123/user/456 都将映射到相同的路由。

一个“路径参数”使用冒号 : 标记。当匹配到一个路由时,参数值会被设置到 this.$route.params,可以在每个组件内使用。于是,我们可以更新 User 的模板,输出当前用户的 ID:

const User = {
  template: '<div>User {{ $route.params.id }}</div>'
}

第二种: 通过params进行参数传递

  1. 在路由组件中设置name属性

'

2.router-link中绑定to

也可以在js代码中

this.$router.push({ name:'name' ,params:{id:1,username:张三}});

3 参数获取

第三种: query进行参数传递

路由组件

1.router-link中绑定to

也可以在js代码中

this.$router.push({ path:'/toLogin' ,query:{id:1,username:张三}});

2.参数获取

params与query的区别

params与query的区别相当于请求中post和get的区别

params的参数不会在url中显示

query的参数会在url中显示

9.5 嵌套路由

在已经进行路由跳转的页面原有的基础上还能够再进行路由

/user/foo/profile                     /user/foo/posts
+------------------+                  +-----------------+
| User             |                  | User            |
| +--------------+ |                  | +-------------+ |
| | Profile      | |  +------------>  | | Posts       | |
| |              | |                  | |             | |
| +--------------+ |                  | +-------------+ |
+------------------+                  +-----------------+
const router = new VueRouter({
  routes: [
    {
      path: '/user/:id',
      component: User,
      children: [
        {
          // 当 /user/:id/profile 匹配成功,
          // UserProfile 会被渲染在 User 的 <router-view> 中
          path: 'profile',
          component: UserProfile
        },
        {
          // 当 /user/:id/posts 匹配成功
          // UserPosts 会被渲染在 User 的 <router-view> 中
          path: 'posts',
          component: UserPosts
        }
      ]
    }
  ]
})

9.6 路由重定向

在vue中重定向指:通过不同路径访问同一组件

重定向的配置

const router = new VueRouter({
  routes: [{path:'/toindex',component:index},
           //配置index组件的重定向,这里的redirect与被配置组件的path一致
    { path: '/toindex2', redirect: '/toindex' }
  ]
})

重定向的目标也可以是一个命名name的路由:

const router = new VueRouter({
  routes: [{path:'/toindex',name:'index',component:index},
    { path: '/toindex2', redirect: { name: 'index' }}
  ]
})

10.Element-ui

第一步:安装

npm i element-ui -S

第二步在main.js中引入

import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
​
Vue.use(ElementUI);

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值