Tôi muốn có thể gói ứng dụng React của mình với Webpack sao cho các bản sao được phân phối vào CDN có thể được cung cấp, gọi và khởi tạo với một loạt cấu hình có liên quan đến máy khách.Viết plugin Javascript nhúng với React & Webpack
Sau khi đọc this và this, Tôi đang thiết lập tập tin nhập webpack của tôi như sau:
// ... React requires etc.
(() => {
this.MyApp = (config) => {
// some constructor code here
}
MyApp.prototype.init =() => {
ReactDOM.render(<MyReactApp config={MyApp.config} />, someSelector);
}
})();
Ý tưởng được rằng trong ứng dụng của tôi, tôi có thể làm điều gì đó như sau:
<script src="./bundle.js" type="text/javascript"></script>
<script type="text/javascript">
MyApp.init({
some: "config"
});
</script>
Và chức năng MyApp#init
của tôi sẽ hiển thị ứng dụng React của tôi bên trong một số vùng chứa trên máy khách.
Tôi có đang nghĩ về điều này đúng không? Có cách nào đơn giản hơn hoặc hiệu quả hơn để thực hiện việc này không?
Lỗi của tôi là Uncaught TypeError: Cannot set property 'MyApp' of undefined
, kể từ this
bên trong IIFE là undefined
. Tôi thực sự muốn hiểu cả lý do tại sao điều này xảy ra và lời khuyên về cách khắc phục.
Cảm ơn trước!
Hi, mattsch. Đây là một giải pháp tốt đẹp. Câu hỏi duy nhất tôi có là làm thế nào tôi có thể kiểm tra tiện ích đó được tích hợp trên trang web của khách hàng.Vì vậy, hãy nói rằng có một ứng dụng và xây dựng một widget. Tôi muốn kiểm tra trong ứng dụng mà một số người dùng (bằng id hoặc tên máy) nhúng một widget trên trang web của họ. –
@To_wave Tôi đoán là một phần của hàm 'init', bạn có thể ping một yêu cầu quay lại máy chủ của bạn với các chi tiết của máy khách - điều đó có thể hoạt động? – mattsch
Tôi nghĩ về điều đó, nhưng giải pháp đó không cho phép tôi kiểm tra xem khách hàng đã xóa một widget từ trang web của họ. Vì vậy, với callback tôi có thể kiểm tra duy nhất là widget tích hợp, nhưng không loại bỏ –