项目实战 - b13wen/vue.js-study GitHub Wiki
http://lanyuanxiaoyao.com/2017/06/23/vue/ Vuetify.js
工程打包 npm run build 打包项目文件所在目录据 config->index.js查看
index: path.resolve(__dirname, '../dist/index.html'),
assetsRoot: path.resolve(__dirname, '../dist'),
直接打开会出现空白,原因这是放在服务器上运行的是相对路径找不到css和js 改出口文件的 assetsPublicPath: '/' // 改为 assetsPublicPath: './'
基本结构
<template>
组件代码区域
</template>
<script>
js代码区域
</script>
<style scoped>
样式代码区域
</style>
第一个vue页面 1、在src/components 下创建home.vue文件,定义路由的组件 <script> export default { #导出默认为home的对象 name: 'home', data() { return { msg: 'welcome to Your Vue.js App' # 使用return返回参数是参数作用域只能在本组件中,不会污染到其他组件 } } } </script>
2、修改路由
import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/components/first/Home' #导入
Vue.use(Router)
export default new Router({ #导出默认为Router的vue实例
routes: [
{
path: '/', #路由匹配的hash地址
name: 'Home', #在 vue-router 中的标识符
component: Home, #则代表此页面渲染时的所用到的组件
#还可以加入一个redirect:"/XX" 重定向新地址
}
]
})
在main.js中
router, 挂载了router实例
router:nyRouter, 挂载自定义nyRouter实例
3、说明
1)路由
1、是什么:路由本质就是一种对应关系,比如据地址获取对应地址的数据资源
2、有什么:路由分为前端路由和后端路由
后端路由室友服务器端进行实现的,并完成资源的分发
前端路由是依靠hash值(锚连接)的变化实现的
3、前端路由的体验
原生的href跳转
4、Vue Router简介
它是vue.js官方提供的路由管理器,是一个功能强大的前端工具
5、嵌套路由
当我们进行路由是在显示组件中还有新的子级路由连接以及内容
2)组件生命周期
3)监听属性
watch:{
myvalue: function() { #监听myvalue
console.log("XXX")
}
}
4)组件之间的通信 (数据、方法、)
父到子
a、父 <child v-bind:personinfo="msg"></child> personinfo 自定义标签属性
b、父 msg: "传的数据"
c、子组件props:['personinfo']
d、子 {{personinfo}}
子组件调用父组件方法
a、父 <child @func="show"></child>
b、 父 定义show(参数) 方法
c、子接收并传参 $emit('func',参数)
子组件与传一个方法给父组件
a、父组件中 <child v-on:increment="incrementToal"></child> 父组件监听自定义事件increment
b、子组件<child v-on:click="increment">{{ counter }}</child>
c、 increment: function () { this.counter += 1 this.$emit('increment') } $emit向外暴露这个方法
5)通道
<div id="app" v-cloak>
<p>{{ timeDate | formatDate }}</p>
</div>
将时间new Date()参数转化成自己需要的日期格式
6)路由过程中的参数传递
param传参和query传参
1)param传参
a、父路由使用"显示传参"/edit/123
子路由使用接受{{$route.params.id}} id为接受的值
b、url不显示传参
父 <router-link :to="{name:'Log',param:{num:666}}"></router-link> name值参数是指子路由名
子 {{this.$route.params.num}}
2)Query实现路由传参
父 <router-link :to="{path:'/one/log',query:{num:123}}">显示登录页面</router-link>
子 {{this.$route.query.num}}
7)slot内容分发
<children>
<span>子组件内容</span><!--上面这行不会显示-->
</children>
slot 内容分发:
解决父组件需要在子组件内放一些DOM,这些DOM在哪显示
父组件在子组件 内套内容,默认是不显示的
a、单个slot
父计算机属性中
components: {
children: {
template: `<p>我是子组件:<slot></slot></p>`
}
}
b、具名slot
父组件中
<children>
<span slot="first">子组件内容1</span>
<span slot="second">子组件内容2</span>
</children>
将放在子组件 父计算机属性所配置的对应位置
<p>我是子组件:<slot name="first"></slot>---<slot name="second"></slot></p>
8)event
4、使用路由进行页面跳转
商品展示列表
商品详情
购物车
后端管理页面
步骤一、修改App.vue
加入三个router-link 方便让用户跳转自己想看的页面
<template>
<div id="app">
<nav>
<div class="container">
<ul class="nav_left">
<li>
<!--router-link 和 a 标签类似,只不过 Vue 为它添加一些额外的优化逻辑。-->
<router-link to="/">Home</router-link>
</li>
<li>
<router-link to="/admin">Admin</router-link>
</li>
<li>
<router-link to="/cart">Cart</router-link>
</li>
</ul>
</div>
</nav>
<router-view/>
<!--router-view显示的是当前路由地址所对应的的内容-->
</div>
</template>
步骤二、编写Admin.vue组件,cart.vue与他一样
页面级一般放在src/pages 中
<template>
<div>
<div class="title">
<h1>{{msg}}</h1>
</div>
</div>
</template>
<script>
export default {
name: "Admin",
data() {
return{
msg: 'Welcome to the Admin Page'
}
}
}
</script>
<style scoped>
</style>
步骤三、
路由router.js中配置路由,与home配置一致
步骤四、嵌套路由和动态路由组织页面
用vue+express+mongoDB express框架 : 1、是什么 一款针对于js的后端开发框架
2、介绍
核心: 路由和中间件