2013-05-31 22 views
13

Tôi đang thực hiện một số công việc dọn dẹp JavaScript trên một dự án kế thừa và cố gắng loại bỏ các thư viện JS dư thừa. Tôi đã làm tất cả những điều hiển nhiên (những thứ không phải là tài liệu tham khảo từ bất kỳ đâu cả). Nhưng có một số tệp JS được bao gồm trong tất cả các trang (qua các ô).Làm cách nào để tìm hiểu xem mã javascript nhất định có thực sự được sử dụng không?

Làm cách nào để tìm hiểu xem chúng có thực sự được sử dụng, thiếu nội dung của mỗi và tìm kiếm từng chức năng trong chúng không? Có cách nào thông minh hơn/dễ dàng hơn để thực hiện việc này không? Đó là một dự án dựa trên java/Spring nếu giúp bằng cách này.

+2

Không có cách tầm thường. Có bao phủ thử nghiệm 100% không? Nếu vậy, hãy thử gỡ bỏ từng phần một và xem chúng có bị hỏng hay không. – Prinzhorn

+3

Tôi nghĩ rằng điều này là không thể làm một cách dễ dàng (tự động) bạn phải thực sự hiểu mã và nhìn vào các trang được tạo ra. Ngay cả khi bạn đã đặt ở mọi nơi 'console.log ("Tôi đang ở xxx file"); 'không chắc chắn rằng mã JS sẽ không thực thi trên một số tương tác người dùng, sau một thời gian hoặc thậm chí dựa trên một số tham số cookie/yêu cầu được đặt khi người dùng đi qua một số trang . – Xeon

+2

@Pirnzhorn tiếc là không, đây là một phần lý do tôi làm điều này, một số dọn dẹp trước khi nhận được mọi người để thêm thử nghiệm và lên vùng phủ sóng! –

Trả lời

1

Tôi nghĩ rằng không có cách nào dễ dàng.

Bạn có thể xóa tham chiếu tập lệnh, chạy trang web của bạn bằng trình gỡ rối trình duyệt được bật và xem có lỗi "không tìm thấy chức năng" hay không.

Nhưng bạn sẽ phải kiểm tra tất cả các chức năng duy nhất trong trang web của bạn ...

Edit:

Bây giờ có một tính năng trong công cụ chrome dev có thể làm điều này cho bạn:

https://developers.google.com/web/updates/2017/04/devtools-release-notes

1) Mở menu lệnh. 2) Bắt đầu nhập Mức độ phù hợp và chọn Hiển thị mức độ phù hợp.

+4

Không đồng ý - có công cụ phát triển thời gian chạy (trong Chrome) có thể giúp tìm mã không sử dụng. –

+0

Chắc chắn nó có thể có bây giờ, câu trả lời này là 4 tuổi. Hãy liệt kê chúng cho chúng tôi. –

4

Tôi khuyên bạn nên sử dụng gián điệp cho tác vụ này. Chúng được sử dụng trong TDD để kiểm tra xem các hàm có được gọi hay không, do đó người ta có thể xác nhận xem các cuộc gọi có thực sự xảy ra hay không.

Nếu bạn đủ may mắn, các thư viện js được khởi tạo trong một hàm tạo hoặc theo một cách khác, nếu vậy tôi khuyên bạn nên theo dõi các hàm init này.
Nếu không, bạn có thể muốn theo dõi tất cả các chức năng, nhưng điều này rất đau đớn, đặc biệt là nếu bạn có các thư viện lớn, trong trường hợp đó tôi sẽ đề nghị đi từng cái một.

Trong quá khứ tôi đã sử dụng Jasmine hoặc Sinon.JS cho nhiệm vụ này, sau một ví dụ:

it('should be able to login', function() { 
    spyOn(authobj, 'isEmpty'); 
    authobj.login('abc', 'abc'); 
    expect(authobj.isEmpty).toHaveBeenCalled(); 
}); 

Một khi bạn đã thiết lập gián điệp về chức năng thích hợp sau đó nó phải chỉ là vấn đề kiểm tra nếu họ được gọi hay không, bạn có thể thực hiện cuộc gọi đến mixpanel (ví dụ đầu tiên đến với tâm trí) với một số thông tin về nó, để sau này bạn có thể thấy những chức năng nào được gọi và cái gì không.

9

Một trong những bản cập nhật mới nhất từ ​​công cụ chrome dev hiện bao gồm tab phủ sóng JS và CSS cho phép bạn xem mã không sử dụng của mình.

https://developers.google.com/web/updates/2017/04/devtools-release-notes

1) Open the Command Menu. 
2) Start typing Coverage and select Show Coverage. 
+2

Tuyệt vời, tôi hơi lười biếng và không thể thấy điều này. Cảm ơn bạn đã chia sẻ thông tin này. – JPReddy

+2

Đây chắc chắn là cách nhanh nhất để tự cắt mã không sử dụng. (Đối với các dự án mới, các công cụ xây dựng hiện đại như Webpack cung cấp cắt tỉa mã - nhưng thêm chúng vào các dự án hiện có thường đòi hỏi nhiều nỗ lực hơn giá trị của nó.) –

0

Bạn cũng có thể cung cấp cho một cố gắng để purifycss.

CLI usage:

$ npm install -g purify-css 

purifycss <css> <content> [option] 

Options: 
    -m, --min  Minify CSS       [boolean] [default: false] 
    -o, --out  Filepath to write purified css to     [string] 
    -i, --info  Logs info on how much css was removed 
                 [boolean] [default: false] 
    -r, --rejected Logs the CSS rules that were removed 
                 [boolean] [default: false] 
    -w, --whitelist List of classes that should not be removed 
                  [array] [default: []] 
    -h, --help  Show help           [boolean] 
    -v, --version Show version number         [boolean] 
+1

Điều này sẽ chỉ hoạt động cho quyền css? –

+0

có điều này chỉ hoạt động trên css bootstrap hoặc các tập tin css khác giảm. – AsifAli72090