2014-07-18 17 views
8

Tôi có một vài đồng nghiệp và bạn bè với các ứng dụng javascript hiện có, lộn xộn, những người muốn bắt đầu chuyển sang một số loại hệ thống mô-đun js. Tôi đã cố gắng để giúp họ trong quá khứ bằng cách cho họ thấy làm thế nào để tái cấu trúc để requirejs nhưng tôi bắt đầu nghĩ rằng đó là một cách tiếp cận xấu.Bạn có thể sử dụng trình duyệt mà không cần gói không?

Vấn đề thường là bản chất của mã toàn cầu-tất cả-over-the-place xung đột với bản chất không đồng bộ của AMD, và nhiều như tôi tin vào cách tiếp cận AMD, họ có mối quan tâm lớn hơn các bài giảng của tôi cách "thích hợp" để tải mô-đun.

Duyệt trong khi chờ loại bỏ xem xét không đồng bộ và đơn giản hơn nhưng thêm vào trong toàn bộ bước xây dựng. Đối với những người không sử dụng bundling hoặc bất kỳ loại của một quá trình xây dựng (hoặc chỉ là một mặc định trong phòng thu trực quan) này là một lần nữa, quá nhiều chi phí.

Vì vậy, điều tôi thực sự muốn là một hệ thống mô-đun đơn giản cho phép mọi người definerequire điều. Đây là một nửa bước hướng tới việc mọi thứ hoạt động đúng cách, chúng có thể bao gồm các phụ thuộc của chúng với các thẻ script thông thường và định nghĩa chúng thành hệ thống mô-đun theo cách thủ công. I even wrote such a system vì ... này, điều đó thực sự dễ dàng.

Hôm nay, một người nào đó đã chỉ ra rằng tôi có thể thực sự chỉ sử dụng các phần Browserify phía khách để đạt được điều này. Tôi đồng ý. Tuy nhiên, tôi thực sự không thể tìm thấy bất kỳ tài liệu nào ở bất cứ nơi đâu cũng như không chỉ riêng phần Browserify phía máy khách.

+2

tôi nghi ngờ đó là không thể ... Bạn sẽ phải chạy toàn bộ quá trình browserify trên các mặt hàng cho mỗi tải trang, và đó là thường trên quy mô giây. Browserify là khá huyền diệu, nhưng tôi tin rằng bạn sẽ cần gói phía máy chủ để làm cho nó hoạt động ... –

+0

@urban_racoons nhưng không phải là gói mà trình duyệt tạo ra chủ yếu là mỗi tệp js được bao quanh bởi một 'define (.. .) 'và nối lại với nhau? Tại sao bạn không thể gọi xác định thủ công từ ứng dụng của bạn?Hay nó làm điều gì đó nhiều hơn? Tôi không thực sự chắc chắn kể từ khi - như tôi ngụ ý - Tôi là người trong trại AMD. –

Trả lời

1

Sau khi ngồi xuống và mổ xẻ một tệp trình duyệt được xây dựng, tôi đã kết luận rằng không, những gì tôi muốn làm là không thể.

Đối với một điều, trình duyệt dường như không hiển thị từ khóa xác định hoặc thậm chí là yêu cầu. Đối với một cái khác, nó thực hiện một số viết lại nhỏ của các mô-đun kết hợp sẽ rất khó đạt được trong thời gian chạy.

+0

tìm thấy một cái gì đó gọi là năng động yêu cầu và tuyệt vời của nó ... https://github.com/manvalls/drq – wayofthefuture

-2

Một giải pháp cho vấn đề của bạn có thể là:

https://github.com/LarsBV/browser-node-loader

tôi đã viết này do lỗi sourcemap khác nhau trong các trình duyệt, và quá nhiều/alternative, cách cấu hình trong ngụm/browserify/watchify.

Nó có bước xây dựng nhưng chỉ cần chạy khi có phụ thuộc mới.

Tôi không đề xuất phương pháp này để sản xuất, nhưng nó dễ phát triển hơn rất nhiều.

Điều này rất mới và chưa được kiểm tra trong bất kỳ thứ gì nhưng mới nhất là chrome, firefox, với một số điều chỉnh trong tập lệnh được tạo, tôi nghĩ rằng nó sẽ hoạt động ngay cả tức là6.

+0

Cảm ơn, điều này là thú vị nhưng khá nhiều đối diện chính xác của những gì tôi muốn sử dụng browserfy cho. Tôi không tìm kiếm tải mô-đun. Viết lại một dự án lộn xộn hiện có để thực hiện tải mô-đun thực sự khó khăn. Tôi chỉ muốn phần hệ thống mô-đun của nó. Như bạn nói - dự án của bạn không dành cho sản xuất. Mục đích của tôi là giúp chuyển mã hiện tại thành một kiến ​​trúc tốt hơn. –

0

Tôi đã chạy trên trình tải mô-đun động hoạt động tốt với Browserify. Bạn có thể sử dụng nó để phát triển để lộ "yêu cầu" trên toàn cầu ở phía khách hàng. Hoạt động tuyệt vời.

https://github.com/manvalls/drq

+0

Chắc chắn nhưng điều này không thực sự làm việc cho các vấn đề nêu nơi mã brownfield bằng cách sử dụng phụ thuộc không được viết như một gọi lại không đồng bộ. Điều này có vẻ thú vị, nhưng nếu bạn đang bắt đầu với một ứng dụng greenfield tại sao không làm một cái gì đó như jspm? –

+0

Tôi "chắc chắn bạn nói đúng. Thật khó để có được một số điểm ở nơi này! – wayofthefuture

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