Thứ hai, 07/05/2018 | 00:00 GMT+7

Làm việc với các biến môi trường trong Vue.js


Trong bài đăng này, ta sẽ tìm hiểu cách làm việc với các cấu hình khác nhau giữa chế độ phát triển và production cho các dự án Vue.js sử dụng mẫu webpack của CLI.

Trong một ứng dụng web, ta rất có thể phải truy cập server API backend thông qua một URL. URL này có thể giống như http://localhost:8080/api khi đang phát triển và https://site.com/api trong production khi dự án được triển khai. Các biến môi trường cho phép ta dễ dàng thay đổi URL này tự động, theo trạng thái hiện tại của dự án.

Một cách dễ dàng để sử dụng các biến môi trường với Vue và mẫu webpack là thông qua các file có phần mở rộng .env . Các file này chịu trách nhiệm lưu trữ thông tin dành riêng cho môi trường (phát triển, thử nghiệm, production ,…)

Phần lớn bài đăng này áp dụng cho các ứng dụng sử dụng v2.x của Vue CLI, nhưng các biến môi trường cũng dễ quản lý trong Vue CLI v3 .

Sử dụng file .env trong Vue

Cách đơn giản nhất để sử dụng file .env trong Vue là tạo một ứng dụng đã hỗ trợ file môi trường. Hãy sử dụng vue-cli và mẫu webpack cho điều đó.

Với Node 8 trở lên được cài đặt, hãy chạy như sau, trong đó ứng dụng của tôi là tên ứng dụng của bạn:

$ npx vue-cli init webpack my-app 

Lệnh này sẽ tạo một ứng dụng với một số file đã sẵn sàng để sử dụng. Trong bài đăng này, ta chỉ tập trung vào cấu hình môi trường, có thể được truy cập trong folder cấu hình :

Cấu trúc file  dự án

Có hai file trong folder cấu hình: dev.env.jsprod.env.js , và bạn cũng sẽ có file test.env.js nếu bạn đã cấu hình các bài kiểm tra trong khi bắt đầu dự án. Các file này được sử dụng trong chế độ phát triển và production , hay nói cách khác, khi bạn đang chạy ứng dụng thông qua lệnh dev.env.js npm run dev , file dev.env.js được sử dụng và khi bạn biên dịch dự án cho production với lệnh npm run build lệnh npm run build , file prod.env.js được sử dụng thay thế.

Hãy thay đổi file phát triển thành:

dev.env.js
'use strict' const merge = require('webpack-merge') const prodEnv = require('./prod.env')  module.exports = merge(prodEnv, {   NODE_ENV: '"development"',   ROOT_API: '"http://localhost/api"' }) 

Tệp môi trường phát triển của ta có một biến bổ sung được gọi là ROOT_API , với giá trị http://localhost/api .

Bây giờ hãy thay đổi file production thành:

prod.env.js
'use strict' module.exports = {   NODE_ENV: '"production"',   ROOT_API: '"http://www.site.com/api"' } 

Ở đây ta có cùng một biến ROOT_API , nhưng có một giá trị khác, chỉ nên được sử dụng trong chế độ production . Lưu ý cách các biến chuỗi cần dấu nháy kép bên trong dấu nháy đơn.

Sử dụng file môi trường trong mã của bạn

Sau khi tạo biến ROOT_API , ta có thể sử dụng nó ở bất kỳ đâu trong Vue thông qua đối tượng process.env global :

process.env.ROOT_API 

Ví dụ: mở file src/components/HelloWorld.vue và trong <script> thêm thông tin sau:

mounted() {   console.log(process.env.ROOT_API) } 

Sau khi chạy npm run dev , bạn sẽ thấy thông tin console.log trong các công cụ dành cho nhà phát triển của trình duyệt:

Chạy ứng dụng

Nếu bạn chạy lệnh npm run build , folder dist sẽ được tạo với ứng dụng đã sẵn sàng để triển khai cho môi trường production và biến ROOT_API sẽ hiển thị giá trị http://www.site.com./api , như đã chỉ định trong prod.env.js

Do đó, ta có thể làm việc với các biến khác nhau cho từng môi trường khác nhau, sử dụng cấu hình tạo sẵn mà mẫu webpack cung cấp cho ta . Nếu bạn sử dụng một mẫu khác, hãy đảm bảo bạn tìm thấy một tính năng tương đương hoặc sử dụng một thư viện như dotenv để quản lý các biến môi trường của bạn .

Còn Vue CLI 3 thì sao?

Nếu ứng dụng của bạn đang sử dụng Vue CLI mới , thay vào đó bạn cần có các file như .env.env.prod ở folder root của dự án và bao gồm các biến như sau:

.env
VUE_APP_ROOT_API=http://localhost/api 
.env.prod
VUE_APP_ROOT_API=http://www.site.com/api 

Ở đây, tiền tố VUE_APP_ rất quan trọng và các biến không có tiền tố đó sẽ không khả dụng trong ứng dụng của bạn.


Tags:

Các tin liên quan