androiddrew
99d4dd5001
The global components recipe comes straight from the vue documentation. The SVG Icons required us to place the .svg assest in the public dirctory. |
6 years ago | |
---|---|---|
public | 6 years ago | |
src | 6 years ago | |
.browserslistrc | 6 years ago | |
.eslintrc.js | 6 years ago | |
.gitignore | 6 years ago | |
.prettierrc.js | 6 years ago | |
README.md | 6 years ago | |
babel.config.js | 6 years ago | |
package-lock.json | 6 years ago | |
package.json | 6 years ago | |
postcss.config.js | 6 years ago |
README.md
real-world-vue
Best Practices:
-
Views are components but should be used as a page for the router to mount. Really you could rename View directory Pages if you cared.
-
Reusable componets should be located in the components directory.
-
Use Named Routes like
<router-link :to="{ name: 'home' }">Home</router-link>|
so you are changing url paths only in one place (routes.js
). -
Use redirects in
routes.js
if your app was in production to prevent issues with external linking to you site. You can use analias
property instead, but this could mean in SEO there could be 2 pages with the same content. -
Dynamic routing provides the params from the route in the
$route.params.<the param name>
for the current route. -
Using
$route
within your component limits it's flexibility. Within therouter.js
you can use theprops: true
attribute on a route. This will send the route params into the component as props. This will allow you to also reuse a componet as a child component sending in the username as a prop. Think of a Modal that an admin would use to see a users profile info without navigating to the user's Page. -
Linking to Dynamic routes looks like:
<router-link :to="{ name: 'user, params: { username: 'Drew'} }">Drew's user page</router-link>
-
You should register globally 'Base' components. So the components you will use frequently. Examples could be
BaseIcon.vue
or maybe aBaseButton.vue
component.
Project setup
npm install
Compiles and hot-reloads for development
npm run serve
Compiles and minifies for production
npm run build
The chunk-vendors.#####.js
file is contains all the dependencies of our app.
The app.###.js
is the app file that contains all of the code to mount and render our app.
The <link href=/js/about.######.js rel=prefetch>
was included in the head of our built index file. the use of the rel=prefetch
in this tag declaratively lets us specify resources that our pages will need very soon after loading. Therefor the browser should preload early in the lifecycle before the broswer's rendering machinery kicks in. This makes sure that the resource is available earlier and less likely to block the page's first render. See MDN preload
This prefetch occurred because in the router we have a lazy loading declaration.
{
path: "/about",
name: "about",
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () =>
import(/* webpackChunkName: "about" */ "./views/About.vue")
}
Run your tests
npm run test
Lints and fixes files
npm run lint