vue配置和搭建

bootstrap
https://www.bootcss.com/

学习网站
http://cvcode.gitee.io/study/

其他学习网站
http://vip.mayikt.com


vue配置和搭建:

node-js(下载nod-js16或者17)
https://nodejs.org/en

vue3官网
https://cn.vuejs.org/
 安装:npm init vue@latest
vue2官网:https://v2.cn.vuejs.org/
  安装: npm install vue
仓库
https://mvnrepository.com/

element:快速搭建框架网站;
https://element.eleme.cn/#/zh-CN


往上爬一层
cd ..   

进入项目路径
cd ./property-vue2(项目名)

也可以直接退出去找到路径cmd
然后安装npm中的各命令

vue3:
npm install element-plus --save
// main.js
import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import App from './App.vue'

const app = createApp(App)
app.use(ElementPlus)
app.mount('#app')

路由配置
createApp(App).use(ElementPlus).use(router).mount("#app")


vue3 路由配置router包下面
index.js
//路由需要用到哪些页面
import {createRouter, createWebHashHistory} from "vue-router"
const router = createRouter({
    history:  createWebHashHistory(), routes: [{
        path: "/", component: SystemIndex
    }, {
        path: "/login",
        component: UserLogin,
        children:[

        ]
    }]
})
export default router;


vue2路由配置和main.js配置
先安装:npm i element-ui -S
1.创建一个router包

在包下面写 :index.js:

import VueRouter from 'vue-router'
import SystemIndex from "@/components/SystemIndex";
import UserLogin from "@/components/UserLogin";
import UserManger from "@/components/page/UserManger";
import DictManger from "@/components/page/DictManger";


const router = new VueRouter({
    routes: [{
        path: "/index", component: SystemIndex, children: [//子路由
            {path: "user", component: UserManger}, {path: "dict", component: DictManger}]
    }, {
        path: "/login", component: UserLogin
    }]
})
export default router;

//main.js:
import Vue from 'vue'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import App from './App.vue'
import router from "@/router";

import VueRouter from 'vue-router'
Vue.use(VueRouter);
Vue.config.productionTip = false
Vue.use(ElementUI);


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


axios官网
https://www.axios-http.cn/
安装
npm install axios

router安装
vue3:npm install vue-router
vue2:npm install vue-router@3

接口访问
http://localhost:8080/swagger-ui/index.html


后端分离
跨域 后端用注解@CrossOrigin
@RequestBody :前端传值接受json格式

可以单独写一个工具包封装好方法:utils下面的request.js在下面写入统一返回的一个请求方法
promise用法
import axios from "axios";

//promise 表示承诺,将来我会执行什么什么,里面有一个方法,方法有两个参数
//resolve解决时一个方法用来返回数据,将来可以通过 then 来获取
//reject 拒绝将来可以通过 catch 获取数据
// axios.post(url, data)就是一个promise
function request(url, data) {
    return new Promise((resolve, reject) => {
        axios.post("http://localhost:9000/" + url, data)
            .then((response) => {
                if (response.data.success) {
                    resolve(response.data.data);
                } else {
                    alert(response.data.message);
                    reject()
                }
            })
            .catch((error) => {
                alert('网络故障' + error);
                reject()
            });
    })

}

export default request;


同步用法

    submitForm(formName) {
      this.$refs[formName].validate(async (valid) => {
        if (valid) {
          // request("login", this.ruleForm)这个方法返回一个promise
          //对于一个promise 获取它的返回数据有两种,一种时异步
          //1,异步then里面方法什么时候执行取决于请求数据什么时候收到,而且程序会继续执行
          // request("login", this.ruleForm).then(data)=>{
          // console.info(data)
          // }2,同步 async await
          //async 加在方法里面,会强制带await 的promise 执行完成才能继续往后执行
          let data = await request("login", this.ruleForm)
          localStorage.token = data;
          this.$router.push("/index/user")//跳转到指定路由
        } else {
          this.$message('请认真填写表单');
          return false;
        }
      });
    },

vue: 安装别的项目过来 之前导入依赖
1.先配置镜像
输入 npm get registry:查看当前镜像源为https://registry.npmjs.org/(npm默认镜
输入npm config set registry xxx(镜像源地址)。
以国内淘宝镜像为例:npm config set registry https://registry.npm.taobao.org
 npm install
 npm run dev

路由传参
1.在vue页面上写好跳转路由地址的时候使用路由的路径传参
this.$router.push("/index/detail/"+ id)
2.在route包下面的index.js里面添加

const router = new VueRouter({
    routes: [{
        path: "/index", component: SystemIndex, children: [//子路由
             
            {path: "detail/:id", component:DetailOwner},
        ]
    }, {
        path: "/login", component: UserLogin
    },{
        path: "/", redirect: '/index'
    }
    ]
})
export default router;


2.
path: "detail/:id", component:DetailOwner :
在路径后面添加冒号之后把参数变量名放在后面
3.
 let data = await request(`owner/findById?id=${this.$route.params.id}`, {}, "get")
使用this.$route.params.参数名
来接收参数

组件静态传参:
1.
:user-id="userId"
2.两种方式接受参数
  props:["userId"],
  props: {userId: {type: Number, default: 0}},


组件动态传参:
 1.
everyBus.$emit("share",obj.id,obj.parentId);
2.
created() {//组件传值动态获取参数 五颗星重点
    everyBus.$on("share",(o1,o2)=>{
      this.id1 = o1;
      this.parentId1 = o2
      this.loadData();
    })

  },


页面局部刷新使用动态组件的点击事件实现:如aPP页面
  <button @click="componentsName='HelloWorld'">HelloWorld</button>
  <button @click="componentsName='UserInfo'">UserInfo</button>
  <Component :is="componentsName"></Component>

export default {
  name: 'App',
  components: {
    HelloWorld,
    UserInfo
  }

其中"componentsName='HelloWorld'"的Helloword和组件名字必须一致


v-for用法
如组件使用
<service-card-main v-for="l in serviceList" :list="l" :key="l.name"></service-card-main>
 另外一个组件接收值:
props:["list"]
使用:
<div v-for="l in list.list" class="foot-f" :key="l.name">
      <p>{{l.icon}}</p>
      <h5>{{l.name}}</h5>
  </div>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值