2015-09-16 19 views
12

Tôi đang phát xung quanh với system.js (lấy cảm hứng từ angular2 sử dụng nó cho hướng dẫn của chúng), nhưng tôi nhận được hiệu suất cực kỳ xấu ngay cả đối với mẫu nhỏ nhất.Các vấn đề về hiệu suất khi sử dụng System.js

Ví dụ đoạn mã sau có một sự chậm trễ của 26000ms (!) Giữa thứ hai (một trước System.import) và cuối cùng (trong app.js) console.log trong khi chạy cục bộ (vì vậy không chậm trễ mạng)

chỉ mục. html:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>System.js Sample</title> 
    <script>console.log("1: " + new Date().getTime());</script> 
    <script src="bower_components/system.js/dist/system.js"></script> 
</head> 
<body> 
<script> 
    console.log('2: ' + new Date().getTime()); 
    System.import('app.js'); 
</script> 
</body> 
</html> 

App.js:

console.log('3: ' + new Date().getTime()); 

tôi đã cài đặt phiên bản mới nhất system.js qua Chòi ("system.js": "~ 0.18.17") và loại bỏ tất cả mã còn lại nó thực sự chỉ là cuộc gọi System.import có độ tuổi. Vậy tôi đang làm gì sai?

Ảnh của tab Mạng khi tải trang dưới Chrome: enter image description here

+1

Tôi nhớ có một số loại lỗi trong System.js khiến nó rất lag nếu sử dụng các mô-đun kiểu Hệ thống, nhưng OK nếu sử dụng AMD. Nếu bạn đang sử dụng các mô-đun kiểu Hệ thống, hãy thử chuyển sang AMD và xem nó có hoạt động tốt hơn không. – Ixonal

+0

@Ixonal Xem xét rằng tôi chỉ chuyển đổi từ phương pháp đúng và được thử nghiệm của "ghép nối tất cả các tập lệnh thành một, thu nhỏ và sau đó bao gồm dưới dạng thẻ tập lệnh" Tôi có thể cần thêm một chút thông tin nữa :) Ngoài ra, hướng dẫn sử dụng Hệ thống. js Tôi muốn gắn bó với nó (hoặc điều đó chỉ có nghĩa là một cú pháp khác nhau nhưng cùng một thư viện? Yeah tôi là một chút bối rối). – Voo

+0

Tôi giả sử bạn đang sử dụng TypeScript? Bạn có thể thiết lập hệ thống mà nó sử dụng cho các mô-đun trong tệp tsconfig.json của bạn. Chỉ cần đặt module thành "amd". Hệ thống có thể nhận ra nhập khẩu kiểu CommonJS, AMD, ES6, và hệ thống, vì vậy nó không quan trọng nếu bạn có nó transpile để AMD. – Ixonal

Trả lời

0

Có nhớ rằng system.js tải kịch bản không đồng bộ, 26ms là một tốc độ tải bình thường của kịch bản của bạn. Máy chủ cục bộ của bạn cần một thời gian để xử lý yêu cầu/công việc phản hồi và gây ra một số chậm trễ cho việc này.

+0

26.000ms còn gọi là 26 giây. Sai lầm của tôi gây nhầm lẫn cho các dấu tách số bằng tiếng Anh. – Voo

+0

Ok, thì điều này không bình thường :) Tôi nghi ngờ system.js gây ra sự chậm trễ này. Hãy thử kiểm tra bảng điều khiển dành cho nhà phát triển (F12 trong trình duyệt của bạn) -> tab 'Mạng'. Sẽ có dòng thời gian của tất cả các tài nguyên bạn tải. Kiểm tra thời gian tải của tập lệnh app.js của bạn. –

+0

Chỉ mất vài giây để tải. Tôi đã thêm ảnh chụp màn hình vào bài đăng. – Voo

0

Repo nhanh đầu tiên Angular2 sẽ tải các tệp RxJS riêng lẻ mất quá nhiều thời gian. Bạn thường sẽ tìm thấy hơn 300 yêu cầu được thực hiện. Kể từ đó họ đã sửa lỗi này và bạn có thể giảm thêm các yêu cầu được thực hiện bằng cách cụ thể khi bạn nhập các mô-đun RxJS. Repular quickstart repo nhanh hơn nhiều trong những ngày này.

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