前端项目构建

前端项目构建

一、前端知识回顾

1.1、创建前端脚手架前端工程

  1. 利用命令行create vue 项目名称 创建项目

注:一定要在要创建的文件项目目录下进行使用

  1. 利用vue CLI命令行是vue ui可视化界面创建项目

image-20231110080037376

  1. 创建的前端工程的目录文件
  • ​ node_modules:当前项目依赖的js包
  • ​ assets:静态资源存放目录
  • ​ components:公共组件存放目录
  • ​ App.vue:项目的主组件,页面的入口文件
  • ​ main.js:整个项目的入口文件
  • ​ package.json:项目的配置信息、依赖包管理
  • ​ vue.config.js:vue-cli配置文件
  1. 启动vue项目 采用命令行npm run serve

  2. 为了解决与后端项目端口有发生冲突,修改vue的端口号,vue.config.js文件中添加如下代码

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  devServer: {
    port: 7070  //这里可以随机修改端口号
  }
})

1.2、Vue的基本使用

1.2.1、vue基本使用方式 – vue 组件
  1. <template>标签中的内容会转为<a>内容,显示在html页面中的内容
  2. <style>标签中的内容是一些样式内容
  3. <script>标签中的内容是写一些js代码,逻辑代码 image-20231110080954847
1.2.2、vue基本使用方式 –文本插值

作用:绑定data方法返回的对象属性

用法:{{xxx}}

<template>
    <div>
        <h1>{{ name }}</h1>
        <h1>{{ age > 60 ? '老年' : '青年' }}</h1>
    </div>
</template>
<script>
    export default {
        data() {
            return { name: '张三', age: 30 };
        }
    };
</script>
1.2.3、vue基本使用方式 –属性绑定

作用:为标签的属性中绑定data中的返回值

用法:v-bind:xxx,简写:xxx

<template>
    <div>
        <div><input type="text" v-bind:value="name"></div>
        <div><input type="text" :value="age"></div>
        <div><img :src="url"/></div>
    </div>
</template>
<script>
export default {
    data () {
        return {
            name: '王五',
            age: 20,
            src: 'https://www.itcast.cn/2018czgw/images/logo2.png'
        };
    }
}
</script>
1.2.4、vue基本使用方式 –事件绑定

作用:为元素绑定对应的事件

用法:v-on:xxx,简写@xxx

<template>
    <div>
      <div>
        <input type="button" value="保存" v-on:click="handleSave"/>
        <input type="button" value="保存" @click="handleSave"/><br>
      </div>
    </div>
  </template>
<script>
export default {
    data(){ return { name: ‘张三’}
    },
    methods: {
        handleSave(){
            alert(this.name)
        }
    }
}
</script>
1.2.5、vue基本使用方式 –双向绑定

作用:表单输入项和data返回的属性值进行绑定,任何一个修改都会同步给另外一方

用法:v-model:xxx

<template>
    <div>
        <div>
            双向绑定:{{ name }}
            <input type="text" v-model="name" />
            <input type="button" value="改变" @click="handleChange"/>
        </div>
    </div>
  </template>
<script>
export default {
    data(){return {name: '张三'}
    },
    methods: {
        handleChange(){
            this.name = '李四'
        }
    }
}
</script>
1.2.6、vue基本使用方式 –条件渲染

作用:根据表达式的值来动态的渲染页面

用法:v-if v-else-if v-else

<template>
    <div>
        <div v-if="sex == 1"></div>
        <div v-else-if="sex == 2"></div>
        <div v-else>
            未知
        </div>
    </div>
  </template>
  
<script>
export default {
    data(){
        return {sex: 1}
    }
}
</script>
1.2.7、vue基本使用方式 –axios
  1. axios是一个基于promise的网络请求库,作用于浏览器和node.js中

​ 安装命令

npm install axios

​ 导入命令

import axios from 'axios'
  1. axios的请求列表

image-20231110083202478

问题:若采用上述方式发送get请求或者post请求的时候容易发生跨域问题

解决方案:1) 在vue.config.js文件中添加如下代码

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  devServer: {
    port: 7070,
    proxy: {
      '/api': {  //遇到/api才会触发以下的代理
        target: 'http://localhost:8080', //代理的目的地址
        pathRewrite: { //重写地址
          '^/api': '' //将axios中的地址/api换成空
        }
      }
    }
  }
})

​ 2)直接配置nginx

  1. axios的post、get请求
axios.post('/api/employee/login',{
      username:'admin',
      password: '123456'
    }).then(res => {
      console.log(res.data)
    }).catch(error => {
      console.log(error.response)
    })
axios.get('/api/admin/shop/status',{
        headers: {
          token: ‘xxx.yyy.zzz’
        }
      })
  1. axios的统一方式axios(config)

image-20231110084057450

axios({
      url: '/api/admin/employee/login',
      method:'post',
      data: {
        username:'admin',
        password: '123456'
      }
    }).then((res) => {
      console.log(res.data.data.token)
      axios({
        url: '/api/admin/shop/status',
        method: 'get',
        params: {id: 100},
        headers: {
          token: res.data.data.token
        }
      })
    }).catch((error) => {
      console.log(error)
    })

1.3、Vue-Router

​ 路由组成:

  • VueRouter:路由器,根据路由请求在路由视图中动态渲染对应的视图组件
  • <router-link>:路由链接组件,浏览器会解析成<a>
  • <router-view>:路由视图组件,用来展示与路由路径匹配的视图组件

image-20231110084711646

  • 在前端vue项目中进行路由跳转
    • 在main.js文件中引入router依赖
    • 在router文件夹下的index.js文件中创建路由跳转的路径
    • 在App.vue项目中引入<router-view>
  1. 路由跳转的方式

​ 1)使用编程方式this.$router.push('/about')

​ 2)使用标签方式<router-link to="/about">About</router-link>

image-20231110085144688

1.4、VueX

  • vuex 是一个专为 Vue.js 应用程序开发的状态管理库

  • vuex 可以在多个组件之间共享数据,并且共享的数据是响应式的,即数据的变更能及时渲染到模板

  • vuex 采用集中式存储管理所有组件的状态

    安装vuex

    npm install vuex@next --save
    

核心概念

  • state:状态对象,集中定义各个组件共享的数据
  • mutations:类似于一个事件,用于修改共享数据,要求必须是同步函数
  • actions:类似于mutation,可以包含异步操作,通过调用mutation来改变共享数据

使用vuex的主要文件为store文件下的index.js文件

定义和好在展示共享数据

image-20231110092949945

image-20231110092953681

  • 在mutations中定义函数,修改共享数据

image-20231110093046701

image-20231110093201231

  • 在actions中定义函数使用

image-20231110093543173

image-20231110093551285

1.5、TypeScript使用

安装命令

npm istall -g typescript 

image-20231110094012919

  • Ts代码是可以兼容Js代码的
  • 拓展了JS的代码,拓展名为ts
  • 使用tsc命令将ts文件编译成js文件

99661471845)]

[外链图片转存中…(img-OALsTAPo-1699661471846)]

  • 在actions中定义函数使用

[外链图片转存中…(img-4FLFI7D7-1699661471847)]

[外链图片转存中…(img-ogEAkyrB-1699661471847)]

1.5、TypeScript使用

安装命令

npm istall -g typescript 

[外链图片转存中…(img-LmlgmM1u-1699661471848)]

  • Ts代码是可以兼容Js代码的
  • 拓展了JS的代码,拓展名为ts
  • 使用tsc命令将ts文件编译成js文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卷Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值