前端项目构建
一、前端知识回顾
1.1、创建前端脚手架前端工程
- 利用命令行
create vue 项目名称
创建项目
注:一定要在要创建的文件项目目录下进行使用
- 利用vue CLI命令行是
vue ui
可视化界面创建项目
- 创建的前端工程的目录文件
- node_modules:当前项目依赖的js包
- assets:静态资源存放目录
- components:公共组件存放目录
- App.vue:项目的主组件,页面的入口文件
- main.js:整个项目的入口文件
- package.json:项目的配置信息、依赖包管理
- vue.config.js:vue-cli配置文件
-
启动vue项目 采用命令行
npm run serve
-
为了解决与后端项目端口有发生冲突,修改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 组件
- <template>标签中的内容会转为<a>内容,显示在html页面中的内容
- <style>标签中的内容是一些样式内容
- <script>标签中的内容是写一些js代码,逻辑代码
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
- axios是一个基于promise的网络请求库,作用于浏览器和node.js中
安装命令
npm install axios
导入命令
import axios from 'axios'
- axios的请求列表
问题:若采用上述方式发送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
- 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’
}
})
- axios的统一方式
axios(config)
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>:路由视图组件,用来展示与路由路径匹配的视图组件
- 在前端vue项目中进行路由跳转
- 在main.js文件中引入router依赖
- 在router文件夹下的index.js文件中创建路由跳转的路径
- 在App.vue项目中引入<router-view>
- 路由跳转的方式
1)使用编程方式this.$router.push('/about')
2)使用标签方式<router-link to="/about">About</router-link>
1.4、VueX
-
vuex 是一个专为 Vue.js 应用程序开发的状态管理库
-
vuex 可以在多个组件之间共享数据,并且共享的数据是响应式的,即数据的变更能及时渲染到模板
-
vuex 采用集中式存储管理所有组件的状态
安装vuex
npm install vuex@next --save
核心概念
- state:状态对象,集中定义各个组件共享的数据
- mutations:类似于一个事件,用于修改共享数据,要求必须是同步函数
- actions:类似于mutation,可以包含异步操作,通过调用mutation来改变共享数据
使用vuex的主要文件为store文件下的index.js文件
定义和好在展示共享数据
- 在mutations中定义函数,修改共享数据
- 在actions中定义函数使用
1.5、TypeScript使用
安装命令
npm istall -g typescript
- 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文件