新建一个文件" .prettierrc " 目的是防止js文件出现双引号和分号,它会使文件变成单引号并去掉分号
{
"singleQuote":true,
"semi":false,
}
在.eslintrc.js文件中的rules里加入一条规则,目的是让函数()前不空格,防止报错
"space-before-function-paren":"off" 这个单引号双引号都可以 "off"还可以替换成0
main.js文件不变
App.vue
<template>
<div class="container">
<div class="header">芒果商城</div>
<router-view class="content"></router-view>
<div class="footer">
<div class="nav active">
<i class="fa fa-home"></i>
<span>首页</span>
</div>
<div class="nav">
<i class="fa fa-fire"></i>
<span>热卖</span>
</div>
<div class="nav">
<i class="fa fa-shopping-cart"></i>
<span>购物车</span>
</div>
<div class="nav">
<i class="fa fa-user"></i>
<span>我的</span>
</div>
</div>
</div>
</template>
<style>
html,
body,
#app {
height: 100%;
width: 100%;
margin: 0;
padding: 0;
}
.container {
height: 100%;
width: 100%;
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
}
.header {
height: 40px;
text-align: center;
background-color: deeppink;
color: white;
line-height: 40px;
font-weight: bolder;
}
.content {
flex: 1;
overflow: auto;
}
.footer {
height: 50px;
/* background-color: deeppink; */
display: flex;
align-items: center;
justify-content: space-around;
}
.nav {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.nav i {
font-size: 1.4rem;
}
.nav span {
font-size: 0.6rem;
}
.nav.active {
color: deeppink;
}
img {
max-width: 100%;
}
</style>
保存自己想要当成地址栏的logo图片,然后到该链接http://www.bitbug.net/,将图片转换成ico格式
App.vue
<template>
<div id="app">
<div id="nav">
<router-link to="/">Home</router-link>|
<router-link to="/about">About</router-link>|
<router-link to="/cart">购物车</router-link>|
<router-link to="/user">我的</router-link>
</div>
<router-view />
</div>
</template>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
}
#nav {
padding: 30px;
}
#nav a {
font-weight: bold;
color: #2c3e50;
}
#nav a.router-link-exact-active {
color: #42b983;
}
</style>
index.js
import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
Vue.use(VueRouter)
const routes = [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/about',
name: 'About',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () =>
import(/* webpackChunkName: "about" */ '../views/About.vue')
},
{
path: '/user',
name: 'User',
meta: {
needLogin: true
},
component: () => import('../views/User.vue')
},
{
path: '/login',
name: 'Login',
component: () => import('../views/Login.vue')
},
{
path: '/cart',
name: 'Cart',
meta: {
needLogin: true
},
component: () => import('../views/Cart.vue')
}
]
const router = new VueRouter({
routes
})
router.beforeEach((to, from, next) => {
/* console.group('before')
console.log(to)
console.log(from)
console.log(next)
next()
console.groupEnd() */
if (to.meta.needLogin) {
if (localStorage.getItem('token')) {
next()
} else {
next({ name: 'Login' })
}
} else {
next()
}
})
router.afterEach((to, from) => {
/* console.group('after')
console.log(to)
console.log(from)
console.groupEnd() */
})
export default router
User.vue
<template>
<div class="login">
<h1>用户中心</h1>
<button @click="logOut">退出</button>
</div>
</template>
<script>
export default {
methods: {
logOut() {
localStorage.removeItem('token')
this.$router.push({
name: 'Login'
})
}
}
}
</script>
<style>
</style>
Home.vue
图片的四种使用方法
<template>
<div class="home">
<img alt="Vue logo" src="../assets/logo.png" />
<!-- 1️⃣ 图片正确显示方法 -->
<img src="../assets/images/xy.jpg" alt="赤色彗星" />
<!-- 2️⃣3️⃣ 图片正确显示方法 -->
<img :src="xy" alt="赤色彗星" />
<!-- 4️⃣ 图片正确显示方法 -->
<img :src="szb" alt="赤色彗星" />
<HelloWorld msg="Welcome to Your Vue.js App" />
</div>
</template>
<script>
// @ is an alias to /src
import HelloWorld from '@/components/HelloWorld.vue'
// 3️⃣
import xx from '../assets/images/xy.jpg' // 引入文件
export default {
name: 'Home',
components: {
HelloWorld
},
data() {
return {
// 此写法是因为webpack中如果要引入资源文件需要使用require或者import
// 此处使用的是file-loader加载器
// 2️⃣xy: require('../assets/images/xy.jpg')
// 3️⃣import xx from '../assets/images/xy.jpg'
xy: xx
// 4️⃣引入网络图片是可以直接引入的
// szb:
// 'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=2416142803,2306400110&fm=26&gp=0.jpg'
}
}
}
</script>
Login.vue
<template>
<div class="login">
<h1>登录页</h1>
<button @click="loginHandle">登录</button>
</div>
</template>
<script>
export default {
methods: {
// 登录成功之后把token写入本地存储
loginHandle() {
localStorage.setItem('token', '123')
this.$router.push({
name: 'User'
})
}
}
}
</script>
<style>
</style>
cart.vue
<template>
<div class="Cart">
<h1>购物车</h1>
<button @click="loginHandle">登录</button>
</div>
</template>
<script>
export default {
methods: {
loginHandle() {
this.$router.push({ name: 'Login' })
}
}
}
</script>
<style scoped>
</style>