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

Nuxtjs và những khái niệm cơ bản cần biết

0 0 36

Người đăng: Quan Troy

Theo Viblo Asia

1. NuxtJs là gì ?

  • Nuxt.js là một framework cấp cao hơn được được phát triển trên nền Vue.
  • Nó đơn giản hóa việc phát triển các ứng dụng Universal or Single Page Vue Apps.

2. Khởi tạo project Nuxtjs

Để khởi tạo dự án Nuxtjs chúng ta sử dụng create-nuxt-app

#Sử dụng npm
npm init nuxt-app <project-name> #hoặc yarn
yarn create nuxt-app <project-name>

Khi khởi tạo project chúng ta gõ lệnh như trên và đợi trong giây lát, Nuxtjs sẽ hỏi chúng ta về thiết lập cơ bản của dự án như name project, programing language, package manager... Sau khi khởi tạo xong, muốn chạy project của bạn thì sử dụng lệnh

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

Mặc định project của bạn sẽ được chạy ở http://localhost:3000/

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

Lưu ý ở version hiện tại"nuxt": "^2.15.8", sau khởi tạo Nuxtjs đã không có các thư mục như layout, middleware, assets... Nếu muốn sử dụng, bạn phải tự tạo thủ công

components :

  • Thư mục chứa các Components Vuejs của bạn.
  • Các Components tạo nên các phần khác nhau của trang của bạn và có thể được sử dụng lại.

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.

static: +Chứa tài nguyên được public có thể truy cập qua đường dẫn

  • VD: muốn lấy file robots.txt trong thư mục /static/robots.txt thì chỉ cần vào địa chỉ : localhost:3000/robots.txt

store:

  • Chứa các file Vuex Store của bạn.
  • Mặc định chúng sẽ bị tắt, để sử dụng store bạn cần tạo file index.js trong thư mục này.

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

Ngoài ra còn một số thư mục khác mà Nuxtjs đã ẩn đi. Nếu muốn sử dụng ta phải tự tạo thủ công

assets: Chứa các file không được biên dịch của bạn như css hoặc sass, image hoặc fonts chữ của bạn.

middleware: Middleware cho phép bạn định nghĩa các function được chạy trước khi render 1 page hoặc nhóm page. (vd: kiểm tra người dùng đã đang nhập hay chưa, nếu chưa thì chuyển hướng về trang đăng nhập). Nếu bạn đã từng làm quen với ngôn ngữ phía back-end chắc không còn lạ lẫm với middleware nữa phải không?

layouts: chứa các layout cho ứng dụng của bạn, có thể có nhiều layout không nhất phải giống nhau (vd: layout đăng nhập sẽ khác layout trang chủ).

Nếu không thiết lập gì, mặc định Nuxtjs sẽ lấy layout ở default.vue . Nên để dựng layout cho ứng dụng của mình bạn cần tạo file default.vue trong thư mục layouts

<template> <div> <TheHeader /> <Nuxt /> <TheFooter /> </div>
</template>

Bạn có thể thêm components như TheHeader, TheFooter để dễ dàng dựng layout <Nuxt /> đóng vai trò như slot, giúp các Pages có thể truyền qua.

Ngoài ra, nếu bạn muốn tạo một layout khác cho việc đăng nhập thì có thể thêm file ở layouts/login.vue

<template> <div> <div>Trang login nè</div> <Nuxt /> </div>
</template>

Chú ý: để sử dụng được layout này bạn cần thêm dòng sau ở Pages muốn sử dụng

<script>
export default { layout: 'login', // OR layout (context) { return 'login' }
}
</script>

Bạn ở thể tìm hiểu thêm về các thư mục này ở link sau https://nuxtjs.org/docs/directory-structure

3. Routing

Nếu như trong Vue muốn tạo routing chúng ta phải tự định nghĩa đường dẫn, import các components. Thì với Nuxt js việc tạo routing vô cùng đơn giản, chúng ra chỉ việc tạo thư mục, file trong thư mục Pages sau đó Nuxt sẽ tự động generate cho chúng ta. Ví dụ có cấu trúc file như sau:

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

Route tương ứng sẽ là:

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' } ]
}

3. 1 Dynamic Routes

Đôi khi bạn muốn thêm tham số cho route của mình nên chúng ta có thể sử dụng dynamic route. Các tạo cũng rất đơn giản, chỉ cần thêm dấu " _ " trước file .vue, có thể là thư mục hoặc tên file. ví dụ cấu trúc thư mục như sau

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

Route tương ứng:

router: { routes: [ { name: 'index', path: '/', component: 'pages/index.vue' }, { name: 'users-id', path: '/users/:id?', component: 'pages/users/_id.vue' }, { name: 'slug', path: '/:slug', component: 'pages/_slug/index.vue' }, { name: 'slug-comments', path: '/:slug/comments', component: 'pages/_slug/comments.vue' } ]
}

Bạn có thể thấy route name 'users-id' có đường dẫn :id? tức là đây là optional (có thể có hoặc không).

Để lấy được tham số đó trên url, Nuxtjs cũng hỗ trợ chúng ta luôn bằng cách sử dụng $route.params.id với id là tên file dưới dạng _id.

Bài viết này mình chỉ giới thiệu sơ qua về Nuxtjs. Ở các bài viết sau mình sẽ chia sẻ nhiều hơn về các khái niệm trong Nuxtjs

Bình luận

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

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

Tìm hiểu về NuxtJS (P3) - Page

1. Mở đầu. . Chào mừng các bạn đến với phần ba trong loạt bài viết tìm hiểu về NuxtJS.

0 0 83

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

Google Login trong Nuxtjs

1. Auth. Authenticate là thứ rất quen thuộc của mỗi app, trong bài viết này mình sẽ giới thiệu auth module dành cho nuxt giúp bạn xử lý công việc này rất nhanh và dễ dàng. Trước hết là cài nuxt.

0 0 142

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

Tìm hiểu về NuxtJS (P2) - Routing & Middleware

1. Mở đầu. . Chào mừng các bạn đến với part 2 của series bài viết tìm hiểu về NuxtJS, trong bài viết trước mình đã giới thiệu qua về NuxtJS, cách cài đặt, cấu trúc thư mục và config cơ bản có trong file nuxt.

0 0 186

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

Tìm hiểu về NuxtJS (P1)

1. Mở đầu. . Trước đây mình có một bài viết giới thiệu về NextJS - một framework hỗ trợ chúng ta thực hiện server-side rendering với ReactJS nếu bạn chưa đọc thì có thể xem qua tại đây.

0 0 104

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

Quản lý và sử dụng API trong Nuxt bằng cách sử dụng Repository Pattern

Mở đầu năm mới, à nhầm, mở đầu bài viết. Cái tên NuxtJS chắc hẳn cũng không còn xa lạ gì với những bạn yêu thích VueJS nữa, đương nhiên mình cũng là một chàng trai dành tình yêu to lớn cho frameworks này.

0 0 226

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

Sử dụng Vuex Class Component trong Nuxtjs

1. Vuex Class Component. Vuex class component(VCC) là 1 thư viện giúp bạn viết Vuex Module hoặc Store sử dụng ES6 Classes và ES7 Decorators. Mục đích chính của VCC là:.

0 0 66