e 10 bulan lalu
induk
melakukan
bf4362d92b

+ 2 - 1
vue/vue高阶/hello/package.json

@@ -9,7 +9,8 @@
   },
   "dependencies": {
     "core-js": "^3.8.3",
-    "vue": "^2.6.14"
+    "vue": "^2.6.14",
+    "vue-router": "3"
   },
   "devDependencies": {
     "@babel/core": "^7.12.16",

+ 2 - 1
vue/vue高阶/hello/src/main.js

@@ -1,8 +1,9 @@
 import Vue from 'vue'
 import App from './App.vue'
-
+import router from './router'
 Vue.config.productionTip = false
 
 new Vue({
+  router,
   render: h => h(App),
 }).$mount('#app')

+ 16 - 0
vue/vue高阶/hello/src/router/index.js

@@ -0,0 +1,16 @@
+import Vue from 'vue';
+import vueRouter from 'vue-router'
+
+Vue.use(VueRouter)
+
+const routes = [
+
+]
+
+const router = new vueRouter({
+    mode:"history",
+    base: process.env.BASE_URL,
+    routes
+})
+
+export default router;

+ 5 - 0
vue/vue高阶/hello/yarn.lock

@@ -5940,6 +5940,11 @@ vue-loader@^17.0.0:
     hash-sum "^2.0.0"
     watchpack "^2.4.0"
 
+vue-router@3:
+  version "3.6.5"
+  resolved "https://registry.npmmirror.com/vue-router/-/vue-router-3.6.5.tgz#95847d52b9a7e3f1361cb605c8e6441f202afad8"
+  integrity sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ==
+
 vue-style-loader@^4.1.0, vue-style-loader@^4.1.3:
   version "4.1.3"
   resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz#6d55863a51fa757ab24e89d9371465072aa7bc35"

+ 42 - 25
vue/vue高阶/project/src/App.vue

@@ -1,32 +1,49 @@
 <template>
-  <div id="app">
-    <nav>
-      <router-link to="/">Home</router-link> |
-      <router-link to="/about">About</router-link>
-    </nav>
-    <router-view/>
+  <div class="app">
+    <!-- 路由 -->
+    <!-- 跳转标签 
+      router-link
+      to 跳转的路径
+      active-class 定义点击后的样式
+      一定要搭配占位标签使用
+    -->
+    <div class="header">
+    <router-link active-class="active" class="text" to="/home">首页</router-link>
+    <router-link active-class="active" class="text" to="/list1">列表</router-link>
+    <router-link active-class="active" class="text" to="/my">我的</router-link>
+    </div>
+    <!-- 占位标签 -->
+    <div class="main">
+      <router-view></router-view>
+    </div>
   </div>
 </template>
 
-<style lang="scss">
-#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;
+<script>
+export default {
 
-  a {
-    font-weight: bold;
-    color: #2c3e50;
+}
+</script>
 
-    &.router-link-exact-active {
-      color: #42b983;
-    }
-  }
+<style scoped>
+* {
+  margin: 0;
+  padding: 0;
+  list-style: none;
+  text-decoration: none;
+  box-sizing: border-box;
+}
+.header {
+  height: 100px;
+  border:1px solid pink;
+  display:flex;
+  justify-content: space-around;
+  align-items: center;
+}
+.text {
+  color: #000;
+}
+.active {
+  color: #f00;
 }
-</style>
+</style>

+ 0 - 60
vue/vue高阶/project/src/components/HelloWorld.vue

@@ -1,60 +0,0 @@
-<template>
-  <div class="hello">
-    <h1>{{ msg }}</h1>
-    <p>
-      For a guide and recipes on how to configure / customize this project,<br>
-      check out the
-      <a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>.
-    </p>
-    <h3>Installed CLI Plugins</h3>
-    <ul>
-      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a></li>
-      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-router" target="_blank" rel="noopener">router</a></li>
-      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-vuex" target="_blank" rel="noopener">vuex</a></li>
-      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint" target="_blank" rel="noopener">eslint</a></li>
-    </ul>
-    <h3>Essential Links</h3>
-    <ul>
-      <li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li>
-      <li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li>
-      <li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li>
-      <li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li>
-      <li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li>
-    </ul>
-    <h3>Ecosystem</h3>
-    <ul>
-      <li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li>
-      <li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li>
-      <li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li>
-      <li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li>
-      <li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li>
-    </ul>
-  </div>
-</template>
-
-<script>
-export default {
-  name: 'HelloWorld',
-  props: {
-    msg: String
-  }
-}
-</script>
-
-<!-- Add "scoped" attribute to limit CSS to this component only -->
-<style scoped lang="scss">
-h3 {
-  margin: 40px 0 0;
-}
-ul {
-  list-style-type: none;
-  padding: 0;
-}
-li {
-  display: inline-block;
-  margin: 0 10px;
-}
-a {
-  color: #42b983;
-}
-</style>

+ 15 - 0
vue/vue高阶/project/src/components/Part1.vue

@@ -0,0 +1,15 @@
+<template>
+  <div class="part1">
+    <h1>这是画画专栏</h1>
+  </div>
+</template>
+
+<script>
+export default {
+
+}
+</script>
+
+<style>
+
+</style>

+ 15 - 0
vue/vue高阶/project/src/components/Part2.vue

@@ -0,0 +1,15 @@
+<template>
+    <div class="part2">
+      <h1>这是舞蹈专栏</h1>
+    </div>
+  </template>
+  
+  <script>
+  export default {
+  
+  }
+  </script>
+  
+  <style>
+  
+  </style>

+ 2 - 0
vue/vue高阶/project/src/main.js

@@ -1,6 +1,8 @@
 import Vue from 'vue'
 import App from './App.vue'
+// 引用路由
 import router from './router'
+// 引用状态库
 import store from './store'
 
 Vue.config.productionTip = false

+ 52 - 15
vue/vue高阶/project/src/router/index.js

@@ -1,29 +1,66 @@
+// 引入Vue库
 import Vue from 'vue'
+// 引入Vue-router库
 import VueRouter from 'vue-router'
-import HomeView from '../views/HomeView.vue'
-
+// 使用vue-router
 Vue.use(VueRouter)
 
+// 1.引入路径
+import Home from '@/views/Home.vue';
+import List from '@/views/List.vue';
+import My from '@/views/My.vue';
+import Part1 from '@/components/Part1.vue';
+import Part2 from '@/components/Part2.vue';
+
+
+
+// 路由的安装
+// vue2 => npm install vue-router@3 --save
+// vue2 => npm install vue-router@4 --save
+// 定义routes变量 编写路由
 const routes = [
   {
-    path: '/',
-    name: 'home',
-    component: HomeView
+    path:'/',
+    // 重定向
+    redirect: '/home'
+  },
+  // 2.配置路由
+  { 
+    // 定义的路由路径
+    path:'/home',
+    // 路由路径可以走哪个真实路径
+    component: Home,
+    redirect: '/home/part1',
+    // 配置子集路由
+    children:[
+      // 子集路径配置不要: /
+      {
+        path:'part1',
+        component: Part1,
+      },
+      {
+        path:'part2',
+        component: Part2
+      }
+    ]
+  },
+  { 
+    path:'/list',
+    component: List
+  },
+  { 
+    path:'/my',
+    component: My
   },
-  {
-    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/AboutView.vue')
-  }
 ]
-
+// 路由模式 定义router
 const router = new VueRouter({
+  // 模式:history
   mode: 'history',
+  // 路径:代理网址
   base: process.env.BASE_URL,
+  // 编写路由
   routes
 })
-
+// 抛出
 export default router

+ 0 - 5
vue/vue高阶/project/src/views/AboutView.vue

@@ -1,5 +0,0 @@
-<template>
-  <div class="about">
-    <h1>This is an about page</h1>
-  </div>
-</template>

+ 51 - 0
vue/vue高阶/project/src/views/Home.vue

@@ -0,0 +1,51 @@
+<template>
+  <div class="home">
+    <div class="nav">
+        <router-link active-class="ha" to="/home/part1" class="hobby">画画</router-link>
+        <router-link active-class="ha" to="/home/part2" class="hobby">舞蹈</router-link>
+    </div>
+    <div class="main">
+        <router-view></router-view>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+
+}
+</script>
+
+<style scoped>
+.home {
+    display: flex;
+    justify-content: space-between;
+}
+.nav {
+    width: 120px;
+    height: 400px;
+    display: flex;
+    margin-top: 20px;
+    flex-direction: column;
+    /* margin: 30px 0 0 30px; */
+}
+.hobby {
+    flex: 1;
+    text-align: center;
+    line-height: 200px;
+    text-decoration: none;
+    color: #000;
+    border: 1px solid #ff0;
+}
+.main {
+    flex: 2;
+    /* width: 500px; */
+    height: 500px;
+    margin-top: 20px;
+    margin-left: 30px;
+    border: 1px solid purple;
+}
+.ha {
+    color: red;
+}
+</style>

+ 0 - 18
vue/vue高阶/project/src/views/HomeView.vue

@@ -1,18 +0,0 @@
-<template>
-  <div class="home">
-    <img alt="Vue logo" src="../assets/logo.png">
-    <HelloWorld msg="Welcome to Your Vue.js App"/>
-  </div>
-</template>
-
-<script>
-// @ is an alias to /src
-import HelloWorld from '@/components/HelloWorld.vue'
-
-export default {
-  name: 'HomeView',
-  components: {
-    HelloWorld
-  }
-}
-</script>

+ 15 - 0
vue/vue高阶/project/src/views/List.vue

@@ -0,0 +1,15 @@
+<template>
+  <div class="list">
+    列表
+  </div>
+</template>
+
+<script>
+export default {
+
+}
+</script>
+
+<style>
+
+</style>

+ 15 - 0
vue/vue高阶/project/src/views/My.vue

@@ -0,0 +1,15 @@
+<template>
+  <div class="my">
+    我的
+  </div>
+</template>
+
+<script>
+export default {
+
+}
+</script>
+
+<style>
+
+</style>

+ 2 - 1
vue/vue高阶/project/vue.config.js

@@ -1,4 +1,5 @@
 const { defineConfig } = require('@vue/cli-service')
 module.exports = defineConfig({
-  transpileDependencies: true
+  transpileDependencies: true,
+  lintOnSave: false
 })