2016-10-21 18 views
5

Mặc dù có rất nhiều câu hỏi liên quan, nhưng chúng không trả lời cách giải quyết vấn đề sau.Trình duyệt chèn biến toàn cục

Tôi có tệp indexjs nodejs.

var browserify = require('browserify'); 

var data = getSomeData(); 
browserify('entry.js').bundle(); 

Tôi muốn có thể truy cập data trong entry.js. Tôi đã tìm thấy tùy chọn trình duyệt số insertGlobalVars nhưng tôi không thể tìm thấy bất kỳ tài liệu hoặc ví dụ phù hợp nào. Tôi đã thử {insertGlobalVars: {myVar: someData}} nhưng nó không hoạt động.

Tôi không thể gọi require('someData') vì dữ liệu của tôi chỉ được tạo khi thực hiện index.js.

Cập nhật: Dữ liệu là một mảng; key là tên tệp, giá trị - nội dung tệp (kích thước khoảng 500b).

+0

Loại dữ liệu nào? Có thể chuyển đổi sang JSON không? Và nó lớn bao nhiêu? – cartant

+0

@cartant Tôi đã cập nhật câu hỏi – FreeLightman

Trả lời

5

Tùy chọn insertGlobalVars mất object that contains functions (được gọi với số filebasedir đối số). Vì vậy, bạn sẽ phải chỉ định tùy chọn insertGlobalVars của bạn như thế này:

var browserify = require('browserify'); 
var someData = getSomeData(); 

browserify('entry.js', { 
    insertGlobalVars: { 
     someData: function() { return JSON.stringify(someData); } 
    } 
}) 
.bundle() 
.pipe(process.stdout); 

Lưu ý rằng các dữ liệu sẽ chỉ được bao gồm trong gói nếu someData toàn cầu đang thực sự được sử dụng trong các mã. Và mỗi mô-đun sử dụng toàn cầu sẽ nhận được bản sao của riêng nó.

Có thể tiêm mô-đun bổ sung vào gói để dữ liệu có thể được yêu cầu (và gói sẽ chỉ chứa một bản sao dữ liệu), nhưng điều đó sẽ phức tạp hơn do tương tác giữa module-deps và hệ thống tệp. Để biết thêm thông tin, bạn có thể xem số điện thoại answer này.

+0

Câu trả lời là nhiều hơn chấp nhận được. Nhưng những gì tôi thực sự cần là tài liệu trình duyệt thích hợp. Nếu nó tồn tại, tôi đã không hỏi câu hỏi này. Tôi đã cố gắng duyệt mã nguồn, nhưng nó quá kết hợp và tôi không hiểu gì cả. – FreeLightman

Các vấn đề liên quan