VUE

VUE

传统的html+css+js+jq
现在的vue+less+js+jq
less基于node.js,可以动态生成css文件,可以动态的修改页面样式
在这里插入图片描述
在这里插入图片描述
前端开发IDE
在这里插入图片描述
也可以用IDEA开发

第一个VUE程序

  • 新建一个空的项目,idea安装vue插件 vue.js插件
  • html中引入vue(cdn链接方式引入)
<!--view-->
<div id="app">
  {{message}}
</div>
<script>
  var vm = new Vue({
      el: "#app",
      //model:数据
      data: {
          message: "hello , Vue!"
      }
  });
</script>

理解mvvm model(数据层) view(试图层) model&view(数据双向绑定)

数据双向绑定,当数据变化时,页面不用刷新也会跟着变化
虚拟dom,不用再去操作页面的dom对象
在这里插入图片描述
vue中的7大对象
el: 页面元素 与元素选择器类似
data: 数据

vue基本语法

if判断
在这里插入图片描述

for循环
在这里插入图片描述

vue绑定事件

v-on
在这里插入图片描述

v-model
在这里插入图片描述
在这里插入图片描述

vue的组件

在这里插入图片描述
组件就是自定义标签在这里插入图片描述
v-bind
将数据绑定到某个字段上在这里插入图片描述

网络通信

在这里插入图片描述

 <script src="https://cdn.bootcss.com/axios/0.19.0-beta.1/axios.min.js"></script>

在这里插入图片描述

计算属性(vue特色)

computed
可以理解为mybatis里面的缓存,当请求的数据没有变化时,则会从缓存中拿数据,一旦数据产生变化,则重新更新数据
在这里插入图片描述

slot插槽

slot
在这里插入图片描述
用slot替换上面写死的元素标签

v-bind:可以简写成 :在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
vue核心:数据驱动 虚拟dom 、组件化compent
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

vue-cli脚手架(构建第一个vue工程)

与maven类似
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
打包并运行成功
在这里插入图片描述
访问 http://localhost:8080/
在这里插入图片描述
在这里插入图片描述
目录分析:

  • build:打包工具目录
  • config:配置目录 端口号也在此配置
  • node_modules:类似于maven库的lib,依赖目录
  • src:代码资源目录
  • static:静态资源目录

webpack学习

静态模块打包器
浏览器现在还不支持 ECMAScript6 以上版本,如果我们开发是基于6以上版本开发的话,通过webpack可以将开发的代码版本降级到5以下
在这里插入图片描述
在这里插入图片描述
新建html文件,将打包好的js文件引入javascript中
在这里插入图片描述
引入成功
在这里插入图片描述

webpack --watch    // 热部署功能,持续监听项目,如果目标文件有变化,则重新打包

vue-router 路由

在项目目录下安装路由,其实就是将vue-router的包导入依赖中在这里插入图片描述
使用router路由步骤
1、配置路由 index.js,将组件导入到路由配置中,配置跳转组件的路径

import Vue from 'vue';
import VueRouter from "vue-router";
import Content from "../components/Content";
import Main from "../components/Main";
//装配路由
Vue.use(VueRouter);
//配置导出路由
export default new VueRouter({
  routes: [
    {
      //路由路径
      path:'/content',
      name: 'content',
      //跳转的组件
      component: Content
    },
    {
      //路由路径
      path:'/main',
      name: 'main',
      //跳转的组件
      component: Main
    }
  ]
});

2、在main.js文件中配置使用路由
注:在main中导入的router是指配置好的router的配置文件/router/index.js
注:在/router/index.js中导入的router是指依赖中的router组件

import Vue from 'vue'
import App from './App'
import router from "./router" //自定扫描里面的路由配置,每个插件的默认配置文件习惯命名为index

Vue.config.productionTip = false

new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})

3、在App.vue组件中使用路由跳转(App.vue是总的组件,里面包含各种小组件)

<template>
  <div id="app">
    <h1>VUE-ROUTER</h1>
    <router-link to="/content">内容页</router-link> //请求路由
    <router-link to="/main">首页</router-link> 
    <RouterView></RouterView>  //经路由请求组件,跳转之后组件的显示位置
  </div>
</template>

<script>
    import Content from "./components/Content"; //导入组件
    import Main from "./components/Main";
    export default {
        name: 'App',
        comments: {
            Content,   //配置组件
            Main
        }
    }
</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>

ElementUI

整合ElementUI,一个vue项目的创建流程
在这里插入图片描述
1、初始化一个vue项目 全选no

vue init webpack hello-vue 

2、安装四个插件:vue-router、element-ui、sass-loader、node-sass

#安装vue-router
npm install vue-router --save-dev 

#安装element-ui
npm i element-ui -S

#安装依赖
npm install

#安装sass-loader、node-sass
cnpm install sass-loader node-sass --save-dev

3、启动项目

npm run dev

加入element之后项目不同的地方:main.js

import Vue from 'vue'
import App from './App'
import router from "./router";
//引入element-ui及其css文件
import Element from "element-ui";
import 'element-ui/lib/theme-chalk/index.css'

Vue.config.productionTip = false

//使用element
Vue.use(Element) 
Vue.use(router)

new Vue({
  el: '#app',
  router,
  render: h => h(App)  //使用element 需要改成的配置
})

嵌套路由

配置嵌套路由

import Vue from "vue";
import VueRouter from "vue-router";
import Login from "../views/Login";
import Main from "../views/Main";
import Children from "../views/Children";
Vue.use(VueRouter)

export default new VueRouter({
  routes: [
    {
      path: '/login',
      component: Login
    },
    {
      path: '/main',
      component: Main,
      children: [ //嵌套路由
        {path: '',compent: Children}
      ]

    }
  ]
})

参数传递和重定向

接收参数
路由的配置

export default new VueRouter({
  routes: [
    {
      path: '/login',
      component: Login
    },
    {
      path: '/main/:id', //接收参数 :是绑定的意思
      component: Main,
      children: [
        {path: '',compent: Children}
      ]

    }
  ]
})

页面的配置

  	<!--取出路由中的参数信息-->
    {{$route.params.id}}
    <!--name:路由的配置路径或者name属性值,params:为键值对的参数信息-->
    <router-link :to="{name:'/main',params:{id:1}}">首页</router-link>
    <router-view></router-view>

props解耦
路由配置

export default new VueRouter({
  routes: [
    {
      path: '/login',
      component: Login
    },
    {
      path: '/main/:id', //接收参数 :是绑定的意思
      component: Main,
      props: true,//解耦。可以将参数直接传递到组件中,组件使用props接收参数
      children: [
        {path: '',compent: Children}
      ]

    }
  ]
})

组件的配置

<template>
    <div>
        <h1>我是主页</h1>
       {{id}} //直接取出参数即可
    </div>
</template>

<script>
    export default {
        props: ['id'],  //使用props接收参数
        name: "Main"
    }
</script>

重定向
很简单就是在路由配置文件中增加一条重定向配置

export default new VueRouter({
  routes: [
    {
      path: '/login',
      component: Login
    },
    {
      path: '/main/:id', //接收参数 :是绑定的意思
      component: Main,
      props: true,//解耦。可以将参数直接传递到组件中,组件使用props接收参数
      children: [
        {path: '',compent: Children}
      ]
    },
    {
      path: '/gomain', ///重定向配置
      redirect: '/mian'
    }
  ]
})

404和路由钩子

在这里插入图片描述
404

import Vue from "vue";
import VueRouter from "vue-router";
import Login from "../views/Login";
import Main from "../views/Main";
import Children from "../views/Children";
import NotFound from "../views/NotFound";
Vue.use(VueRouter)

export default new VueRouter({
  mode: 'history',
  routes: [
    {
      path: '/login',
      component: Login
    },
    {
      path: '/main/:id', //接收参数 :是绑定的意思
      component: Main,
      props: true,//解耦。可以将参数直接传递到组件中,组件使用props接收参数
      children: [
        {path: '',compent: Children}
      ]
    },
    {
      path: '/gomain',
      redirect: '/mian'
    },
    {  //配置404页面,本质也是一个自己创建的404组件,当访问不存在的组件时都会经过这个路由
      path: '*',
      component: NotFound
    }
  ]
})

钩子函数
对于组件的配置

   export default {
        props: ['id'],
        name: "Main",
        beforeRouteEnter: (to,from,next)=>{
            console.log("进入路由之前")
            next();
        },
        beforeRouteLeave:(to,from,next)=>{
            console.log("进入路由之后")
            next();
        }
    }

在这里插入图片描述

导入axios 依赖

npm install --save vue-axios
npm install --save axios

main.js配置axios

import Vue from 'vue'
import App from './App'
import router from "./router";

//引入element-ui及其css文件
import Element from "element-ui";
import 'element-ui/lib/theme-chalk/index.css'
//引入axios
import axios from 'axios'
import VueAxios from 'vue-axios'

Vue.config.productionTip = false

//使用element
Vue.use(Element)
//使用axios
Vue.use(VueAxios,axios)
Vue.use(router)

new Vue({
  el: '#app',
  router,
  render: h => h(App)  //使用element 需要改成的配置
})

路由钩子的实际使用

组件中使用路由钩子,可以在进入路由之前提前加载数据


<template>
    <div>
        <h1>我是主页</h1>
       {{id}}
    </div>
</template>

<script>
    export default {
        props: ['id'],
        name: "Main",
        beforeRouteEnter: (to,from,next)=>{
            console.log("进入路由之前")
            //加载数据
            next(vm=>{
                vm.getData();//进入路由之前获取数据
            });
        },
        beforeRouteLeave:(to,from,next)=>{
            console.log("进入路由之后")
            next();
        },
        methods: {
          getData: function () {
              this.axios({
                  method: "get",
                  url: "https://localhost:8080/....",
              }).then(function (response) {
                  console.log(response)
              })
          }
        }
    }
</script>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值