2012-06-11 31 views
7

Tôi tự hỏi nếu có thực sự nessesary để bao gồm các "use strict" khi tôi thực hiện lập trình và phát hành tài liệu JavaScript của tôi cho bất cứ ai để xem. Tôi thích sử dụng nó bởi vì để kiểm tra xem tôi đã mã hóa một cách tốt hay chưa."sử dụng nghiêm ngặt" chỉ trong gỡ lỗi?

Vì vậy, tôi nên bao gồm hoặc chỉ cần xóa sử dụng "use strict" khi tôi phát hành tệp JavaScript của mình cho công chúng?

Lý do tôi hỏi là tiết kiệm dung lượng trong tệp JavaScript của tôi.

+7

"* tiết kiệm dung lượng trong tệp JavaScript của tôi" - nghiêm túc, các tệp JavaScript của bạn (ngay cả sau khi nén?) –

+2

@TomaszNurkiewicz Nó phải đầy đủ: P – Paulpro

+4

Nếu hóa đơn băng thông của bạn quá cao đến mức 10 byte của 'sử dụng nghiêm ngặt' phá vỡ ngân hàng, bạn có thể muốn chuyển đổi ISP ... –

Trả lời

2

Dòng "use strict"; tạo thành 13 byte tệp của bạn. Tôi muốn đề xuất rằng điều này thậm chí không thể tiếp cận 1% kích thước tệp của bạn.

Sử dụng một trong nhiều bộ giải mã để giảm kích thước tệp của bạn, cùng với sự cố nén gzip ở phía máy chủ, nếu bạn lo lắng về băng thông. Tự xóa 13 byte là một nền kinh tế sai.

Chính xác người khai thác nào có thể phụ thuộc vào mã của bạn, nhưng here are some suggestions.

9

tôi thấy hai ý kiến ​​về việc sử dụng strict mode trong sản xuất:

Không có lý do gì để xuất xưởng “sử dụng nghiêm ngặt” trong mã sản xuất của bạn. Không có hiệu suất đạt được (được xác minh với nhóm V8 và Brendan một thời gian trước) và tôi cũng không cần máy ảo của người dùng thực hiện kiểm tra bổ sung. Giữ nó phát triển chỉ, dải nó ra trong quá trình xây dựng. Bằng cách này bạn cũng tránh được vấn đề nối bạn tham chiếu.

Và:

Có thể không có một hiệu suất đạt được, nhưng cũng có không phải là một mất hiệu suất. Trong sản xuất, thậm chí nhiều hơn trong phát triển, là nơi bạn muốn chắc chắn rằng bạn đang nhận thấy lỗi. Giảm thiểu các thay đổi giữa các phiên bản phát triển và sản xuất của mã là chìa khóa để có thể gỡ lỗi các vấn đề một cách nhanh chóng và hiệu quả. Có nó sẽ giúp trong quá trình phát triển, nhưng không có lý do gì để lấy nó ra khỏi mã sản xuất.

The source is in the comments at the bottom

Và tất nhiên những 12b trọng lượng của "use strict" sẽ không thay đổi điều gì.

+0

Nó là một phần của nhiều thứ trong JavaScript của tôi. – user1431627

+0

Báo giá thú vị. Về câu hỏi, điều này có vẻ như OP đã quyết định rằng 12 byte được lưu là đáng giá. Tôi cảm thấy khó tin, đặc biệt nếu nó cần phải được gỡ bỏ thủ công như trái ngược với một phần của quá trình xây dựng. Có một số thay đổi chế độ nghiêm ngặt không tương thích ngược, do đó việc xóa khai báo có thể phá vỡ mã trong các tình huống đó. Nhưng nếu việc triển khai không nghiêm ngặt đang được hỗ trợ, những thay đổi đó có khả năng (hy vọng) không được sử dụng theo cách không tương thích. –

+0

@amnotiam. Tính năng chế độ nghiêm ngặt nào không được hỗ trợ ở chế độ không nghiêm ngặt? Hoặc tôi hoàn toàn mất bạn ở đó ...? Bạn có sử dụng 'chế độ nghiêm ngặt' không? – gdoron

2

Chắc chắn là tối ưu hóa vi mô của nó, nhưng nếu bạn đang ghép nối (nói 25) các mô-đun JS với nhau, đó là tất cả 250byte đột ngột.

Triển khai sản xuất trong một ứng dụng giao thông cao, với nói 1000 lượt truy cập mỗi phút, đó là hơn 130 Gb một năm giao dịch mà bạn có thể ngăn chặn nếu xây dựng của bạn loại bỏ các 'use strict'; s

Tôi chắc chắn rằng sẽ tiết kiệm được vài đô la trên AWS ...

Tôi chưa thấy một đối số thuyết phục để giữ nó trong sản xuất ngoài thời gian không đáng giá. Nó có lẽ không phải là, nhưng nếu bạn đã có một hệ thống xây dựng, và bí quyết để rút ra điều này với nỗ lực tối thiểu, tại sao không?

+1

Nó sẽ có ít hơn 250 byte vì gzip – Adria

+0

tôi tự hỏi liệu có lý do nào khiến nhiều JS giảm thiểu không có (cung cấp tùy chọn để) loại bỏ điều này không? – simon

+0

Đây là một đối số khá dễ thất vọng. Giả sử băng thông mạng là $ 1/GB (cực kỳ cao), nó không giống như chủ sở hữu của bất kỳ trang web nào phục vụ __half một tỷ yêu cầu mỗi năm__ sẽ lo lắng khoảng $ 130/năm. –

0

Tôi hiện khuyên bạn nên xóa "sử dụng nghiêm ngặt" trong bất kỳ mã nào được thiết kế để sản xuất (và chỉ sử dụng mã đó để gỡ lỗi).

Tuy nhiên, tôi sẽ không xóa nó chỉ để làm cho tệp nhỏ hơn.Lý do tôi xóa nó là bởi vì nó dường như có tác động tiêu cực đến hiệu suất thực tế của JavaScript khi thực thi. Hy vọng rằng điều này sẽ thay đổi cuối cùng, nhưng bây giờ tôi sẽ bỏ qua nó vì lý do hiệu suất.

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