- vừa được xem lúc

Khái niệm cơ bản về NuxtJs

0 0 399

Người đăng: Dương Quý Cao

Theo Viblo Asia

1. NuxtJs là gì ?

  • Là một framework của Vuejs được sử dụng để xây dựng những ứng dụng từ Vuejs.
  • Cho phép tạo Universal Vue Apps.
  • Có thể chạy trên server lẫn client.

2. Tính năng nổi bật

  • Cấu trúc thư mục rõ ràng
  • Server-Side Rendering (SSR): toàn bộ dữ liệu xử lý trên server, rồi từ server trả dữ liệu về client hiển thị.
  • Client Side Rendering (CSR): phần lớn chủ yếu xử lý trên client.
  • Viết code trên các file .vue
  • Chia website ra thành nhiều trang, mỗi trang là một file riêng.
  • Chia layouts, components, plugins ... giúp code dễ bảo trì và tái sử dụng.

3. Xây dựng ứng dụng Demo

Các bạn có thể cài đặt qua npx:

npx create-nuxt-app <project-name>

Hoặc có thể sử dụng yarn:

yarn create nuxt-app <project-name>

Trong quá trình cài đặt sẽ hiển thị một số thông tin như là: name project, programing language, package manager, ... sẽ hỗ trợ cho dự án của bạn nhanh và thuận tiện hơn trong quá trình làm.

Tiếp đến muốn chạy được project của bạn thì run :

cd name-project
npm run dev hoặc yarn dev

Mặc định project sẽ chạy localhost:3000

4. Cấu trúc thư mục

Sau khi cài đặt xong thì project ta có có sẵn các folder sau :

Assets:

  • Đây là nơi mà bạn sẽ chứa các file được build bởi webpack, các file như css, scss, global JS, hoặc các images.

Components:

  • Chứa các components có thể tái sử dụng.

Layouts:

  • Thư mục Layouts là nơi chứa các layout (giao diện) cho ứng dụng.

Middleware:

  • Chứa Middleware của ứng dụng.
  • Middleware được chạy trước khi giao diện được render ra.

Pages:

  • Đây là nơi sẽ chứa các Application Views cũng như route của bạn.
  • Mỗi file .vue sẽ tương ứng với 1 route.

Plugins:

  • Thư mục này cho phép bạn đăng ký các plugin Vue trước khi ứng dụng được tạo. Điều này cho phép các plugin được sử dụng trong suốt quá trình tương tác với ứng dụng của bạn trên instance Vue và bạn có thể truy cập bất cứ vào thành phần nào.

Static:

  • Chứa các file tài nguyên được public. Được truy cập qua đường dẫn / .
  • VD: muốn lấy file image.img trong thư mục static/image.img thì chỉ cần vào địa chỉ : localhost:3000/image.img

Store:

  • Chứa các file khai báo vuex store

Nuxt.config.js:

  • Chứa các cấu hình được thiết đặt cho ứng dụng của bạn.

Package.json:

  • Là nơi chứa các dependencies và scripts.

5. Routing

  • Nuxt.js tự động cấu hình vue-router trong thư mục Pages.
  • Được điều hướng các trang thông qua nuxt-link
<template> <nuxt-link to="/">Home page</nuxt-link>
</template>

Basic Route

Ví dụ, cấu trúc thư mục page sẽ là:

pages/
--| user/
----| index.vue
----| one.vue
--| index.vue

Thì nuxt sẽ tự động tạo ra file config route như thế này:

router: { routes: [ { name:: 'index', path: '/', component: 'pages/index.vue' }, { name:: 'user', path: '/user', component: 'pages/user/index.vue' }, { name:: 'user-one', path: '/user/one', component: 'pages/user/one.vue' } ]
}

Thay vì mình phải tạo ra file config cho route thì ở nuxt chúng ta chỉ cần tạo cây thư mục trong thư mục pages.

Dynamic Routes

Để xác định tuyến đường động với một tham số, bạn cần xác định tệp .vue HOẶC một thư mục có tiền tố gạch dưới " _ ".

pages/
--| _slug/
----| category.vue
----| index.vue
--| users
----| _id.vue
--| index.vue

Thì nó sẽ tự động generate như sau:

routers: { routes: [ { name: 'index', path: '/' component: '/' }, { name: 'user-id', path: '/users/:id' component: 'pages/users/_id.vue' }, { name: 'slug', path: '/:slug', component: 'pages/_slug/index.vue' }, { name: 'slug-category' path: '/:slug/category', component: 'pages/_slug/category.vue' } ]
}

Nested Routes

Nuxt.js cho phép chúng ta tạo các router lồng nhau.

Nếu bạn muốn định nghĩa component cha mà bạn cần tạo 1 file .vue giống với tên thư mục mà chứa các view con. Ví dụ cấu trúc cây thư mục :

pages/
--| users/
----| _id.vue
----| index.vue
--| users.vue

Nó sẽ tự động generate như này:

routers: { routes: [ { path: 'users', component: 'pages/users.vue', children: [ { name: 'users', path: '', component: 'pages/users/index.vue' }, { name: 'users-id', path: ':id', component: 'pages/users/_id.vue' } ] } ]
}

6. Kết luận

Bài tiếp theo mình sẽ tìm hiểu về Fetch() và asyncData() trong Nuxtjs

7. Tài liệu tham khảo

Bình luận

Bài viết tương tự

- vừa được xem lúc

Ví dụ CRUD với Laravel và Vuejs.

1. Cài đặt Laravel. composer create-project --prefer-dist laravel/laravel vuelaravelcrud. .

0 0 157

- vừa được xem lúc

Bài 1: Cài đặt Vue và chạy chương trình Hello world đầu tiên

Ở bài đầu tiên này mình sẽ hướng dẫn các bài cài đặt VueJS vào project Laravel, sau đó chúng ta sẽ cùng xem những thứ cơ bản của Vue nhé. Vì Laravel đã hỗ trợ tích hợp VueJS nên việc cài đặt của chúng ta sẽ hết sức đơn giản.

0 0 136

- vừa được xem lúc

Lazy loading and code splitting in Vue.js

Việc giữ cho ứng dụng của bạn tải nhanh ngày càng khó hơn. Trong loạt bài này, tôi sẽ đi sâu vào các kỹ thuật tối ưu hiệu suất Vue và bạn có thể sử dụng trong các ứng dụng Vue.

0 0 114

- vừa được xem lúc

Validating Vue.js Forms Using Vuelidate

Introduction. Validate thông tin đầu vào trên các ứng dụng web là rất quan trọng.

0 0 216

- vừa được xem lúc

5 Good Practices mình đang sử dụng trong Vuejs

Mở đầu. Mình đã sử dụng vuejs được cũng được 1 năm trở lại đây.

0 0 100

- vừa được xem lúc

[P5] VueJS - Một vài Interpolations khác trong Vue

Ở bài viết trước, mình đã nói về một vài keyword trong Vue như v-if, v-else, v-show, v-for, ... Chúng thực chất là các syntax đặc biệt của Vue để thao tác linh hoạt với các DOM ảo, được gọi là Interpolations. Ngoài ra, Vue còn các Interpolations khác. Mục đích của nó thì đã quá rõ ràng, hiển thị tex

0 0 60