├── README.md
├── docs
├── babel
│ └── index.babel
├── css
│ └── style.css
├── index.html
├── js
│ ├── index.js
│ ├── named.vue
│ ├── sidebar.vue
│ ├── user-list.vue
│ └── user.vue
└── scss
│ └── style.scss
└── license.txt
/README.md:
--------------------------------------------------------------------------------
1 | # vue-without-webpack
--------------------------------------------------------------------------------
/docs/babel/index.babel:
--------------------------------------------------------------------------------
1 | const User = {
2 | props: {
3 | userId: {
4 | type: Number,
5 | required: true
6 | },
7 | userData: {
8 | type: Object,
9 | required: false // User can accept a userData object on params, or not. It's totally optional.
10 | }
11 | },
12 | template: `
13 |
14 |
User ({{userId}})
15 |
16 |
This route makes use of some option data that was passed in:
17 |
{{userData.name}}({{userData.age}} yrs old)
18 |
19 |
20 | `,
21 | methods: {
22 | }
23 | }
24 |
25 | const UserList = {
26 | data() {
27 | return {
28 | selectedUser: {} // selected user data. Place this here to make sure it's reactive.
29 | }
30 | },
31 | template: `
32 |
33 |
34 |
User List
35 |
Click a user below and we'll use the User component now as a child component to display the data:
36 |
37 | User 123
38 | User 456
39 |
40 |
41 |
42 |
43 |
45 |
46 |
47 |
48 | `,
49 | methods: {
50 | loadUserData(id) {
51 | // this could be some ajax call to get user data from an API, but we'll just set some dummy data:
52 | this.selectedUser = id === 123
53 | ? { userId: 123 }
54 | : { userId: 456, userData: {age: 37, name: 'Patrick'}}
55 | }
56 | },
57 | /*
58 | On the UserList component we use the User component as a child component
59 | and pass data down via props.
60 | */
61 | components: {
62 | User
63 | }
64 | }
65 |
66 | const Sidebar = {
67 | template: `This is the sidebar. No props here.
`
68 | }
69 |
70 | const NamedWrapper = {
71 | template: `
72 |
73 |
Users loaded into named views:
74 |
75 | User 123
76 | User 456
77 |
78 |
79 |
80 |
81 |
82 |
83 | `,
84 | }
85 |
86 |
87 |
88 |
89 | /* Router and App setup: */
90 | const routes = [
91 | {
92 | path: '/user',
93 | name: 'userList',
94 | component: UserList
95 | },
96 |
97 | // use /named as the parent route to wrap our two named views:
98 | {
99 | path: '/named',
100 | name: 'named',
101 | component: NamedWrapper,
102 | children: [
103 | {
104 | path: '/user/:userId',
105 | name: 'named_id',
106 | components: { user_details: User, sidebar: Sidebar },
107 | props: { user_details: true, sidebar: false }
108 | }
109 | ]
110 | },
111 | {
112 | path: '/user/:userId',
113 | name: 'user',
114 | component: User,
115 | props: true,
116 | }
117 | ]
118 |
119 | const router = new VueRouter({
120 | routes
121 | })
122 |
123 | const app = new Vue({
124 | router
125 | }).$mount('#app')
--------------------------------------------------------------------------------
/docs/css/style.css:
--------------------------------------------------------------------------------
1 | #app {
2 | max-width: 800px;
3 | margin: auto;
4 | }
5 |
6 | nav.mainNav > * {
7 | padding: 0 0.75rem;
8 | text-decoration: none;
9 | }
10 | nav.mainNav > *:nth-last-child(n+2) {
11 | border-right: 1px solid #aaa;
12 | }
13 |
14 | .mainBody {
15 | border-top: 1px solid #ddd;
16 | border-bottom: 1px solid #ddd;
17 | margin: 1rem 0;
18 | padding: 1rem 2rem;
19 | min-height: 55px;
20 | }
21 |
22 | .userList {
23 | display: -webkit-box;
24 | display: -ms-flexbox;
25 | display: flex;
26 | -webkit-box-align: start;
27 | -ms-flex-align: start;
28 | align-items: flex-start;
29 | }
30 | .userList > * {
31 | -webkit-box-flex: 1;
32 | -ms-flex: 1;
33 | flex: 1;
34 | max-width: 50%;
35 | padding: 0 1rem;
36 | }
37 |
38 | .userLink:hover {
39 | cursor: pointer;
40 | }
41 |
--------------------------------------------------------------------------------
/docs/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Vue Router Pass Params As Props
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
Passing Route Parameters to Component Props
20 |
21 |
Using the User component on a route change:
22 |
23 |
24 |
25 | User List
26 | User 123
27 | User 456
28 | Named Views Demo
29 |
30 |
31 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/docs/js/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | var User = httpVueLoader('./js/user.vue')
3 | var Sidebar = httpVueLoader('./js/sidebar.vue')
4 | var UserList = httpVueLoader('./js/user-list.vue')
5 | var NamedWrapper = httpVueLoader('./js/named.vue')
6 |
7 |
8 |
9 | /* Router and App setup: */
10 | var routes = [{
11 | path: '/users',
12 | name: 'userList',
13 | component: UserList
14 | },
15 | {
16 | path: '/named',
17 | name: 'named',
18 | component: NamedWrapper,
19 | children: [{
20 | path: 'user/:userId',
21 | name: 'named_id',
22 | components: { user_details: User, sidebar: Sidebar },
23 | props: { user_details: true, sidebar: false }
24 | }]
25 | },
26 | {
27 | path: '/user/:userId',
28 | name: 'user',
29 | component: User,
30 | props: true
31 | }];
32 |
33 | var router = new VueRouter({
34 | routes: routes
35 | });
36 |
37 | var app = new Vue({
38 | router: router
39 | }).$mount('#app');
40 |
--------------------------------------------------------------------------------
/docs/js/named.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Users loaded into named views:
4 |
5 |
6 | User 123
7 |
8 |
9 | User 456
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
25 |
26 |
31 |
32 |
--------------------------------------------------------------------------------
/docs/js/sidebar.vue:
--------------------------------------------------------------------------------
1 |
2 | Burası Sidebar.
3 |
4 |
5 |
10 |
11 |
16 |
17 |
--------------------------------------------------------------------------------
/docs/js/user-list.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
User List
5 |
Buraya Tıkla: {{selectedUser}}
6 |
7 | User 123
8 | User 456
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
36 |
37 |
42 |
43 |
--------------------------------------------------------------------------------
/docs/js/user.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
User klasör user.vue ({{userId}})
4 |
5 |
This route makes use of some option data that was passed in:
6 |
{{userData.name}}({{userData.age}} yrs old)
7 |
8 |
9 |
10 |
11 |
18 |
19 |
24 |
25 |
--------------------------------------------------------------------------------
/docs/scss/style.scss:
--------------------------------------------------------------------------------
1 | #app {
2 | max-width: 800px;
3 | margin: auto;
4 | }
5 |
6 | nav.mainNav {
7 | > * {
8 | padding: 0 0.75rem;
9 | text-decoration: none;
10 | }
11 |
12 | > *:nth-last-child(n+2) {
13 | border-right: 1px solid #aaa;
14 | }
15 | }
16 |
17 | .mainBody {
18 | border-top: 1px solid #ddd;
19 | border-bottom: 1px solid #ddd;
20 | margin: 1rem 0;
21 | padding: 1rem 2rem;
22 | min-height: 55px;
23 | }
24 |
25 | .userList {
26 | display: flex;
27 | align-items: flex-start;
28 |
29 | > * {
30 | flex: 1;
31 | max-width: 50%;
32 | padding: 0 1rem;
33 | }
34 | }
35 |
36 | .userLink {
37 | &:hover {
38 | cursor: pointer;
39 | }
40 | }
--------------------------------------------------------------------------------
/license.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
17 |
--------------------------------------------------------------------------------