├── .gitignore
├── 01_src_分析脚手架
├── App.vue
├── assets
│ └── logo.png
├── components
│ ├── School.vue
│ └── Student.vue
└── main.js
├── 02_src_ref元素
├── App.vue
├── components
│ └── School.vue
└── main.js
├── 03_src_props配置
├── App.vue
├── components
│ └── Student.vue
└── main.js
├── 04_src_mixin混入(合)
├── App.vue
├── components
│ ├── School.vue
│ └── Student.vue
├── main.js
└── mixin.js
├── 05_src_插件
├── App.vue
├── components
│ ├── School.vue
│ └── Student.vue
├── main.js
└── plugins.js
├── 06_src_scoped样式
├── App.vue
├── components
│ ├── School.vue
│ └── Student.vue
└── main.js
├── 07_src_TodoList案例
├── App.vue
├── components
│ ├── MyFooter.vue
│ ├── MyHeader.vue
│ ├── MyItem.vue
│ └── MyList.vue
├── main.js
├── todoList.css
└── todoList.html
├── 07_src_TodoList案例_test
├── App.vue
├── components
│ ├── MyFooter.vue
│ ├── MyHeader.vue
│ ├── MyItem.vue
│ └── MyList.vue
├── main.js
├── todoList.css
└── todoList.html
├── 08_浏览器本地存储
├── localStorage.html
└── sessionStorage.html
├── 09_src_TodoList本地存储
├── App.vue
├── components
│ ├── MyFooter.vue
│ ├── MyHeader.vue
│ ├── MyItem.vue
│ └── MyList.vue
└── main.js
├── 10_src_组件自定义事件
├── App.vue
├── components
│ ├── School.vue
│ └── Student.vue
└── main.js
├── 11_src_TodoList_自定义事件
├── App.vue
├── components
│ ├── MyFooter.vue
│ ├── MyHeader.vue
│ ├── MyItem.vue
│ └── MyList.vue
└── main.js
├── 12_src_全局事件总线
├── App.vue
├── components
│ ├── School.vue
│ └── Student.vue
└── main.js
├── 13_src_TodoList_事件总线
├── App.vue
├── components
│ ├── MyFooter.vue
│ ├── MyHeader.vue
│ ├── MyItem.vue
│ └── MyList.vue
└── main.js
├── 14_src_消息订阅与发布
├── App.vue
├── components
│ ├── School.vue
│ └── Student.vue
└── main.js
├── 15_src_TodoList_pubsub
├── App.vue
├── components
│ ├── MyFooter.vue
│ ├── MyHeader.vue
│ ├── MyItem.vue
│ └── MyList.vue
└── main.js
├── 16_src_TodoList_nextTick
├── App.vue
├── components
│ ├── MyFooter.vue
│ ├── MyHeader.vue
│ ├── MyItem.vue
│ └── MyList.vue
└── main.js
├── 17_src_过渡与动画
├── App.vue
├── components
│ ├── Test.vue
│ ├── Test2.vue
│ └── Test3.vue
├── image-20211120101929608.png
└── main.js
├── 18_src_TodoList_动画
├── App.vue
├── components
│ ├── MyFooter.vue
│ ├── MyHeader.vue
│ ├── MyItem.vue
│ └── MyList.vue
└── main.js
├── 19_src_配置代理服务器
├── App.vue
└── main.js
├── 20_src_github搜索案例
├── App.vue
├── assets
│ ├── css
│ │ └── bootstrap.css
│ └── fonts
│ │ ├── glyphicons-halflings-regular.eot
│ │ ├── glyphicons-halflings-regular.svg
│ │ ├── glyphicons-halflings-regular.ttf
│ │ ├── glyphicons-halflings-regular.woff
│ │ └── glyphicons-halflings-regular.woff2
├── components
│ ├── List.vue
│ └── Search.vue
├── index.css
├── index.html
└── main.js
├── 21_src_github搜索案例_vue-resource
├── App.vue
├── assets
│ ├── css
│ │ └── bootstrap.css
│ └── fonts
│ │ ├── glyphicons-halflings-regular.eot
│ │ ├── glyphicons-halflings-regular.svg
│ │ ├── glyphicons-halflings-regular.ttf
│ │ ├── glyphicons-halflings-regular.woff
│ │ └── glyphicons-halflings-regular.woff2
├── components
│ ├── List.vue
│ └── Search.vue
├── index.css
├── index.html
└── main.js
├── 22_插槽
├── 1_src_默认插槽
│ ├── App.vue
│ ├── components
│ │ └── Category.vue
│ └── main.js
├── 2_src_具名插槽
│ ├── App.vue
│ ├── components
│ │ └── Category.vue
│ └── main.js
└── 3_src_作用域插槽
│ ├── App.vue
│ ├── components
│ └── Category.vue
│ └── main.js
├── 23_src_纯vue版
├── App.vue
├── components
│ └── Count.vue
└── main.js
├── 24_src_vuex版
├── App.vue
├── components
│ └── Count.vue
├── main.js
└── store
│ └── index.js
├── 25_src_求和案例_getters
├── App.vue
├── components
│ └── Count.vue
├── main.js
└── store
│ └── index.js
├── 26_src_求和案例_mapState与mapGetters
├── App.vue
├── components
│ └── Count.vue
├── main.js
└── store
│ └── index.js
├── 27_src_求和案例_mapMutations与mapActions
├── App.vue
├── components
│ └── Count.vue
├── main.js
└── store
│ └── index.js
├── 28_src_求和案例_多组件共享数据
├── App.vue
├── components
│ ├── Count.vue
│ └── Person.vue
├── main.js
└── store
│ └── index.js
├── 29_src_求和案例_vuex模块化编码
├── App.vue
├── components
│ ├── Count.vue
│ └── Person.vue
├── main.js
└── store
│ ├── count.js
│ ├── index.js
│ └── person.js
├── 30_src_路由的基本使用
├── App.vue
├── about.html
├── components
│ ├── About.vue
│ └── Home.vue
├── home.html
├── main.js
└── router
│ └── index.js
├── 31_src_多级路由
├── App.vue
├── about.html
├── components
│ └── Banner.vue
├── home-message.html
├── home-news.html
├── home.html
├── main.js
├── pages
│ ├── About.vue
│ ├── Home.vue
│ ├── Message.vue
│ └── News.vue
└── router
│ └── index.js
├── 32_src_路由的query参数
├── App.vue
├── components
│ └── Banner.vue
├── main.js
├── pages
│ ├── About.vue
│ ├── Detail.vue
│ ├── Home.vue
│ ├── Message.vue
│ └── News.vue
└── router
│ └── index.js
├── 33_src_命名路由
├── App.vue
├── about.html
├── components
│ └── Banner.vue
├── home-message.html
├── home-news.html
├── home.html
├── main.js
├── pages
│ ├── About.vue
│ ├── Detail.vue
│ ├── Home.vue
│ ├── Message.vue
│ └── News.vue
└── router
│ └── index.js
├── 34_src_路由的params参数
├── App.vue
├── about.html
├── components
│ └── Banner.vue
├── home-message.html
├── home-news.html
├── home.html
├── main.js
├── pages
│ ├── About.vue
│ ├── Detail.vue
│ ├── Home.vue
│ ├── Message.vue
│ └── News.vue
└── router
│ └── index.js
├── 35_src_路由的props配置
├── App.vue
├── components
│ └── Banner.vue
├── pages
│ ├── About.vue
│ ├── Detail.vue
│ ├── Home.vue
│ ├── Message.vue
│ └── News.vue
└── router
│ └── index.js
├── 36_src_router-link的replace属性
├── App.vue
├── components
│ └── Banner.vue
├── main.js
├── pages
│ ├── About.vue
│ ├── Detail.vue
│ ├── Home.vue
│ ├── Message.vue
│ └── News.vue
└── router
│ └── index.js
├── 37_src_编程式路由导航
├── App.vue
├── components
│ └── Banner.vue
├── main.js
├── pages
│ ├── About.vue
│ ├── Detail.vue
│ ├── Home.vue
│ ├── Message.vue
│ └── News.vue
└── router
│ └── index.js
├── 38_src_缓存路由组件
├── App.vue
├── components
│ └── Banner.vue
├── main.js
├── pages
│ ├── About.vue
│ ├── Detail.vue
│ ├── Home.vue
│ ├── Message.vue
│ └── News.vue
└── router
│ └── index.js
├── 39_src_两个新的生命周期钩子
├── App.vue
├── components
│ └── Banner.vue
├── main.js
├── pages
│ ├── About.vue
│ ├── Detail.vue
│ ├── Home.vue
│ ├── Message.vue
│ └── News.vue
└── router
│ └── index.js
├── 40_src_全局路由守卫
├── App.vue
├── components
│ └── Banner.vue
├── main.js
├── pages
│ ├── About.vue
│ ├── Detail.vue
│ ├── Home.vue
│ ├── Message.vue
│ └── News.vue
└── router
│ └── index.js
├── 41_src_独享路由守卫
├── App.vue
├── components
│ └── Banner.vue
├── main.js
├── pages
│ ├── About.vue
│ ├── Detail.vue
│ ├── Home.vue
│ ├── Message.vue
│ └── News.vue
└── router
│ └── index.js
├── 42_src_组件内路由守卫
├── App.vue
├── components
│ └── Banner.vue
├── main.js
├── pages
│ ├── About.vue
│ ├── Detail.vue
│ ├── Home.vue
│ ├── Message.vue
│ └── News.vue
└── router
│ └── index.js
├── 43_src_history模式与hash模式
├── App.vue
├── components
│ └── Banner.vue
├── main.js
├── pages
│ ├── About.vue
│ ├── Detail.vue
│ ├── Home.vue
│ ├── Message.vue
│ └── News.vue
└── router
│ └── index.js
├── 44_src_element-ui
├── App.vue
└── main.js
├── README.md
├── babel.config.js
├── package-lock.json
├── package.json
├── public
├── css
│ └── bootstrap.css
├── favicon.ico
├── image
│ ├── vuex.png
│ ├── 全局事件总线.png
│ └── 消息订阅与发布.png
└── index.html
├── src
├── App.vue
├── components
│ └── Banner.vue
├── main.js
├── pages
│ ├── About.vue
│ ├── Detail.vue
│ ├── Home.vue
│ ├── Message.vue
│ └── News.vue
└── router
│ └── index.js
└── vue.config.js
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 | # local env files
6 | .env.local
7 | .env.*.local
8 |
9 | # Log files
10 | npm-debug.log*
11 | yarn-debug.log*
12 | yarn-error.log*
13 | pnpm-debug.log*
14 |
15 | # Editor directories and files
16 | .idea
17 | .vscode
18 | *.suo
19 | *.ntvs*
20 | *.njsproj
21 | *.sln
22 | *.sw?
23 |
--------------------------------------------------------------------------------
/01_src_分析脚手架/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/01_src_分析脚手架/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xingwei07/vue_test/85867ccb36c0a8297e13a331655bd407d8f541fa/01_src_分析脚手架/assets/logo.png
--------------------------------------------------------------------------------
/01_src_分析脚手架/components/School.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
学校名称:{{name}}
4 | 学校地址:{{address}}
5 |
6 |
7 |
8 |
9 |
25 |
26 |
--------------------------------------------------------------------------------
/01_src_分析脚手架/components/Student.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
学生姓名:{{name}}
4 | 学生年龄:{{age}}
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/01_src_分析脚手架/main.js:
--------------------------------------------------------------------------------
1 | /*
2 | 该文件时整个项目的入口文件
3 | */
4 | // 引入Vue
5 | import Vue from 'vue'
6 | // 引入App组件,它是所有组件的父组件
7 | import App from './App.vue'
8 | // 关闭Vue的生产提示
9 | Vue.config.productionTip = false
10 |
11 | // 创建Vue实例对象vm
12 | new Vue({
13 | // 功能:将App组件放入容器中
14 | render: h => h(App),
15 | }).$mount('#app')
16 |
--------------------------------------------------------------------------------
/02_src_ref元素/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
32 |
33 |
--------------------------------------------------------------------------------
/02_src_ref元素/components/School.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
学校名称:{{name}}
4 | 学校地址:{{address}}
5 |
6 |
7 |
8 |
19 |
20 |
--------------------------------------------------------------------------------
/02_src_ref元素/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //关闭vue的生产提示
6 | Vue.config.productionTip = false
7 |
8 | //创建vm
9 | new Vue({
10 | el:'#app',
11 | render: h => h(App)
12 | })
--------------------------------------------------------------------------------
/03_src_props配置/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/03_src_props配置/components/Student.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{msg}}
4 | 学生姓名:{{name}}
5 | 学生性别:{{sex}}
6 | 学生年龄:{{age+1}}
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/03_src_props配置/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //关闭vue的生产提示
6 | Vue.config.productionTip = false
7 |
8 | //创建vm
9 | new Vue({
10 | el:'#app',
11 | render: h => h(App)
12 | })
--------------------------------------------------------------------------------
/04_src_mixin混入(合)/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/04_src_mixin混入(合)/components/School.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
学校名称:{{name}}
5 | 学校地址:{{address}}
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/04_src_mixin混入(合)/components/Student.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
学生姓名:{{name}}
4 | 学生年龄:{{age}}
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/04_src_mixin混入(合)/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | import {mixin} from './mixin'
6 |
7 | //关闭vue的生产提示
8 | Vue.config.productionTip = false
9 | Vue.mixin(mixin)
10 |
11 | //创建vm
12 | new Vue({
13 | el:'#app',
14 | render: h => h(App)
15 | })
--------------------------------------------------------------------------------
/04_src_mixin混入(合)/mixin.js:
--------------------------------------------------------------------------------
1 | export const mixin = {
2 | methods: {
3 | showName(){
4 | alert(this.name)
5 | }
6 | }
7 | }
8 |
9 | export const mixin2 = {
10 | mounted(){
11 | console.log("加载完毕...")
12 | }
13 | }
--------------------------------------------------------------------------------
/05_src_插件/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/05_src_插件/components/School.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
学校名称:{{name | myFilter}}
4 | 学校地址:{{address}}
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/05_src_插件/components/Student.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
学生姓名:{{name}}
4 | 学生年龄:{{age}}
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/05_src_插件/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 |
6 | //引入插件
7 | import plugins from './plugins'
8 |
9 | //关闭vue的生产提示
10 | Vue.config.productionTip = false
11 |
12 | //应用(使用)插件
13 | Vue.use(plugins)
14 |
15 | //创建vm
16 | new Vue({
17 | el:'#app',
18 | render: h => h(App)
19 | })
--------------------------------------------------------------------------------
/05_src_插件/plugins.js:
--------------------------------------------------------------------------------
1 | export default {
2 | install(Vue){
3 | //全局过滤器
4 | Vue.filter('myFilter',function(value){
5 | return value.slice(0,4)
6 | })
7 |
8 | //定义全局指令
9 | Vue.directive('fbind',{
10 | //指令与元素成功绑定时(一上来)
11 | bind(element,binding){
12 | element.value = binding.value
13 | },
14 | //指令所在元素被插入页面时
15 | inserted(element){
16 | element.focus()
17 | },
18 | //指令所在的模板被重新解析时
19 | update(element,binding) {
20 | element.value = binding.value
21 | }
22 | })
23 |
24 | //定义混入
25 | Vue.mixin({
26 | data(){
27 | return {
28 | x: 100,
29 | y: 200
30 | }
31 | },
32 | methods:{
33 | add(){
34 | this.age++
35 | }
36 | }
37 | })
38 |
39 | //给原型上添加一个方法
40 | Vue.prototype.hello = ()=>{
41 | alert('你好啊')
42 | }
43 | }
44 | }
45 |
46 |
--------------------------------------------------------------------------------
/06_src_scoped样式/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/06_src_scoped样式/components/School.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
学校名称:{{name}}
4 | 学校地址:{{address}}
5 |
6 |
7 |
8 |
19 |
20 |
--------------------------------------------------------------------------------
/06_src_scoped样式/components/Student.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
学生姓名:{{name}}
4 | 学生年龄:{{age}}
5 |
6 |
7 |
8 |
19 |
20 |
--------------------------------------------------------------------------------
/06_src_scoped样式/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 |
6 | //关闭vue的生产提示
7 | Vue.config.productionTip = false
8 |
9 | //创建vm
10 | new Vue({
11 | el:'#app',
12 | render: h => h(App)
13 | })
--------------------------------------------------------------------------------
/07_src_TodoList案例/components/MyHeader.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
36 |
37 |
--------------------------------------------------------------------------------
/07_src_TodoList案例/components/MyItem.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
11 |
12 |
13 |
33 |
34 |
--------------------------------------------------------------------------------
/07_src_TodoList案例/components/MyList.vue:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 |
24 |
25 |
--------------------------------------------------------------------------------
/07_src_TodoList案例/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 |
6 | //关闭vue的生产提示
7 | Vue.config.productionTip = false
8 |
9 | //创建vm
10 | new Vue({
11 | el:'#app',
12 | render: h => h(App)
13 | })
--------------------------------------------------------------------------------
/07_src_TodoList案例/todoList.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Recat App
6 |
7 |
8 |
9 |
43 |
44 |
--------------------------------------------------------------------------------
/07_src_TodoList案例_test/components/MyHeader.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
35 |
36 |
--------------------------------------------------------------------------------
/07_src_TodoList案例_test/components/MyItem.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
25 |
26 |
--------------------------------------------------------------------------------
/07_src_TodoList案例_test/components/MyList.vue:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 |
24 |
25 |
--------------------------------------------------------------------------------
/07_src_TodoList案例_test/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 |
6 | //关闭vue的生产提示
7 | Vue.config.productionTip = false
8 |
9 | //创建vm
10 | new Vue({
11 | el:'#app',
12 | render: h => h(App)
13 | })
--------------------------------------------------------------------------------
/07_src_TodoList案例_test/todoList.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Recat App
6 |
7 |
8 |
9 |
43 |
44 |
--------------------------------------------------------------------------------
/08_浏览器本地存储/localStorage.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | localStorage
6 |
7 |
8 | localStorage
9 |
10 |
11 |
12 |
13 |
14 |
44 |
45 |
--------------------------------------------------------------------------------
/08_浏览器本地存储/sessionStorage.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | sessionStorage
6 |
7 |
8 | sessionStorage
9 |
10 |
11 |
12 |
13 |
14 |
43 |
44 |
--------------------------------------------------------------------------------
/09_src_TodoList本地存储/components/MyHeader.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
35 |
36 |
--------------------------------------------------------------------------------
/09_src_TodoList本地存储/components/MyItem.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
25 |
26 |
--------------------------------------------------------------------------------
/09_src_TodoList本地存储/components/MyList.vue:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 |
24 |
25 |
--------------------------------------------------------------------------------
/09_src_TodoList本地存储/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 |
6 | //关闭vue的生产提示
7 | Vue.config.productionTip = false
8 |
9 | //创建vm
10 | new Vue({
11 | el:'#app',
12 | render: h => h(App)
13 | })
--------------------------------------------------------------------------------
/10_src_组件自定义事件/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{msg}}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
58 |
59 |
--------------------------------------------------------------------------------
/10_src_组件自定义事件/components/School.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
学校名称:{{name}}
4 | 学校地址:{{address}}
5 |
6 |
7 |
8 |
9 |
26 |
27 |
--------------------------------------------------------------------------------
/10_src_组件自定义事件/components/Student.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
学生姓名:{{name}}
4 | 学生性别:{{sex}}
5 | 学生年龄:{{age}}
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
46 |
47 |
--------------------------------------------------------------------------------
/10_src_组件自定义事件/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 |
6 | //关闭vue的生产提示
7 | Vue.config.productionTip = false
8 |
9 | //创建vm
10 | new Vue({
11 | el:'#app',
12 | render: h => h(App),
13 | // mounted(){
14 | // setTimeout(()=>{
15 | // this.$destroy()
16 | // },3000)
17 | // }
18 | })
--------------------------------------------------------------------------------
/11_src_TodoList_自定义事件/components/MyHeader.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
37 |
38 |
--------------------------------------------------------------------------------
/11_src_TodoList_自定义事件/components/MyItem.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
11 |
12 |
13 |
33 |
34 |
--------------------------------------------------------------------------------
/11_src_TodoList_自定义事件/components/MyList.vue:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 |
24 |
25 |
--------------------------------------------------------------------------------
/11_src_TodoList_自定义事件/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 |
6 | //关闭vue的生产提示
7 | Vue.config.productionTip = false
8 |
9 | //创建vm
10 | new Vue({
11 | el:'#app',
12 | render: h => h(App)
13 | })
--------------------------------------------------------------------------------
/12_src_全局事件总线/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{msg}}
4 |
5 |
6 |
7 |
8 |
9 |
26 |
27 |
--------------------------------------------------------------------------------
/12_src_全局事件总线/components/School.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
学校名称:{{name}}
4 | 学校地址:{{address}}
5 |
6 |
7 |
8 |
25 |
26 |
--------------------------------------------------------------------------------
/12_src_全局事件总线/components/Student.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
学生姓名:{{name}}
4 | 学生性别:{{sex}}
5 |
6 |
7 |
8 |
9 |
26 |
27 |
--------------------------------------------------------------------------------
/12_src_全局事件总线/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 |
6 | //关闭vue的生产提示
7 | Vue.config.productionTip = false
8 |
9 | //创建vm
10 | new Vue({
11 | el:'#app',
12 | render: h => h(App),
13 | beforeCreate() {
14 | //安装全局事件总线
15 | Vue.prototype.$bus = this
16 | },
17 | })
--------------------------------------------------------------------------------
/13_src_TodoList_事件总线/components/MyHeader.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
37 |
38 |
--------------------------------------------------------------------------------
/13_src_TodoList_事件总线/components/MyList.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
23 |
24 |
--------------------------------------------------------------------------------
/13_src_TodoList_事件总线/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 |
6 | //关闭vue的生产提示
7 | Vue.config.productionTip = false
8 |
9 | //创建vm
10 | new Vue({
11 | el:'#app',
12 | render: h => h(App),
13 | beforeCreate() {
14 | Vue.prototype.$bus = this
15 | },
16 | })
--------------------------------------------------------------------------------
/14_src_消息订阅与发布/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{msg}}
4 |
5 |
6 |
7 |
8 |
9 |
26 |
27 |
--------------------------------------------------------------------------------
/14_src_消息订阅与发布/components/School.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
学校名称:{{name}}
4 | 学校地址:{{address}}
5 |
6 |
7 |
8 |
35 |
36 |
--------------------------------------------------------------------------------
/14_src_消息订阅与发布/components/Student.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
学生姓名:{{name}}
4 | 学生性别:{{sex}}
5 |
6 |
7 |
8 |
9 |
28 |
29 |
--------------------------------------------------------------------------------
/14_src_消息订阅与发布/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 |
6 | //关闭vue的生产提示
7 | Vue.config.productionTip = false
8 |
9 | //创建vm
10 | new Vue({
11 | el:'#app',
12 | render: h => h(App),
13 | // beforeCreate() {
14 | // //安装全局事件总线
15 | // Vue.prototype.$bus = this
16 | // },
17 | })
--------------------------------------------------------------------------------
/15_src_TodoList_pubsub/components/MyHeader.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
37 |
38 |
--------------------------------------------------------------------------------
/15_src_TodoList_pubsub/components/MyList.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
23 |
24 |
--------------------------------------------------------------------------------
/15_src_TodoList_pubsub/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 |
6 | //关闭vue的生产提示
7 | Vue.config.productionTip = false
8 |
9 | //创建vm
10 | new Vue({
11 | el:'#app',
12 | render: h => h(App),
13 | beforeCreate() {
14 | Vue.prototype.$bus = this
15 | },
16 | })
--------------------------------------------------------------------------------
/16_src_TodoList_nextTick/components/MyHeader.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
37 |
38 |
--------------------------------------------------------------------------------
/16_src_TodoList_nextTick/components/MyList.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
23 |
24 |
--------------------------------------------------------------------------------
/16_src_TodoList_nextTick/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 |
6 | //关闭vue的生产提示
7 | Vue.config.productionTip = false
8 |
9 | //创建vm
10 | new Vue({
11 | el:'#app',
12 | render: h => h(App),
13 | beforeCreate() {
14 | Vue.prototype.$bus = this
15 | },
16 | })
--------------------------------------------------------------------------------
/17_src_过渡与动画/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/17_src_过渡与动画/components/Test.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 你好啊
6 |
7 |
8 |
9 |
10 |
20 |
21 |
--------------------------------------------------------------------------------
/17_src_过渡与动画/components/Test2.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 你好啊
6 | 尚硅谷
7 |
8 |
9 |
10 |
11 |
21 |
22 |
--------------------------------------------------------------------------------
/17_src_过渡与动画/components/Test3.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 | 你好啊
11 | 尚硅谷
12 |
13 |
14 |
15 |
16 |
28 |
29 |
--------------------------------------------------------------------------------
/17_src_过渡与动画/image-20211120101929608.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xingwei07/vue_test/85867ccb36c0a8297e13a331655bd407d8f541fa/17_src_过渡与动画/image-20211120101929608.png
--------------------------------------------------------------------------------
/17_src_过渡与动画/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 |
6 | //关闭vue的生产提示
7 | Vue.config.productionTip = false
8 |
9 | //创建vm
10 | new Vue({
11 | el:'#app',
12 | render: h => h(App),
13 | beforeCreate() {
14 | Vue.prototype.$bus = this
15 | },
16 | })
--------------------------------------------------------------------------------
/18_src_TodoList_动画/components/MyHeader.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
37 |
38 |
--------------------------------------------------------------------------------
/18_src_TodoList_动画/components/MyList.vue:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 |
25 |
26 |
--------------------------------------------------------------------------------
/18_src_TodoList_动画/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 |
6 | //关闭vue的生产提示
7 | Vue.config.productionTip = false
8 |
9 | //创建vm
10 | new Vue({
11 | el:'#app',
12 | render: h => h(App),
13 | beforeCreate() {
14 | Vue.prototype.$bus = this
15 | },
16 | })
--------------------------------------------------------------------------------
/19_src_配置代理服务器/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/19_src_配置代理服务器/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 |
6 | //关闭vue的生产提示
7 | Vue.config.productionTip = false
8 |
9 | //创建vm
10 | new Vue({
11 | el:'#app',
12 | render: h => h(App),
13 | })
--------------------------------------------------------------------------------
/20_src_github搜索案例/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/20_src_github搜索案例/assets/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xingwei07/vue_test/85867ccb36c0a8297e13a331655bd407d8f541fa/20_src_github搜索案例/assets/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/20_src_github搜索案例/assets/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xingwei07/vue_test/85867ccb36c0a8297e13a331655bd407d8f541fa/20_src_github搜索案例/assets/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/20_src_github搜索案例/assets/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xingwei07/vue_test/85867ccb36c0a8297e13a331655bd407d8f541fa/20_src_github搜索案例/assets/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/20_src_github搜索案例/assets/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xingwei07/vue_test/85867ccb36c0a8297e13a331655bd407d8f541fa/20_src_github搜索案例/assets/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/20_src_github搜索案例/components/List.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
欢迎使用查询工具!
4 |
正在查询,请稍后...
5 |
{{list.errorMsg}}
6 |
7 |
8 |
9 |
10 |
{{user.login}}
11 |
12 |
13 |
14 |
15 |
35 |
36 |
--------------------------------------------------------------------------------
/20_src_github搜索案例/components/Search.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
39 |
40 |
--------------------------------------------------------------------------------
/20_src_github搜索案例/index.css:
--------------------------------------------------------------------------------
1 | .album {
2 | min-height: 50rem;
3 | padding-top: 3rem;
4 | padding-bottom: 3rem;
5 | background-color: #f7f7f7;
6 | }
7 |
8 | .card {
9 | float: left;
10 | width: 33.333%;
11 | padding: .75rem;
12 | margin-bottom: 2rem;
13 | border: 1px solid #efefef;
14 | text-align: center;
15 | }
16 |
17 | .card > img {
18 | margin-bottom: .75rem;
19 | border-radius: 100px;
20 | }
21 |
22 | .card-text {
23 | font-size: 85%;
24 | }
--------------------------------------------------------------------------------
/20_src_github搜索案例/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 |
6 | //关闭vue的生产提示
7 | Vue.config.productionTip = false
8 |
9 | //创建vm
10 | new Vue({
11 | el:'#app',
12 | render: h => h(App),
13 | beforeCreate(){
14 | Vue.prototype.$bus = this
15 | }
16 | })
--------------------------------------------------------------------------------
/21_src_github搜索案例_vue-resource/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/21_src_github搜索案例_vue-resource/assets/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xingwei07/vue_test/85867ccb36c0a8297e13a331655bd407d8f541fa/21_src_github搜索案例_vue-resource/assets/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/21_src_github搜索案例_vue-resource/assets/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xingwei07/vue_test/85867ccb36c0a8297e13a331655bd407d8f541fa/21_src_github搜索案例_vue-resource/assets/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/21_src_github搜索案例_vue-resource/assets/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xingwei07/vue_test/85867ccb36c0a8297e13a331655bd407d8f541fa/21_src_github搜索案例_vue-resource/assets/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/21_src_github搜索案例_vue-resource/assets/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xingwei07/vue_test/85867ccb36c0a8297e13a331655bd407d8f541fa/21_src_github搜索案例_vue-resource/assets/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/21_src_github搜索案例_vue-resource/components/List.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
欢迎使用查询工具!
4 |
正在查询,请稍后...
5 |
{{list.errorMsg}}
6 |
7 |
8 |
9 |
10 |
{{user.login}}
11 |
12 |
13 |
14 |
15 |
35 |
36 |
--------------------------------------------------------------------------------
/21_src_github搜索案例_vue-resource/components/Search.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
37 |
38 |
--------------------------------------------------------------------------------
/21_src_github搜索案例_vue-resource/index.css:
--------------------------------------------------------------------------------
1 | .album {
2 | min-height: 50rem;
3 | padding-top: 3rem;
4 | padding-bottom: 3rem;
5 | background-color: #f7f7f7;
6 | }
7 |
8 | .card {
9 | float: left;
10 | width: 33.333%;
11 | padding: .75rem;
12 | margin-bottom: 2rem;
13 | border: 1px solid #efefef;
14 | text-align: center;
15 | }
16 |
17 | .card > img {
18 | margin-bottom: .75rem;
19 | border-radius: 100px;
20 | }
21 |
22 | .card-text {
23 | font-size: 85%;
24 | }
--------------------------------------------------------------------------------
/21_src_github搜索案例_vue-resource/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 |
6 | //引入插件
7 | import vueResoure from 'vue-resource'
8 |
9 | //关闭vue的生产提示
10 | Vue.config.productionTip = false
11 |
12 | //使用插件
13 | Vue.use(vueResoure)
14 |
15 | //创建vm
16 | new Vue({
17 | el:'#app',
18 | render: h => h(App),
19 | beforeCreate(){
20 | Vue.prototype.$bus = this
21 | }
22 | })
--------------------------------------------------------------------------------
/22_插槽/1_src_默认插槽/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
34 |
35 |
--------------------------------------------------------------------------------
/22_插槽/1_src_默认插槽/components/Category.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{title}}分类
4 |
7 |
8 | 我是一些默认值,当使用者没有传递具体结构时,我会出现
9 |
10 |
11 |
12 |
18 |
19 |
--------------------------------------------------------------------------------
/22_插槽/1_src_默认插槽/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 |
6 | //关闭vue的生产提示
7 | Vue.config.productionTip = false
8 |
9 | //创建vm
10 | new Vue({
11 | el:'#app',
12 | render: h => h(App),
13 | beforeCreate(){
14 | Vue.prototype.$bus = this
15 | }
16 | })
--------------------------------------------------------------------------------
/22_插槽/2_src_具名插槽/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
10 |
13 |
17 |
18 |
19 |
20 |
21 |
26 | 欢迎欣赏
27 |
28 |
29 |
30 |
31 |
32 |
49 |
50 |
--------------------------------------------------------------------------------
/22_插槽/2_src_具名插槽/components/Category.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{title}}分类
4 |
7 |
8 | 我是一些默认值,当使用者没有传递具体结构时,我会出现
9 | 我是一些默认值,当使用者没有传递具体结构时,我会出现
10 |
11 |
12 |
13 |
19 |
20 |
--------------------------------------------------------------------------------
/22_插槽/2_src_具名插槽/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 |
6 | //关闭vue的生产提示
7 | Vue.config.productionTip = false
8 |
9 | //创建vm
10 | new Vue({
11 | el:'#app',
12 | render: h => h(App),
13 | beforeCreate(){
14 | Vue.prototype.$bus = this
15 | }
16 | })
--------------------------------------------------------------------------------
/22_插槽/3_src_作用域插槽/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | - {{item}}
15 |
16 |
17 |
18 |
19 |
20 |
21 | {{item}}
22 |
23 |
24 |
25 |
26 |
27 |
28 |
38 |
39 |
--------------------------------------------------------------------------------
/22_插槽/3_src_作用域插槽/components/Category.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{title}}分类
4 |
7 |
8 | 我是一些默认值,当使用者没有传递具体结构时,我会出现
9 |
10 |
11 |
12 |
23 |
24 |
--------------------------------------------------------------------------------
/22_插槽/3_src_作用域插槽/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 |
6 | //关闭vue的生产提示
7 | Vue.config.productionTip = false
8 |
9 | //创建vm
10 | new Vue({
11 | el:'#app',
12 | render: h => h(App),
13 | beforeCreate(){
14 | Vue.prototype.$bus = this
15 | }
16 | })
--------------------------------------------------------------------------------
/23_src_纯vue版/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/23_src_纯vue版/components/Count.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
当前求和为:{{sum}}
4 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
45 |
46 |
--------------------------------------------------------------------------------
/23_src_纯vue版/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //引入vueResource
6 | import vueResource from 'vue-resource'
7 | //关闭vue的生产提示
8 | Vue.config.productionTip = false
9 | //使用插件
10 | Vue.use(vueResource)
11 |
12 | //创建vm
13 | new Vue({
14 | el:'#app',
15 | render: h => h(App),
16 | beforeCreate(){
17 | Vue.prototype.$bus = this
18 | }
19 | })
--------------------------------------------------------------------------------
/24_src_vuex版/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/24_src_vuex版/components/Count.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
当前求和为:{{$store.state.sum}}
4 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
40 |
41 |
--------------------------------------------------------------------------------
/24_src_vuex版/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //引入vueResource
6 | import vueResource from 'vue-resource'
7 | //引入store
8 | import store from './store'
9 | //关闭vue的生产提示
10 | Vue.config.productionTip = false
11 | //使用插件
12 | Vue.use(vueResource)
13 |
14 | //创建vm
15 | new Vue({
16 | el:'#app',
17 | render: h => h(App),
18 | store,
19 | beforeCreate(){
20 | Vue.prototype.$bus = this
21 | }
22 | })
--------------------------------------------------------------------------------
/24_src_vuex版/store/index.js:
--------------------------------------------------------------------------------
1 | //该文件用于创建Vuex中最为核心的store
2 |
3 | //引入Vue
4 | import Vue from 'vue'
5 | //引入vuex
6 | import Vuex from 'vuex'
7 | //使用插件
8 | Vue.use(Vuex)
9 | //准备actions——用于响应组件中的动作
10 | const actions = {
11 | // jia(context,value){
12 | // console.log('jia被调用了')
13 | // context.commit('JIA',value)
14 | // },
15 | // jian(context,value){
16 | // console.log('jian被调用了')
17 | // context.commit('JIAN',value)
18 | // },
19 | jiaOdd(context,value){
20 | console.log('jiaOdd被调用了')
21 | if(context.state.sum % 2){
22 | context.commit('JIA',value)
23 | }
24 | },
25 | jiaWait(context,value){
26 | console.log("jiaWait被调用了")
27 | setTimeout(()=>{
28 | context.commit('JIA',value)
29 | },500)
30 | }
31 | }
32 | //准备mutations——用于操作数据(state)
33 | const mutations = {
34 | JIA(state,value){
35 | console.log('JIA被调用了')
36 | state.sum += value
37 | },
38 | JIAN(store,value){
39 | console.log('JIAN被调用了')
40 | store.sum -= value
41 | }
42 | }
43 | //准备state——用于存储数据
44 | const state = {
45 | sum:0 //和
46 | }
47 | //创建并暴露store
48 | export default new Vuex.Store({
49 | actions,
50 | mutations,
51 | state
52 | })
--------------------------------------------------------------------------------
/25_src_求和案例_getters/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/25_src_求和案例_getters/components/Count.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
当前求和为:{{$store.state.sum}}
4 | 当前求和放大10倍为:{{$store.getters.bigSum}}
5 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
46 |
47 |
--------------------------------------------------------------------------------
/25_src_求和案例_getters/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //引入vueResource
6 | import vueResource from 'vue-resource'
7 | //引入store
8 | import store from './store'
9 | //关闭vue的生产提示
10 | Vue.config.productionTip = false
11 | //使用插件
12 | Vue.use(vueResource)
13 |
14 | //创建vm
15 | new Vue({
16 | el:'#app',
17 | render: h => h(App),
18 | store,
19 | beforeCreate(){
20 | Vue.prototype.$bus = this
21 | }
22 | })
--------------------------------------------------------------------------------
/25_src_求和案例_getters/store/index.js:
--------------------------------------------------------------------------------
1 | //该文件用于创建Vuex中最为核心的store
2 |
3 | //引入Vue
4 | import Vue from 'vue'
5 | //引入vuex
6 | import Vuex from 'vuex'
7 | //使用插件
8 | Vue.use(Vuex)
9 | //准备actions——用于响应组件中的动作
10 | const actions = {
11 | // jia(context,value){
12 | // console.log('jia被调用了')
13 | // context.commit('JIA',value)
14 | // },
15 | // jian(context,value){
16 | // console.log('jian被调用了')
17 | // context.commit('JIAN',value)
18 | // },
19 | jiaOdd(context,value){
20 | console.log('jiaOdd被调用了')
21 | if(context.state.sum % 2){
22 | context.commit('JIA',value)
23 | }
24 | },
25 | jiaWait(context,value){
26 | console.log("jiaWait被调用了")
27 | setTimeout(()=>{
28 | context.commit('JIA',value)
29 | },500)
30 | }
31 | }
32 | //准备mutations——用于操作数据(state)
33 | const mutations = {
34 | JIA(state,value){
35 | console.log('JIA被调用了')
36 | state.sum += value
37 | },
38 | JIAN(store,value){
39 | console.log('JIAN被调用了')
40 | store.sum -= value
41 | }
42 | }
43 | //准备state——用于存储数据
44 | const state = {
45 | sum:0 //和
46 | }
47 | //准备getters——用于将state中的数据进行加工
48 | const getters = {
49 | bigSum(state){
50 | return state.sum * 10
51 | }
52 | }
53 |
54 | //创建并暴露store
55 | export default new Vuex.Store({
56 | actions,
57 | mutations,
58 | state,
59 | getters
60 | })
--------------------------------------------------------------------------------
/26_src_求和案例_mapState与mapGetters/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/26_src_求和案例_mapState与mapGetters/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //引入vueResource
6 | import vueResource from 'vue-resource'
7 | //引入store
8 | import store from './store'
9 | //关闭vue的生产提示
10 | Vue.config.productionTip = false
11 | //使用插件
12 | Vue.use(vueResource)
13 |
14 | //创建vm
15 | new Vue({
16 | el:'#app',
17 | render: h => h(App),
18 | store,
19 | beforeCreate(){
20 | Vue.prototype.$bus = this
21 | }
22 | })
--------------------------------------------------------------------------------
/26_src_求和案例_mapState与mapGetters/store/index.js:
--------------------------------------------------------------------------------
1 | //该文件用于创建Vuex中最为核心的store
2 |
3 | //引入Vue
4 | import Vue from 'vue'
5 | //引入vuex
6 | import Vuex from 'vuex'
7 | //使用插件
8 | Vue.use(Vuex)
9 | //准备actions——用于响应组件中的动作
10 | const actions = {
11 | // jia(context,value){
12 | // console.log('jia被调用了')
13 | // context.commit('JIA',value)
14 | // },
15 | // jian(context,value){
16 | // console.log('jian被调用了')
17 | // context.commit('JIAN',value)
18 | // },
19 | jiaOdd(context,value){
20 | console.log('jiaOdd被调用了')
21 | if(context.state.sum % 2){
22 | context.commit('JIA',value)
23 | }
24 | },
25 | jiaWait(context,value){
26 | console.log("jiaWait被调用了")
27 | setTimeout(()=>{
28 | context.commit('JIA',value)
29 | },500)
30 | }
31 | }
32 | //准备mutations——用于操作数据(state)
33 | const mutations = {
34 | JIA(state,value){
35 | console.log('JIA被调用了')
36 | state.sum += value
37 | },
38 | JIAN(store,value){
39 | console.log('JIAN被调用了')
40 | store.sum -= value
41 | }
42 | }
43 | //准备state——用于存储数据
44 | const state = {
45 | sum:0, //和
46 | school: '尚硅谷',
47 | subject: '前端'
48 | }
49 | //准备getters——用于将state中的数据进行加工
50 | const getters = {
51 | bigSum(state){
52 | return state.sum * 10
53 | }
54 | }
55 |
56 | //创建并暴露store
57 | export default new Vuex.Store({
58 | actions,
59 | mutations,
60 | state,
61 | getters
62 | })
--------------------------------------------------------------------------------
/27_src_求和案例_mapMutations与mapActions/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/27_src_求和案例_mapMutations与mapActions/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //引入vueResource
6 | import vueResource from 'vue-resource'
7 | //引入store
8 | import store from './store'
9 | //关闭vue的生产提示
10 | Vue.config.productionTip = false
11 | //使用插件
12 | Vue.use(vueResource)
13 |
14 | //创建vm
15 | new Vue({
16 | el:'#app',
17 | render: h => h(App),
18 | store,
19 | beforeCreate(){
20 | Vue.prototype.$bus = this
21 | }
22 | })
--------------------------------------------------------------------------------
/27_src_求和案例_mapMutations与mapActions/store/index.js:
--------------------------------------------------------------------------------
1 | //该文件用于创建Vuex中最为核心的store
2 |
3 | //引入Vue
4 | import Vue from 'vue'
5 | //引入vuex
6 | import Vuex from 'vuex'
7 | //使用插件
8 | Vue.use(Vuex)
9 | //准备actions——用于响应组件中的动作
10 | const actions = {
11 | // jia(context,value){
12 | // console.log('jia被调用了')
13 | // context.commit('JIA',value)
14 | // },
15 | // jian(context,value){
16 | // console.log('jian被调用了')
17 | // context.commit('JIAN',value)
18 | // },
19 | jiaOdd(context,value){
20 | console.log('jiaOdd被调用了')
21 | if(context.state.sum % 2){
22 | context.commit('JIA',value)
23 | }
24 | },
25 | jiaWait(context,value){
26 | console.log("jiaWait被调用了")
27 | setTimeout(()=>{
28 | context.commit('JIA',value)
29 | },500)
30 | }
31 | }
32 | //准备mutations——用于操作数据(state)
33 | const mutations = {
34 | JIA(state,value){
35 | console.log('JIA被调用了')
36 | state.sum += value
37 | },
38 | JIAN(store,value){
39 | console.log('JIAN被调用了')
40 | store.sum -= value
41 | }
42 | }
43 | //准备state——用于存储数据
44 | const state = {
45 | sum:0, //和
46 | school: '尚硅谷',
47 | subject: '前端'
48 | }
49 | //准备getters——用于将state中的数据进行加工
50 | const getters = {
51 | bigSum(state){
52 | return state.sum * 10
53 | }
54 | }
55 |
56 | //创建并暴露store
57 | export default new Vuex.Store({
58 | actions,
59 | mutations,
60 | state,
61 | getters
62 | })
--------------------------------------------------------------------------------
/28_src_求和案例_多组件共享数据/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/28_src_求和案例_多组件共享数据/components/Count.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
当前求和为:{{sum}}
4 | 当前求和放大10倍为:{{bigSum}}
5 | 我在{{school}},学习{{subject}}
6 | Person组件的总人数是:{{personList.length}}
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
44 |
45 |
--------------------------------------------------------------------------------
/28_src_求和案例_多组件共享数据/components/Person.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
人员列表
4 |
Count组件的求和为:{{sum}}
5 |
6 |
9 |
10 |
11 |
12 |
42 |
43 |
--------------------------------------------------------------------------------
/28_src_求和案例_多组件共享数据/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //引入vueResource
6 | import vueResource from 'vue-resource'
7 | //引入store
8 | import store from './store'
9 | //关闭vue的生产提示
10 | Vue.config.productionTip = false
11 | //使用插件
12 | Vue.use(vueResource)
13 |
14 | //创建vm
15 | new Vue({
16 | el:'#app',
17 | render: h => h(App),
18 | store,
19 | beforeCreate(){
20 | Vue.prototype.$bus = this
21 | }
22 | })
--------------------------------------------------------------------------------
/28_src_求和案例_多组件共享数据/store/index.js:
--------------------------------------------------------------------------------
1 | //该文件用于创建Vuex中最为核心的store
2 |
3 | //引入Vue
4 | import Vue from 'vue'
5 | //引入vuex
6 | import Vuex from 'vuex'
7 | //使用插件
8 | Vue.use(Vuex)
9 | //准备actions——用于响应组件中的动作
10 | const actions = {
11 | // jia(context,value){
12 | // console.log('jia被调用了')
13 | // context.commit('JIA',value)
14 | // },
15 | // jian(context,value){
16 | // console.log('jian被调用了')
17 | // context.commit('JIAN',value)
18 | // },
19 | jiaOdd(context,value){
20 | console.log('jiaOdd被调用了')
21 | if(context.state.sum % 2){
22 | context.commit('JIA',value)
23 | }
24 | },
25 | jiaWait(context,value){
26 | console.log("jiaWait被调用了")
27 | setTimeout(()=>{
28 | context.commit('JIA',value)
29 | },500)
30 | }
31 | }
32 | //准备mutations——用于操作数据(state)
33 | const mutations = {
34 | JIA(state,value){
35 | console.log('JIA被调用了')
36 | state.sum += value
37 | },
38 | JIAN(store,value){
39 | console.log('JIAN被调用了')
40 | store.sum -= value
41 | },
42 | ADD_PERSON(store,value){
43 | console.log('ADD_PERSON被调用了')
44 | store.personList.unshift(value)
45 | }
46 | }
47 | //准备state——用于存储数据
48 | const state = {
49 | sum:0, //和
50 | school: '尚硅谷',
51 | subject: '前端',
52 | personList: [
53 | {id:'001',name:'张三'}
54 | ]
55 | }
56 | //准备getters——用于将state中的数据进行加工
57 | const getters = {
58 | bigSum(state){
59 | return state.sum * 10
60 | }
61 | }
62 |
63 | //创建并暴露store
64 | export default new Vuex.Store({
65 | actions,
66 | mutations,
67 | state,
68 | getters
69 | })
--------------------------------------------------------------------------------
/29_src_求和案例_vuex模块化编码/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/29_src_求和案例_vuex模块化编码/components/Count.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
当前求和为:{{sum}}
4 | 当前求和放大10倍为:{{bigSum}}
5 | 我在{{school}},学习{{subject}}
6 | Person组件的总人数是:{{personList.length}}
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
45 |
46 |
--------------------------------------------------------------------------------
/29_src_求和案例_vuex模块化编码/components/Person.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
人员列表
4 |
Count组件的求和为:{{sum}}
5 |
列表中第一个人的名字是:{{firstPersonName}}
6 |
7 |
8 |
9 |
10 |
11 | - {{person.name}}
12 |
13 |
14 |
15 |
16 |
56 |
57 |
--------------------------------------------------------------------------------
/29_src_求和案例_vuex模块化编码/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //引入vueResource
6 | import vueResource from 'vue-resource'
7 | //引入store
8 | import store from './store'
9 | //关闭vue的生产提示
10 | Vue.config.productionTip = false
11 | //使用插件
12 | Vue.use(vueResource)
13 |
14 | //创建vm
15 | new Vue({
16 | el:'#app',
17 | render: h => h(App),
18 | store,
19 | beforeCreate(){
20 | Vue.prototype.$bus = this
21 | }
22 | })
--------------------------------------------------------------------------------
/29_src_求和案例_vuex模块化编码/store/count.js:
--------------------------------------------------------------------------------
1 | //求和相关的配置
2 | export default {
3 | namespaced:true,
4 | actions: {
5 | jiaOdd(context,value){
6 | console.log('jiaOdd被调用了')
7 | if(context.state.sum % 2){
8 | context.commit('JIA',value)
9 | }
10 | },
11 | jiaWait(context,value){
12 | console.log("jiaWait被调用了")
13 | setTimeout(()=>{
14 | context.commit('JIA',value)
15 | },500)
16 | }
17 | },
18 | mutations:{
19 | JIA(state,value){
20 | console.log('JIA被调用了')
21 | state.sum += value
22 | },
23 | JIAN(store,value){
24 | console.log('JIAN被调用了')
25 | store.sum -= value
26 | }
27 | },
28 | state:{
29 | sum:0, //和
30 | school: '尚硅谷',
31 | subject: '前端'
32 | },
33 | getters:{
34 | bigSum(state){
35 | return state.sum * 10
36 | }
37 | }
38 | }
--------------------------------------------------------------------------------
/29_src_求和案例_vuex模块化编码/store/index.js:
--------------------------------------------------------------------------------
1 | //该文件用于创建Vuex中最为核心的store
2 |
3 | //引入Vue
4 | import Vue from 'vue'
5 | //引入vuex
6 | import Vuex from 'vuex'
7 |
8 | import person from './person'
9 | import count from './count'
10 | //使用插件
11 | Vue.use(Vuex)
12 |
13 | //创建并暴露store
14 | export default new Vuex.Store({
15 | modules:{
16 | countAbout:count,
17 | personAbout:person
18 | }
19 | })
--------------------------------------------------------------------------------
/29_src_求和案例_vuex模块化编码/store/person.js:
--------------------------------------------------------------------------------
1 | import axios from "axios"
2 | import { nanoid } from "nanoid"
3 |
4 | //人员相关的配置
5 | export default {
6 | namespaced:true,
7 | actions:{
8 | addWang(context,value){
9 | if(value.name.indexOf('王') === 0){
10 | context.commit('ADD_PERSON',value)
11 | } else {
12 | alert('添加的人必须姓王')
13 | }
14 | },
15 | addPersonServer(context){
16 | axios.get('https://api.uixsj.cn/hitokoto/get?type=social').then(
17 | response => {
18 | context.commit('ADD_PERSON',{id:nanoid(),name:response.data})
19 | },
20 | error => {
21 | alert(error.message)
22 | }
23 | )
24 | }
25 | },
26 | mutations:{
27 | ADD_PERSON(store,value){
28 | console.log('ADD_PERSON被调用了')
29 | store.personList.unshift(value)
30 | }
31 | },
32 | state:{
33 | personList: [
34 | {id:'001',name:'张三'}
35 | ]
36 | },
37 | getters:{
38 | firstPersonName(state){
39 | return state.personList[0].name
40 | }
41 | }
42 | }
--------------------------------------------------------------------------------
/30_src_路由的基本使用/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | About
17 | Home
18 |
19 |
20 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/30_src_路由的基本使用/about.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Vue App
6 |
7 |
8 |
9 |
10 |
15 |
16 |
22 |
23 |
24 |
25 |
我是About的内容
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/30_src_路由的基本使用/components/About.vue:
--------------------------------------------------------------------------------
1 |
2 | 我是About的内容
3 |
4 |
5 |
10 |
11 |
--------------------------------------------------------------------------------
/30_src_路由的基本使用/components/Home.vue:
--------------------------------------------------------------------------------
1 |
2 | 我是Home的内容
3 |
4 |
5 |
10 |
11 |
--------------------------------------------------------------------------------
/30_src_路由的基本使用/home.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Vue App
6 |
7 |
8 |
9 |
10 |
15 |
16 |
22 |
23 |
24 |
25 |
我是Home的内容
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/30_src_路由的基本使用/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //引入vue-router
6 | import VueRouter from 'vue-router'
7 | //引入路由器
8 | import router from './router'
9 |
10 | //关闭vue的生产提示
11 | Vue.config.productionTip = false
12 |
13 | //使用路由器
14 | Vue.use(VueRouter)
15 |
16 | //创建vm
17 | new Vue({
18 | el:'#app',
19 | render: h => h(App),
20 | router
21 | // mounted(){
22 | // setTimeout(()=>{
23 | // this.$destroy()
24 | // },3000)
25 | // }
26 | })
--------------------------------------------------------------------------------
/30_src_路由的基本使用/router/index.js:
--------------------------------------------------------------------------------
1 | // 该文件专门用于创建整个应用的路由器
2 | import VueRouter from 'vue-router'
3 |
4 | //引入组件
5 | import About from '../components/About'
6 | import Home from '../components/Home'
7 |
8 | //创建并暴露一个路由器
9 | export default new VueRouter({
10 | routes: [
11 | {
12 | path: '/about',
13 | component: About
14 | },
15 | {
16 | path: '/home',
17 | component: Home
18 | }
19 | ]
20 | })
--------------------------------------------------------------------------------
/31_src_多级路由/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | About
15 | Home
16 |
17 |
18 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/31_src_多级路由/about.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Vue App
6 |
7 |
8 |
9 |
10 |
15 |
16 |
22 |
23 |
24 |
25 |
我是About的内容
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/31_src_多级路由/components/Banner.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/31_src_多级路由/home-news.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Vue App
6 |
7 |
8 |
9 |
10 |
15 |
16 |
22 |
23 |
24 |
25 |
26 |
Home组件内容
27 |
28 |
36 |
37 | - news001
38 | - news002
39 | - news003
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/31_src_多级路由/home.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Vue App
6 |
7 |
8 |
9 |
10 |
15 |
16 |
22 |
23 |
24 |
25 |
26 |
Home组件内容
27 |
28 |
36 |
37 | - news001
38 | - news002
39 | - news003
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/31_src_多级路由/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //引入vue-router
6 | import VueRouter from 'vue-router'
7 | //引入路由器
8 | import router from './router'
9 |
10 | //关闭vue的生产提示
11 | Vue.config.productionTip = false
12 |
13 | //使用路由器
14 | Vue.use(VueRouter)
15 |
16 | //创建vm
17 | new Vue({
18 | el:'#app',
19 | render: h => h(App),
20 | router
21 | // mounted(){
22 | // setTimeout(()=>{
23 | // this.$destroy()
24 | // },3000)
25 | // }
26 | })
--------------------------------------------------------------------------------
/31_src_多级路由/pages/About.vue:
--------------------------------------------------------------------------------
1 |
2 | 我是About的内容
3 |
4 |
5 |
--------------------------------------------------------------------------------
/31_src_多级路由/pages/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Home组件内容
4 |
5 |
6 | -
7 | News
8 |
9 | -
10 | Message
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/31_src_多级路由/pages/Message.vue:
--------------------------------------------------------------------------------
1 |
2 |
13 |
14 |
15 |
21 |
22 |
--------------------------------------------------------------------------------
/31_src_多级路由/pages/News.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - news001
5 | - news002
6 | - news003
7 |
8 |
9 |
10 |
11 |
16 |
17 |
--------------------------------------------------------------------------------
/31_src_多级路由/router/index.js:
--------------------------------------------------------------------------------
1 | // 该文件专门用于创建整个应用的路由器
2 | import VueRouter from 'vue-router'
3 |
4 | //引入组件
5 | import About from '../pages/About'
6 | import Home from '../pages/Home'
7 | import News from '../pages/News'
8 | import Message from '../pages/Message'
9 |
10 | //创建并暴露一个路由器
11 | export default new VueRouter({
12 | routes: [
13 | {
14 | path: '/about',
15 | component: About
16 | },
17 | {
18 | path: '/home',
19 | component: Home,
20 | children:[
21 | {
22 | path: 'news',
23 | component: News
24 | },
25 | {
26 | path: 'message',
27 | component: Message
28 | }
29 | ]
30 | }
31 | ]
32 | })
--------------------------------------------------------------------------------
/32_src_路由的query参数/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | About
15 | Home
16 |
17 |
18 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/32_src_路由的query参数/components/Banner.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/32_src_路由的query参数/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //引入vue-router
6 | import VueRouter from 'vue-router'
7 | //引入路由器
8 | import router from './router'
9 |
10 | //关闭vue的生产提示
11 | Vue.config.productionTip = false
12 |
13 | //使用路由器
14 | Vue.use(VueRouter)
15 |
16 | //创建vm
17 | new Vue({
18 | el:'#app',
19 | render: h => h(App),
20 | router
21 | // mounted(){
22 | // setTimeout(()=>{
23 | // this.$destroy()
24 | // },3000)
25 | // }
26 | })
--------------------------------------------------------------------------------
/32_src_路由的query参数/pages/About.vue:
--------------------------------------------------------------------------------
1 |
2 | 我是About的内容
3 |
4 |
5 |
--------------------------------------------------------------------------------
/32_src_路由的query参数/pages/Detail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | - 消息编号:{{$route.query.id}}
4 | - 消息标题:{{$route.query.title}}
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/32_src_路由的query参数/pages/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Home组件内容
4 |
5 |
6 | -
7 | News
8 |
9 | -
10 | Message
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/32_src_路由的query参数/pages/Message.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
15 | {{m.title}}
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
39 |
40 |
--------------------------------------------------------------------------------
/32_src_路由的query参数/pages/News.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - news001
5 | - news002
6 | - news003
7 |
8 |
9 |
10 |
11 |
16 |
17 |
--------------------------------------------------------------------------------
/32_src_路由的query参数/router/index.js:
--------------------------------------------------------------------------------
1 | // 该文件专门用于创建整个应用的路由器
2 | import VueRouter from 'vue-router'
3 |
4 | //引入组件
5 | import About from '../pages/About'
6 | import Home from '../pages/Home'
7 | import News from '../pages/News'
8 | import Message from '../pages/Message'
9 | import Detail from '../pages/Detail'
10 |
11 | //创建并暴露一个路由器
12 | export default new VueRouter({
13 | routes: [
14 | {
15 | path: '/about',
16 | component: About
17 | },
18 | {
19 | path: '/home',
20 | component: Home,
21 | children:[
22 | {
23 | path: 'news',
24 | component: News
25 | },
26 | {
27 | path: 'message',
28 | component: Message,
29 | children:[
30 | {
31 | path:'detail',
32 | component:Detail
33 | }
34 | ]
35 | }
36 | ]
37 | }
38 | ]
39 | })
--------------------------------------------------------------------------------
/33_src_命名路由/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | About
15 | Home
16 |
17 |
18 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/33_src_命名路由/about.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Vue App
6 |
7 |
8 |
9 |
10 |
15 |
16 |
22 |
23 |
24 |
25 |
我是About的内容
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/33_src_命名路由/components/Banner.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/33_src_命名路由/home-news.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Vue App
6 |
7 |
8 |
9 |
10 |
15 |
16 |
22 |
23 |
24 |
25 |
26 |
Home组件内容
27 |
28 |
36 |
37 | - news001
38 | - news002
39 | - news003
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/33_src_命名路由/home.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Vue App
6 |
7 |
8 |
9 |
10 |
15 |
16 |
22 |
23 |
24 |
25 |
26 |
Home组件内容
27 |
28 |
36 |
37 | - news001
38 | - news002
39 | - news003
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/33_src_命名路由/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //引入vue-router
6 | import VueRouter from 'vue-router'
7 | //引入路由器
8 | import router from './router'
9 |
10 | //关闭vue的生产提示
11 | Vue.config.productionTip = false
12 |
13 | //使用路由器
14 | Vue.use(VueRouter)
15 |
16 | //创建vm
17 | new Vue({
18 | el:'#app',
19 | render: h => h(App),
20 | router
21 | // mounted(){
22 | // setTimeout(()=>{
23 | // this.$destroy()
24 | // },3000)
25 | // }
26 | })
--------------------------------------------------------------------------------
/33_src_命名路由/pages/About.vue:
--------------------------------------------------------------------------------
1 |
2 | 我是About的内容
3 |
4 |
5 |
--------------------------------------------------------------------------------
/33_src_命名路由/pages/Detail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | - 消息编号:{{$route.query.id}}
4 | - 消息标题:{{$route.query.title}}
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/33_src_命名路由/pages/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Home组件内容
4 |
5 |
6 | -
7 | News
8 |
9 | -
10 | Message
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/33_src_命名路由/pages/Message.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
15 |
22 | {{m.title}}
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
46 |
47 |
--------------------------------------------------------------------------------
/33_src_命名路由/pages/News.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - news001
5 | - news002
6 | - news003
7 |
8 |
9 |
10 |
11 |
16 |
17 |
--------------------------------------------------------------------------------
/33_src_命名路由/router/index.js:
--------------------------------------------------------------------------------
1 | // 该文件专门用于创建整个应用的路由器
2 | import VueRouter from 'vue-router'
3 |
4 | //引入组件
5 | import About from '../pages/About'
6 | import Home from '../pages/Home'
7 | import News from '../pages/News'
8 | import Message from '../pages/Message'
9 | import Detail from '../pages/Detail'
10 |
11 | //创建并暴露一个路由器
12 | export default new VueRouter({
13 | routes: [
14 | {
15 | name:'aboutName',
16 | path: '/about',
17 | component: About
18 | },
19 | {
20 | path: '/home',
21 | component: Home,
22 | children:[
23 | {
24 | path: 'news',
25 | component: News
26 | },
27 | {
28 | path: 'message',
29 | component: Message,
30 | children:[
31 | {
32 | name:'detailName',
33 | path:'detail',
34 | component:Detail
35 | }
36 | ]
37 | }
38 | ]
39 | }
40 | ]
41 | })
--------------------------------------------------------------------------------
/34_src_路由的params参数/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | About
15 | Home
16 |
17 |
18 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/34_src_路由的params参数/about.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Vue App
6 |
7 |
8 |
9 |
10 |
15 |
16 |
22 |
23 |
24 |
25 |
我是About的内容
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/34_src_路由的params参数/components/Banner.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/34_src_路由的params参数/home-news.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Vue App
6 |
7 |
8 |
9 |
10 |
15 |
16 |
22 |
23 |
24 |
25 |
26 |
Home组件内容
27 |
28 |
36 |
37 | - news001
38 | - news002
39 | - news003
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/34_src_路由的params参数/home.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Vue App
6 |
7 |
8 |
9 |
10 |
15 |
16 |
22 |
23 |
24 |
25 |
26 |
Home组件内容
27 |
28 |
36 |
37 | - news001
38 | - news002
39 | - news003
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/34_src_路由的params参数/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //引入vue-router
6 | import VueRouter from 'vue-router'
7 | //引入路由器
8 | import router from './router'
9 |
10 | //关闭vue的生产提示
11 | Vue.config.productionTip = false
12 |
13 | //使用路由器
14 | Vue.use(VueRouter)
15 |
16 | //创建vm
17 | new Vue({
18 | el:'#app',
19 | render: h => h(App),
20 | router
21 | // mounted(){
22 | // setTimeout(()=>{
23 | // this.$destroy()
24 | // },3000)
25 | // }
26 | })
--------------------------------------------------------------------------------
/34_src_路由的params参数/pages/About.vue:
--------------------------------------------------------------------------------
1 |
2 | 我是About的内容
3 |
4 |
5 |
--------------------------------------------------------------------------------
/34_src_路由的params参数/pages/Detail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | - 消息编号:{{$route.params.id}}
4 | - 消息标题:{{$route.params.title}}
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/34_src_路由的params参数/pages/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Home组件内容
4 |
5 |
6 | -
7 | News
8 |
9 | -
10 | Message
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/34_src_路由的params参数/pages/Message.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
16 |
23 | {{m.title}}
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
50 |
51 |
--------------------------------------------------------------------------------
/34_src_路由的params参数/pages/News.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - news001
5 | - news002
6 | - news003
7 |
8 |
9 |
10 |
11 |
16 |
17 |
--------------------------------------------------------------------------------
/34_src_路由的params参数/router/index.js:
--------------------------------------------------------------------------------
1 | // 该文件专门用于创建整个应用的路由器
2 | import VueRouter from 'vue-router'
3 |
4 | //引入组件
5 | import About from '../pages/About'
6 | import Home from '../pages/Home'
7 | import News from '../pages/News'
8 | import Message from '../pages/Message'
9 | import Detail from '../pages/Detail'
10 |
11 | //创建并暴露一个路由器
12 | export default new VueRouter({
13 | routes: [
14 | {
15 | name:'aboutName',
16 | path: '/about',
17 | component: About
18 | },
19 | {
20 | path: '/home',
21 | component: Home,
22 | children:[
23 | {
24 | path: 'news',
25 | component: News
26 | },
27 | {
28 | path: 'message',
29 | component: Message,
30 | children:[
31 | {
32 | name:'detailName',
33 | path:'detail/:id/:title',
34 | component:Detail
35 | }
36 | ]
37 | }
38 | ]
39 | }
40 | ]
41 | })
--------------------------------------------------------------------------------
/35_src_路由的props配置/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | About
15 | Home
16 |
17 |
18 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/35_src_路由的props配置/components/Banner.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/35_src_路由的props配置/pages/About.vue:
--------------------------------------------------------------------------------
1 |
2 | 我是About的内容
3 |
4 |
5 |
--------------------------------------------------------------------------------
/35_src_路由的props配置/pages/Detail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | - 消息编号:{{id}}
4 | - 消息标题:{{title}}
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/35_src_路由的props配置/pages/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Home组件内容
4 |
5 |
6 | -
7 | News
8 |
9 | -
10 | Message
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/35_src_路由的props配置/pages/Message.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
16 |
23 | {{m.title}}
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/35_src_路由的props配置/pages/News.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - news001
5 | - news002
6 | - news003
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/36_src_router-link的replace属性/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | About
15 | Home
16 |
17 |
18 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/36_src_router-link的replace属性/components/Banner.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/36_src_router-link的replace属性/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //引入vue-router
6 | import VueRouter from 'vue-router'
7 | //引入路由器
8 | import router from './router'
9 |
10 | //关闭vue的生产提示
11 | Vue.config.productionTip = false
12 |
13 | //使用路由器
14 | Vue.use(VueRouter)
15 |
16 | //创建vm
17 | new Vue({
18 | el:'#app',
19 | render: h => h(App),
20 | router
21 | // mounted(){
22 | // setTimeout(()=>{
23 | // this.$destroy()
24 | // },3000)
25 | // }
26 | })
--------------------------------------------------------------------------------
/36_src_router-link的replace属性/pages/About.vue:
--------------------------------------------------------------------------------
1 |
2 | 我是About的内容
3 |
4 |
5 |
--------------------------------------------------------------------------------
/36_src_router-link的replace属性/pages/Detail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | - 消息编号:{{id}}
4 | - 消息标题:{{title}}
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/36_src_router-link的replace属性/pages/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Home组件内容
4 |
5 |
6 | -
7 | News
8 |
9 | -
10 | Message
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/36_src_router-link的replace属性/pages/Message.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
16 |
23 | {{m.title}}
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/36_src_router-link的replace属性/pages/News.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - news001
5 | - news002
6 | - news003
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/37_src_编程式路由导航/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | About
15 | Home
16 |
17 |
18 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/37_src_编程式路由导航/components/Banner.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/37_src_编程式路由导航/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //引入vue-router
6 | import VueRouter from 'vue-router'
7 | //引入路由器
8 | import router from './router'
9 |
10 | //关闭vue的生产提示
11 | Vue.config.productionTip = false
12 |
13 | //使用路由器
14 | Vue.use(VueRouter)
15 |
16 | //创建vm
17 | new Vue({
18 | el:'#app',
19 | render: h => h(App),
20 | router
21 | // mounted(){
22 | // setTimeout(()=>{
23 | // this.$destroy()
24 | // },3000)
25 | // }
26 | })
--------------------------------------------------------------------------------
/37_src_编程式路由导航/pages/About.vue:
--------------------------------------------------------------------------------
1 |
2 | 我是About的内容
3 |
4 |
5 |
--------------------------------------------------------------------------------
/37_src_编程式路由导航/pages/Detail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | - 消息编号:{{id}}
4 | - 消息标题:{{title}}
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/37_src_编程式路由导航/pages/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Home组件内容
4 |
5 |
6 | -
7 | News
8 |
9 | -
10 | Message
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/37_src_编程式路由导航/pages/News.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - news001
5 | - news002
6 | - news003
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/38_src_缓存路由组件/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | About
15 | Home
16 |
17 |
18 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/38_src_缓存路由组件/components/Banner.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/38_src_缓存路由组件/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //引入vue-router
6 | import VueRouter from 'vue-router'
7 | //引入路由器
8 | import router from './router'
9 |
10 | //关闭vue的生产提示
11 | Vue.config.productionTip = false
12 |
13 | //使用路由器
14 | Vue.use(VueRouter)
15 |
16 | //创建vm
17 | new Vue({
18 | el:'#app',
19 | render: h => h(App),
20 | router
21 | // mounted(){
22 | // setTimeout(()=>{
23 | // this.$destroy()
24 | // },3000)
25 | // }
26 | })
--------------------------------------------------------------------------------
/38_src_缓存路由组件/pages/About.vue:
--------------------------------------------------------------------------------
1 |
2 | 我是About的内容
3 |
4 |
5 |
--------------------------------------------------------------------------------
/38_src_缓存路由组件/pages/Detail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | - 消息编号:{{id}}
4 | - 消息标题:{{title}}
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/38_src_缓存路由组件/pages/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Home组件内容
4 |
5 |
6 | -
7 | News
8 |
9 | -
10 | Message
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/38_src_缓存路由组件/pages/News.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/39_src_两个新的生命周期钩子/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | About
15 | Home
16 |
17 |
18 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/39_src_两个新的生命周期钩子/components/Banner.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/39_src_两个新的生命周期钩子/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //引入vue-router
6 | import VueRouter from 'vue-router'
7 | //引入路由器
8 | import router from './router'
9 |
10 | //关闭vue的生产提示
11 | Vue.config.productionTip = false
12 |
13 | //使用路由器
14 | Vue.use(VueRouter)
15 |
16 | //创建vm
17 | new Vue({
18 | el:'#app',
19 | render: h => h(App),
20 | router
21 | // mounted(){
22 | // setTimeout(()=>{
23 | // this.$destroy()
24 | // },3000)
25 | // }
26 | })
--------------------------------------------------------------------------------
/39_src_两个新的生命周期钩子/pages/About.vue:
--------------------------------------------------------------------------------
1 |
2 | 我是About的内容
3 |
4 |
5 |
--------------------------------------------------------------------------------
/39_src_两个新的生命周期钩子/pages/Detail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | - 消息编号:{{id}}
4 | - 消息标题:{{title}}
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/39_src_两个新的生命周期钩子/pages/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Home组件内容
4 |
5 |
6 | -
7 | News
8 |
9 | -
10 | Message
11 |
12 |
13 |
14 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/39_src_两个新的生命周期钩子/pages/News.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/40_src_全局路由守卫/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | About
15 | Home
16 |
17 |
18 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/40_src_全局路由守卫/components/Banner.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/40_src_全局路由守卫/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //引入vue-router
6 | import VueRouter from 'vue-router'
7 | //引入路由器
8 | import router from './router'
9 |
10 | //关闭vue的生产提示
11 | Vue.config.productionTip = false
12 |
13 | //使用路由器
14 | Vue.use(VueRouter)
15 |
16 | //创建vm
17 | new Vue({
18 | el:'#app',
19 | render: h => h(App),
20 | router
21 | // mounted(){
22 | // setTimeout(()=>{
23 | // this.$destroy()
24 | // },3000)
25 | // }
26 | })
--------------------------------------------------------------------------------
/40_src_全局路由守卫/pages/About.vue:
--------------------------------------------------------------------------------
1 |
2 | 我是About的内容
3 |
4 |
5 |
--------------------------------------------------------------------------------
/40_src_全局路由守卫/pages/Detail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | - 消息编号:{{id}}
4 | - 消息标题:{{title}}
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/40_src_全局路由守卫/pages/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Home组件内容
4 |
5 |
6 | -
7 | News
8 |
9 | -
10 | Message
11 |
12 |
13 |
14 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/40_src_全局路由守卫/pages/News.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/41_src_独享路由守卫/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | About
15 | Home
16 |
17 |
18 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/41_src_独享路由守卫/components/Banner.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/41_src_独享路由守卫/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //引入vue-router
6 | import VueRouter from 'vue-router'
7 | //引入路由器
8 | import router from './router'
9 |
10 | //关闭vue的生产提示
11 | Vue.config.productionTip = false
12 |
13 | //使用路由器
14 | Vue.use(VueRouter)
15 |
16 | //创建vm
17 | new Vue({
18 | el:'#app',
19 | render: h => h(App),
20 | router
21 | // mounted(){
22 | // setTimeout(()=>{
23 | // this.$destroy()
24 | // },3000)
25 | // }
26 | })
--------------------------------------------------------------------------------
/41_src_独享路由守卫/pages/About.vue:
--------------------------------------------------------------------------------
1 |
2 | 我是About的内容
3 |
4 |
5 |
--------------------------------------------------------------------------------
/41_src_独享路由守卫/pages/Detail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | - 消息编号:{{id}}
4 | - 消息标题:{{title}}
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/41_src_独享路由守卫/pages/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Home组件内容
4 |
5 |
6 | -
7 | News
8 |
9 | -
10 | Message
11 |
12 |
13 |
14 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/41_src_独享路由守卫/pages/News.vue:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/42_src_组件内路由守卫/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | About
15 | Home
16 |
17 |
18 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/42_src_组件内路由守卫/components/Banner.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/42_src_组件内路由守卫/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //引入vue-router
6 | import VueRouter from 'vue-router'
7 | //引入路由器
8 | import router from './router'
9 |
10 | //关闭vue的生产提示
11 | Vue.config.productionTip = false
12 |
13 | //使用路由器
14 | Vue.use(VueRouter)
15 |
16 | //创建vm
17 | new Vue({
18 | el:'#app',
19 | render: h => h(App),
20 | router
21 | // mounted(){
22 | // setTimeout(()=>{
23 | // this.$destroy()
24 | // },3000)
25 | // }
26 | })
--------------------------------------------------------------------------------
/42_src_组件内路由守卫/pages/About.vue:
--------------------------------------------------------------------------------
1 |
2 | 我是About的内容
3 |
4 |
5 |
--------------------------------------------------------------------------------
/42_src_组件内路由守卫/pages/Detail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | - 消息编号:{{id}}
4 | - 消息标题:{{title}}
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/42_src_组件内路由守卫/pages/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Home组件内容
4 |
5 |
6 | -
7 | News
8 |
9 | -
10 | Message
11 |
12 |
13 |
14 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/42_src_组件内路由守卫/pages/News.vue:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/43_src_history模式与hash模式/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | About
15 | Home
16 |
17 |
18 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/43_src_history模式与hash模式/components/Banner.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/43_src_history模式与hash模式/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //引入vue-router
6 | import VueRouter from 'vue-router'
7 | //引入路由器
8 | import router from './router'
9 |
10 | //关闭vue的生产提示
11 | Vue.config.productionTip = false
12 |
13 | //使用路由器
14 | Vue.use(VueRouter)
15 |
16 | //创建vm
17 | new Vue({
18 | el:'#app',
19 | render: h => h(App),
20 | router
21 | // mounted(){
22 | // setTimeout(()=>{
23 | // this.$destroy()
24 | // },3000)
25 | // }
26 | })
--------------------------------------------------------------------------------
/43_src_history模式与hash模式/pages/About.vue:
--------------------------------------------------------------------------------
1 |
2 | 我是About的内容
3 |
4 |
5 |
--------------------------------------------------------------------------------
/43_src_history模式与hash模式/pages/Detail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | - 消息编号:{{id}}
4 | - 消息标题:{{title}}
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/43_src_history模式与hash模式/pages/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Home组件内容
4 |
5 |
6 | -
7 | News
8 |
9 | -
10 | Message
11 |
12 |
13 |
14 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/43_src_history模式与hash模式/pages/News.vue:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/44_src_element-ui/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 |
4 | //引入app
5 | import App from './App'
6 |
7 | //完整引入
8 | //引入ElementUI组件库
9 | // import ElementUI from 'element-ui';
10 | //引人ElementUI全部样式
11 | // import 'element-ui/lib/theme-chalk/index.css';
12 |
13 | //按需引入
14 | import { Row,Button,DatePicker } from 'element-ui'
15 |
16 | Vue.component('atguigu-row', Row )
17 | Vue.component(Button.name, Button )
18 | Vue.component(DatePicker.name, DatePicker )
19 |
20 | //关闭vue的生产提示
21 | Vue.config.productionTip = false
22 |
23 | //应用ElementUI
24 | // Vue.use(ElementUI);
25 |
26 | //创建vm
27 | new Vue({
28 | el:'#app',
29 | render: h => h(App),
30 | })
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset',
4 | ["@babel/preset-env", { "modules": false }]
5 | ],
6 | plugins: [
7 | [
8 | "component",
9 | {
10 | "libraryName": "element-ui",
11 | "styleLibraryName": "theme-chalk"
12 | }
13 | ]
14 | ]
15 | }
16 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vue_test",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "vue-cli-service serve",
7 | "build": "vue-cli-service build",
8 | "lint": "vue-cli-service lint"
9 | },
10 | "dependencies": {
11 | "animate.css": "^4.1.1",
12 | "axios": "^0.24.0",
13 | "connect-history-api-fallback": "^1.6.0",
14 | "core-js": "^3.6.5",
15 | "element-ui": "^2.15.6",
16 | "nanoid": "^3.1.30",
17 | "pubsub-js": "^1.9.4",
18 | "vue": "^2.6.11",
19 | "vue-resource": "^1.5.3",
20 | "vue-router": "^3.5.3",
21 | "vuex": "^3.6.2"
22 | },
23 | "devDependencies": {
24 | "@vue/cli-plugin-babel": "~4.5.0",
25 | "@vue/cli-plugin-eslint": "~4.5.0",
26 | "@vue/cli-service": "~4.5.0",
27 | "babel-eslint": "^10.1.0",
28 | "babel-plugin-component": "^1.1.1",
29 | "eslint": "^6.7.2",
30 | "eslint-plugin-vue": "^6.2.2",
31 | "vue-template-compiler": "^2.6.11"
32 | },
33 | "eslintConfig": {
34 | "root": true,
35 | "env": {
36 | "node": true
37 | },
38 | "extends": [
39 | "plugin:vue/essential",
40 | "eslint:recommended"
41 | ],
42 | "parserOptions": {
43 | "parser": "babel-eslint"
44 | },
45 | "rules": {}
46 | },
47 | "browserslist": [
48 | "> 1%",
49 | "last 2 versions",
50 | "not dead"
51 | ]
52 | }
53 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xingwei07/vue_test/85867ccb36c0a8297e13a331655bd407d8f541fa/public/favicon.ico
--------------------------------------------------------------------------------
/public/image/vuex.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xingwei07/vue_test/85867ccb36c0a8297e13a331655bd407d8f541fa/public/image/vuex.png
--------------------------------------------------------------------------------
/public/image/全局事件总线.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xingwei07/vue_test/85867ccb36c0a8297e13a331655bd407d8f541fa/public/image/全局事件总线.png
--------------------------------------------------------------------------------
/public/image/消息订阅与发布.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xingwei07/vue_test/85867ccb36c0a8297e13a331655bd407d8f541fa/public/image/消息订阅与发布.png
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | 硅谷主页
16 |
17 |
18 |
19 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | About
15 | Home
16 |
17 |
18 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/src/components/Banner.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | //引入Vue
2 | import Vue from 'vue'
3 | //引入app
4 | import App from './App'
5 | //引入vue-router
6 | import VueRouter from 'vue-router'
7 | //引入路由器
8 | import router from './router'
9 |
10 | //关闭vue的生产提示
11 | Vue.config.productionTip = false
12 |
13 | //使用路由器
14 | Vue.use(VueRouter)
15 |
16 | //创建vm
17 | new Vue({
18 | el:'#app',
19 | render: h => h(App),
20 | router
21 | // mounted(){
22 | // setTimeout(()=>{
23 | // this.$destroy()
24 | // },3000)
25 | // }
26 | })
--------------------------------------------------------------------------------
/src/pages/About.vue:
--------------------------------------------------------------------------------
1 |
2 | 我是About的内容
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/pages/Detail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | - 消息编号:{{id}}
4 | - 消息标题:{{title}}
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/pages/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Home组件内容
4 |
5 |
6 | -
7 | News
8 |
9 | -
10 | Message
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/pages/Message.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
16 |
23 | {{m.title}}
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/src/pages/News.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - news001
5 | - news002
6 | - news003
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/vue.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | lintOnSave: false, //关闭语法检查
3 | //开启代理服务器(方式一)
4 | // devServer: {
5 | // proxy: 'http://localhost:5000'
6 | // },
7 | //开启代理服务器(方式二)
8 | devServer: {
9 | proxy: {
10 | '/api': {
11 | target: 'http://localhost:5000',
12 | pathRewrite: {'/api':''}, //重写路径
13 | // ws: true, //用于支持websocket
14 | // changeOrigin: true //用于控制请求中的host值
15 | },
16 | '/foo': {
17 | target: 'http://localhost:5001',
18 | pathRewrite: {'/foo':''}, //重写路径
19 | // ws: true, //用于支持websocket
20 | // changeOrigin: true //用于控制请求中的host值
21 | }
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------