VueJS: Sử dụng trong môi trường không phải Node.js
Việc xây dựng mặc định vue-server-renderer
giả định một môi trường Node.js, làm cho nó không sử dụng được trong các môi trường JavaScript thay thế như PHP V8J hoặc Oracle Nashorn. Ở phiên bản 2.5+ chúng ta đã chuyển một bản build trong vue-server-renderer/basic.js
mà phần lớn là môi trường bất khả tri, là môi trường làm cho nó có thể sử dụng trong các môi trường được đề cập ở trên.
Đối với cả hai môi trường, đầu tiên cần chuẩn bị môi trường bằng cách mocking các đối tượng global
và process
, process.env.VUE_ENV
được đặt thành "server"
và process.env.NODE_ENV
đặt thành "development"
hoặc "production"
.
Trong Nashorn, nó cũng có thể cần cung cấp một polyfill cho Promise
hoặc setTimeout
sử dụng các bộ định thời nguyên gốc của Java.
Sử dụng ví dụ trong php-v8js:
<?php $vue_source = file_get_contents('/path/to/vue.js'); $renderer_source = file_get_contents('/path/to/vue-server-renderer/basic.js'); $app_source = file_get_contents('/path/to/app.js'); $v8 = new V8Js(); $v8->executeString('var process = { env: { VUE_ENV: "server", NODE_ENV: "production" }}; this.global = { process: process };'); $v8->executeString($vue_source); $v8->executeString($renderer_source); $v8->executeString($app_source); ?>
// app.js var vm = new Vue({ template: `<div>{{ msg }}</div>`, data: { msg: 'hello' } }) // được hiển thị bởi `vue-server-renderer/basic.js` renderVueComponentToString(vm, (err, res) => { print(res) })