Vue的学习与使用

Main.js和App.vue
1.main.js是我们的入口文件,主要作用是初始化vue实例并使用需要的插件。

import App from './App.vue'
 import VueRouter from 'vue-router'
 import routeConfig from './pages/router-config'

 Vue.use(ElementUI)
 Vue.use(VueRouter)

 //定义路由
 const router = new VueRouter({
     routes: routeConfig
 })

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

2 . App.vue是我们的主组件,所有页面都是在App.vue下进行切换的。其实你也可以理解为所有的路由也是App.vue。
这里写图片描述
这里写图片描述

组件的使用
定义组件的模板的方法
1.字符串
默认情况下,在JS文件里模板会被定义为一个字符串。但是我觉得大家都会同意这种写法很难看懂,它除了有广泛的浏览器支持之外,并没有什么优势

2.模板字符串(Template literals)
通过ES6的模板字符串(反引号)语法,你在定义模板时可以直接换行,这是通过常规的JavaScript字符串没法做到的。这种写法更容易阅读,并且这种模板字符串语法得到了许多新版本浏览器的支持。当然,为了安全起见,你仍然应该把它转译为ES5的语法形式。

3.X-Templates
使用这种方法,你需要在index.html文件里的script标签中定义你的模板。script标签需要添加text/x-template类型作为标记,并且在定义组件时,通过id来引用。

4.Inline Templates
通过给组件添加 inline-template 属性来告诉Vue,在其里面的内容就是模板,而不是把它当作是分发内容(见 slots )。它的缺点和x-templates一样,但是有一个优点就是,这种写法是在HTML模板对应的位置,所以它在页面一加载就渲染,而不用等到JavaScript执行。

5 Render functions
渲染函数需要你把模板当作一个JavaScript对象来进行定义,它们是一些复杂并且抽象的模板选项。然而,它的优点是你定义的模板更接近编译器,你可以使用所有JavaScript方法,而不是指令提供的那些功能。

6.JSX
Vue中最有争议性的模板选项就是JSX,一些开发者认为JSX语法太丑,不直观,而且和Vue的简洁特性相违背。JSX首先需要编译,因为浏览器并不支持JSX。但是如果你需要使用渲染函数,那么JSX语法绝对是一种更简洁的定义模板的方法。

7.Single File Components(推荐使用)
只要在你的配置中使用的是合适的构建工具,那么单文件组件绝对是这些方法中的首选。它们有两个最好的优点:允许你使用标记,同时把所有组件定义都写在一个文件中。

通过路由使用组件模板
1.首先我们可以先创建一个路由配置文件,将组件模板导入进来,然后设置对应的路由。

import activePublic from './activePublic/indexabc.vue'
import tableVue from  './test/table'
export default [
    {
        // 配置路由,当路径为'/activePublic',使用组件activePublic
        path:'/activePublic',
        component:activePublic,
    },
    {
        path:'/activeManage',
        component:tableVue,
    }
]

在APP.vue中将路由添加进去,之后点击相应的图标就可以在router-view 标签中显示相应的组件了。

<main>
  <!-- 左侧导航 -->
  <div class="main-left">
    <el-menu default-active="/activePublic" class="el-menu-vertical-demo" :router="true">
      <el-menu-item index="/activePublic" :class="{'isActive': active}">活动发布</el-menu-item>
      <el-menu-item index="/activeManage" :class="{'isActive': !active}">活动管理</el-menu-item>
    </el-menu>
  </div>

  <!-- 右侧主内容区 -->
  <div  class="main-right" >
        <router-view></router-view>
  </div>

</main>

使用路由还需要在main.js中导入vue-router,安装步骤省略,导入路由也可以在APP.vue中导入。

import App from './App.vue'
import VueRouter from 'vue-router'
import routeConfig from './pages/router-config'
Vue.use(VueRouter)

//定义路由

const router = new VueRouter({
    routes: routeConfig
})

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

前后端交互
1.aixos
1-1.axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征:
从浏览器中创建 XMLHttpRequest
从 node.js 发出 http 请求
支持 Promise API
拦截请求和响应
转换请求和响应数据
取消请求
自动转换JSON数据
客户端支持防止 CSRF/XSRF
1-2.具体语法请参考http://blog.lee-cloud.xyz/post/1/Axios-zhong-wen-wen-dang。本文仅以一个简单的post为例:

axios.post("http://127.0.0.1:8080/gethello",{"name":"a "}
    ).then(function (response) {
    console.log(response);
}).catch(function (error) {
    console.log(error);
});

1-3.后台提供对应的接口即可进行访问,跨域问题如何解决?
如果是spring boot项目可以通过CrossOrigin注解来快速解决或者将vue打包到后台项目中。(还可以使用nginx解决)。

2.Eelement ui 与后台交互
Table.vue组件中,设置数据由tableData2绑定

<template>
    <el-table
            :data="tableData2"
            style="width: 100%"
            :row-class-name="tableRowClassName">
        <el-table-column
                prop="date"
                label="日期"
                width="180">
        </el-table-column>
        <el-table-column
                prop="name"
                label="姓名"
                width="180">
        </el-table-column>
        <el-table-column
                prop="address"
                label="地址">
        </el-table-column>
    </el-table>
</template>

在JS代码块中设置好data函数,注意data()不能为空。

data() {
    return {
        tableData2:[]
}

将后台返回的数据赋值给tableData2.

mounted: function () {
    var _this = this   //很重要!!
    axios.get('http://127.0.0.1:8080/getdata')
        .then(function (res) {
            console.log(res);
           _this.tableData2 = res.data
        })
        .catch(function (error) {
            console.log(error);
        });
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值