Vue前端项目【尚品汇】
----assets文件夹:经常放置一些静态资源(图片),assets文件夹里面资源webpack会进行打包为一个模块(js文件夹里面)学习完了Vue后并没有一个整体的项目,让我明白前端的工程化开发。public:一般放置一些共用的静态资源,打包上线的时候,public文件夹里面资源原封不动打包到dist文件夹里面。-----components文件夹:一般放置非路由组件(或者项目共用的组件)pa
Vue前端项目【尚品汇】
1. 说明
学习完了Vue后并没有一个整体的项目,让我明白前端的工程化开发。因此在B站找了一个开源的项目进行练手,并在这里进行记录。
地址:Vue前端项目【尚品汇】
2. 对项目创建
vue create shopping
这里我使用npm
3.结构
node_modules:放置项目依赖的地方
public:一般放置一些共用的静态资源,打包上线的时候,public文件夹里面资源原封不动打包到dist文件夹里面
src:程序员源代码文件夹
-----assets文件夹:经常放置一些静态资源(图片),assets文件夹里面资源webpack会进行打包为一个模块(js文件夹里面)
-----components文件夹:一般放置非路由组件(或者项目共用的组件)
App.vue 唯一的根组件
main.js 入口文件【程序最先执行的文件】
babel.config.js:babel配置文件
package.json:看到项目描述、项目依赖、项目运行指令
README.md:项目说明文件
4. 项目运行起来时,浏览器自动打开
–package.json
5.关闭ESLint校验功能
–在根目录下,创建一个Vue.config.js文件
5.路由分析
vue-router
前端所谓路由: KV键值对
key:URL(地址栏中的路径)
value 相应的路由组件
路由组件应该放在 -pages|views文件夹内,非路由组件放在components(全局共用组件)
非路由组件一般用标签的方式进行使用
编程式导航:声明式导航能做的,编程式导航都能做
但是编程式导航除了路由的跳转还可以做其他的业务逻辑。
详细的路由知识==>Vue路由
6.路由元信息
通过路由元判断是否显示Header与Footer
7. 路由传参
7.1 路由的跳转方式
比如:A->B
声明式导航: router-link(务必要有to属性),可以实现路由的跳转
编程式导航: 利用的是组件实例的$router.push|replace
方法,可以实现路由跳转。(可以书写一些自己业务)
7.2 路由传参的写法
params参数:
属于路径当中的一部分,需要注意,在配置路由的时候,需要占位。
query参数
:不属于路径当中的一部分,类似于ajax中的queryString,如/home?k=v&a=c
这里想通过下面的搜索框输入数据,并传递给后端。
通过v-model绑定数据
<template>
<header class="header">
<!-- 头部的第一行 -->
<div class="top">
<div class="container">
<div class="loginList">
<p>尚品汇欢迎您!</p>
<p>
<span>请</span>
<!-- 声明式导航:务必要有to属性 -->
<router-link to="/login">登录</router-link>
<router-link class="register" to="register">免费注册</router-link>
</p>
</div>
<div class="typeList">
<a href="###">我的订单</a>
<a href="###">我的购物车</a>
<a href="###">我的尚品汇</a>
<a href="###">尚品汇会员</a>
<a href="###">企业采购</a>
<a href="###">关注尚品汇</a>
<a href="###">合作招商</a>
<a href="###">商家后台</a>
</div>
</div>
</div>
<!--头部第二行 搜索区域-->
<div class="bottom">
<h1 class="logoArea">
<router-link class="logo" to="/home">
<img src="./images/logo.png" alt="" />
</router-link>
</h1>
<div class="searchArea">
<form action="###" class="searchForm">
<input
type="text"
id="autocomplete"
class="input-error input-xxlarge"
v-model="keyword"
/>
<button
class="sui-btn btn-xlarge btn-danger"
type="button"
@click="goSearch"
>
搜索
</button>
</form>
</div>
</div>
</header>
</template>
<script>
export default {
name: "",
data(){
return {
keyword:''
}
},
methods: {
// 搜索按钮的回调函数:需要向search路由进行跳转
goSearch() {
this.$router.push("/search");
},
},
};
</script>
<style lang="less" scoped>
.header {
& > .top {
background-color: #eaeaea;
height: 30px;
line-height: 30px;
.container {
width: 1200px;
margin: 0 auto;
overflow: hidden;
.loginList {
float: left;
p {
float: left;
margin-right: 10px;
.register {
border-left: 1px solid #b3aeae;
padding: 0 5px;
margin-left: 5px;
}
}
}
.typeList {
float: right;
a {
padding: 0 10px;
& + a {
border-left: 1px solid #b3aeae;
}
}
}
}
}
& > .bottom {
width: 1200px;
margin: 0 auto;
overflow: hidden;
.logoArea {
float: left;
.logo {
img {
width: 175px;
margin: 25px 45px;
}
}
}
.searchArea {
float: right;
margin-top: 35px;
.searchForm {
overflow: hidden;
input {
box-sizing: border-box;
width: 490px;
height: 32px;
padding: 0px 4px;
border: 2px solid #ea4a36;
float: left;
&:focus {
outline: none;
}
}
button {
height: 32px;
width: 68px;
background-color: #ea4a36;
border: none;
color: #fff;
float: left;
cursor: pointer;
&:focus {
outline: none;
}
}
}
}
}
}
</style>
第一种方式通过字符串的形式
传递字符串信息
第二种写法模板字符串
第三种写法最重要的
this.$router.push({name:"search",params:{keyword:this.keyword},query:{k:this.keyword.toUpperCase()}});
// todo 目前学习到P10,但是课程太长了目前考虑换一个
附录
1.课程地址:尚品汇
更多推荐
所有评论(0)