Cách giữ cho các thư viện JavaScript của bạn luôn được cập nhật – javascript được cập nhật

Giữ cho các thư viện JavaScript của dự án của bạn được cập nhật có vẻ đơn giản, nhưng bạn nên suy nghĩ kỹ về chiến lược cập nhật của mình.

Bạn đang xem : javascript được cập nhật

Công việc duy trì cập nhật các thư viện JavaScript có thể mang nhiều sắc thái hơn là chỉ chạy npm update hoặc thread up thỉnh thoảng. Các dự án mới thường bắt đầu với các phiên bản thư viện mới nhất, nhưng chúng có thể bị lỗi thời khá nhanh.

Đây là một chủ đề đặc biệt quan trọng đối với các nhà phát triển JavaScript vì các dự án được viết bằng JS có xu hướng có cây phụ thuộc tương đối lớn so với các dự án được viết bằng các ngôn ngữ khác.

Tại sao lại có quá nhiều phụ thuộc?

Có một vài lý do giải thích cho xu hướng này. Thứ nhất là hệ sinh thái JS gắn liền rất nhiều với Node.js npm registry . Điều này rất quan trọng vì Node.js có một thư viện chuẩn có chủ ý nhỏ . Chỉ cần so sánh nó với thư viện chuẩn của Python .

Có những ưu và nhược điểm đối với phương pháp này, nhưng kết quả thực tế là các nhà phát triển JS có thói quen chuyển sang thư viện của bên thứ ba để giải quyết vấn đề, ngay cả đối với các tác vụ như thêm chức năng mkdir -p . Thư viện mkdirp được tải xuống hơn 20 triệu lần mỗi tuần.

Vì bản thân các phần phụ thuộc có thể có các phần phụ thuộc, thói quen này có thể dẫn đến một thư mục node_modules lớn. Kích thước của nó đã trở thành một meme và nó là phổ biến đối với package-lock.json của npm và fiber.lock Yarn '. / code> dài hàng nghìn hoặc thậm chí hàng chục nghìn dòng.

Ý tưởng tạo nên sức nặng của mô-đun nút

 Một Meme làm nên sức nặng của các mô-đun nút

Ở mức độ cao hơn so với các hệ sinh thái khác, các nhà phát triển JS cũng nắm lấy triết lý tạo và sử dụng các phần phụ thuộc nhỏ và tập trung . Đây đôi khi là mục tiêu chỉ trích , đặc biệt là khi các gói chỉ chứa một dòng mã.

Bất kể thực tế này phải đánh đổi như thế nào, các nhà phát triển sẽ cần phải xem xét chiến lược cập nhật phụ thuộc của họ vào một thời điểm nào đó.

Tại sao phải cập nhật

Bạn có thể hỏi tại sao nên cập nhật các phần phụ thuộc ngay từ đầu, đặc biệt là khi một dự án đang hoạt động tốt.

Lý do đầu tiên là để ngăn chặn các lỗ hổng bảo mật. Ngay cả khi bạn có khả năng viết mã hoàn hảo, bất kỳ mã của bên thứ ba nào bạn sử dụng, trực tiếp hoặc gián tiếp, đều có thể có vấn đề về bảo mật. Điều này có thể dẫn đến hậu quả tàn khốc. 2017 Equifax vi phạm dữ liệu là do Equifax không cập nhật khung mà họ đã sử dụng cho một trong các trang web của mình sau khi khung này vá lỗ hổng bảo mật.

Ý tưởng tương tự cũng áp dụng cho các bản sửa lỗi, cải tiến chức năng và cải tiến hiệu suất khác. Bằng cách cập nhật các yếu tố phụ thuộc, bạn có thể dễ dàng đưa những cải tiến này vào dự án của mình.

Lý do thứ hai là để tránh phải thực hiện những thay đổi lớn sau này khi bạn buộc phải nâng cấp vì bất kỳ lý do gì. Ví dụ: bạn có thể bắt đầu với phiên bản 1.0 của một thư viện. Bạn không nâng cấp trong một thời gian dài và sau đó bạn cố gắng nâng cấp trực tiếp lên phiên bản 4.0. Điều này có thể liên quan đến những thay đổi quan trọng có thể ít gây khó khăn hơn nếu bạn đã nâng cấp lên 2.0 và 3.0 ở giữa.

Đây không phải là tình huống hiếm gặp. Có thể bạn muốn nâng cấp lên phiên bản chính mới của Node nhưng phiên bản hiện tại của một trong các thư viện của bạn không hỗ trợ.

Tương tự, có thể các thư viện của bạn phụ thuộc vào nhau theo cách gây khó khăn cho việc cập nhật một thư viện mà không cập nhật thư viện khác. Ví dụ: bạn có thể sử dụng thư viện thành phần React có sự phụ thuộc ngang hàng vào React. Bạn chỉ muốn cập nhật thư viện thành phần, nhưng sau đó bạn thấy mình cũng bị buộc phải cập nhật React.

Hiệu ứng xếp tầng này có thể dẫn đến sự thay đổi lớn hơn nhiều so với dự định ban đầu của bạn, đặc biệt nếu kết quả là bạn phải thay đổi một số mã của riêng mình. Càng để lâu mà không cập nhật thư viện, bạn càng có nhiều khả năng gặp phải tình huống này.

Một số tác giả thư viện cố gắng giảm bớt sự di chuyển bằng cách đưa ra các thay đổi phá vỡ một cách thận trọng, chẳng hạn như không dùng các tính năng trước khi xóa chúng. Nếu hiếm khi cập nhật, bạn có thể buộc phải thực hiện những thay đổi lớn vào thời điểm không thuận tiện thay vì được cảnh báo sớm và có cơ hội lập kế hoạch.

Cập nhật các phần phụ thuộc cũng là một cách để cập nhật thông tin. Nó cho bạn biết sự phát triển của một thư viện đang diễn ra như thế nào. Bạn có thể tìm hiểu về một tính năng mới hữu ích cho bạn. Hoặc bạn có thể nhận ra rằng thư viện đang thay đổi theo hướng không đáp ứng được nhu cầu của bạn trong tương lai và bạn nên bắt đầu điều tra các lựa chọn thay thế. Bạn sẽ dễ dàng bỏ lỡ những thứ như thế này nếu bạn cài đặt một thư viện và không bao giờ nghĩ đến nó nữa.

Cuối cùng, nếu bản thân bạn là tác giả thư viện, bạn nên cập nhật các phần phụ thuộc của mình thay mặt cho người dùng cuối của mình. Họ không thể dễ dàng kiểm soát các phiên bản của phụ thuộc, vì vậy nếu có vấn đề với một phụ thuộc, họ có thể gặp sự cố nếu bạn không cập nhật package.json của mình để cho phép họ đưa vào phiên bản mới hơn của phụ thuộc.

Tại sao không cập nhật

Tuy nhiên, cũng có những lý do để không cập nhật thư viện. Điều lớn nhất là bất kỳ thay đổi nào cũng có nguy cơ gây ra sự cố. Mặc dù bạn có thể nhận được bản sửa lỗi cho một lỗi mà bạn thậm chí không biết, nhưng cũng có thể thư viện được cập nhật giới thiệu một lỗi mới hoặc hồi quy hiệu suất.

Một trường phái suy nghĩ là bạn chỉ nên cập nhật các phần phụ thuộc khi bạn có lý do cụ thể thay vì cập nhật chỉ vì mục đích cập nhật. Có một bộ thử nghiệm tốt sẽ giúp giảm thiểu rủi ro, nhưng nó vẫn là rủi ro.

Việc cập nhật các phần phụ thuộc cũng mất nhiều thời gian để xây dựng các tính năng mới hoặc khắc phục các sự cố đã biết. Đó là một công việc có thể mất một khoảng thời gian dài ngoài dự kiến ​​khi thư viện thay đổi đáng kể.

Bất kể tần suất bạn quyết định cập nhật thư viện, chúng ta hãy xem xét các cơ chế thực tế để làm như vậy.

Cập nhật phần phụ thuộc

Hãy ghi nhớ ý tưởng về lập phiên bản ngữ nghĩa (semver) . Đây là cách thực hành lập phiên bản chương trình theo cách MAJOR.MINOR.PATCH. Phiên bản chính mới biểu thị những thay đổi đột phá, phiên bản nhỏ mới biểu thị chức năng mới tương thích ngược và phiên bản vá lỗi mới biểu thị các bản sửa lỗi tương thích ngược.

Các thư viện JS có xu hướng tuân theo cách lập phiên bản ngữ nghĩa, nhưng số phiên bản chỉ phản ánh ý định và sự hiểu biết của tác giả. Họ có thể xuất bản một phiên bản nhỏ mới thực sự có sự thay đổi đột ngột hoặc có thể bạn đang sử dụng thư viện theo cách không mong muốn gây ra sự cố với phiên bản cập nhật.

Theo mặc định, npm và Yarn mong đợi các thư viện tuân theo cách lập phiên bản ngữ nghĩa. Khi bạn thêm thư viện bằng một trong hai, mục nhập trong package.json sẽ có dấu mũ ( ^ ) phía trước phiên bản:

 {
  "phụ thuộc": {
    "lodash": "^ 3.1.0"
  }
} 

Điều này có nghĩa là bạn sẽ chấp nhận các bản cập nhật phiên bản vá lỗi và nhỏ, nhưng không chấp nhận các bản cập nhật phiên bản lớn.

Để kiểm tra xem phần phụ thuộc của bạn có lỗi thời hay không, bạn có thể chạy npm đã lỗi thời :

Gói

 Vị trí mới nhất được mong muốn hiện tại
lodash 3.1.0 3.10.1 4.17.15 npm-test 

Khi bạn đang cập nhật, điều quan trọng nhất cần làm là đọc thay đổi của thư viện. Đây thường là cách hiệu quả nhất để tìm ra những thay đổi mà bạn đang mang lại, trong đó những thay đổi quan trọng nhất là phá vỡ các thay đổi.

Nếu bạn gặp phải trường hợp đáng tiếc khi cập nhật thư viện không có bảng thay đổi nhưng là mã nguồn mở, bạn có thể phải xem qua lịch sử cam kết để tìm ra điều gì đã thay đổi. Các dự án lớn hơn cũng có xu hướng có các blog cung cấp thêm thông tin chi tiết cho các phiên bản mới.

Phương pháp cập nhật gói tiêu chuẩn là sử dụng npm update , cập nhật tất cả các gói lên phiên bản mới nhất có thể chấp nhận được theo semver. Trong trường hợp này, bạn sẽ cập nhật Lodash lên phiên bản 3.10.1.

Mặc dù phiên bản 4.17.15 có sẵn, bạn sẽ không được cập nhật lên nó theo mặc định vì dấu mũ giới hạn bạn ở các bản cập nhật nhỏ và vá. Bạn cũng có thể chuyển các gói cụ thể vào lệnh nếu không muốn cập nhật tất cả các gói cùng một lúc.

Trong nhiều trường hợp, bạn sẽ muốn cập nhật lên phiên bản mới nhất hiện có, bất kể học kỳ được chỉ định. Rất tiếc, npm update không có cách nào để thực hiện việc này, vì vậy bạn sẽ cần sử dụng npm install [email protected] < / code>.

Để làm cho quá trình này hiệu quả hơn, đặc biệt là khi bạn có nhiều phụ thuộc, hãy cân nhắc sử dụng npm-check hoặc npm-check-Updates . Các công cụ CLI này cho phép bạn cập nhật theo cách tương tác và cung cấp thông tin hữu ích như liên kết đến trang web của dự án để bạn có thể dễ dàng kiểm tra các thay đổi.

 $ npm-kiểm tra

lodash 😎 MAJOR UP Đã có bản cập nhật lớn. https://lodash.com/
                      npm install --save  [email protected]  để chuyển từ 3.1.0 lên 4.17.15

Sử dụng npm-check -u để cập nhật tương tác.

$ npm-check -u
? Chọn gói để cập nhật.

 Cập nhật lớn Các thay đổi API có thể phá vỡ. Sử dụng thận trọng.
❯ ◯ lodash 3.1.0 ❯ 4.17.15 https://lodash.com/ 

Yarn thậm chí còn được tích hợp sẵn tính năng này. Chỉ cần chạy xơ nâng cấp-tương tác .

 $ nâng cấp sợi-tương tác
 Nhấn & lt; lên & gt; / & lt; xuống & gt; để chọn gói. Nhấn & lt; nhập & gt; để cài đặt.
 Nhấn & lt; trái & gt; / & lt; phải & gt; để chọn các phiên bản. Nhấn & lt; ctrl + c & gt; để hủy bỏ.

? Chọn gói bạn muốn nâng cấp. Phạm vi hiện tại / mới nhất

 & gt; lodash ◯ 3.1.0 ◯ 3.10.1 ◉ 4.17.15 

Yarn không có lệnh lỗi thời , vì vậy, nâng cấp-tương tác về cơ bản kết hợp lỗi thời cập nhật của npm thành một, mặc dù bạn cũng có thể sử dụng sợi lên .

Lưu ý rằng có một số khác biệt nếu bạn vẫn đang sử dụng Yarn v1. Lệnh nâng cấp là nâng cấp sợi thay vì nâng cấp sợi . Yarn v1 cũng có lệnh đã lỗi thời .

Tự động cập nhật

Ngoài ra còn có một sự thúc đẩy để hợp lý hóa quy trình cập nhật với các dịch vụ bên ngoài. Một số công cụ cho mục đích này bao gồm Gemnasium, Greenkeeper Dependabot , mặc dù chúng đã được mua lại hoặc tiếp nhận bởi GitLab , Snyk GitHub tương ứng.

Ý tưởng chung là có một dịch vụ giám sát sự phụ thuộc của dự án của bạn và thậm chí mở các yêu cầu kéo để cập nhật chúng. Họ cũng có thể cảnh báo bạn khi tìm thấy lỗ hổng bảo mật trong cây phụ thuộc của bạn. Đây là ảnh chụp màn hình của Dependabot PR được tạo bởi bản cập nhật bảo mật của GitHub.

Ảnh chụp màn hình Yêu cầu kéo Dependabot

 Ảnh chụp màn hình Yêu cầu kéo Dependabot

Những dịch vụ như thế này có thể giúp việc cập nhật thư viện của bạn dễ dàng hơn đáng kể vì bạn không cần phải nhớ tự làm như vậy.

Kết luận

Việc cập nhật thư viện có vẻ đơn giản trên bề mặt, nhưng bạn nên suy nghĩ kỹ về chiến lược cập nhật của mình trên cơ sở từng dự án. Một dự án có thể không bao giờ cần phải cập nhật lại, trong khi một dự án khác có thể kêu gọi sử dụng Dependabot, Snyk hoặc một dịch vụ khác để luôn cập nhật nhanh chóng. Hoặc có thể bạn ổn với cách tiếp cận đúng lúc, nơi bạn cập nhật các phần phụ thuộc khi bạn phát hiện ra các vấn đề. Trong mọi trường hợp, hãy đưa ra quyết định rõ ràng.

: Gỡ lỗi JavaScript dễ dàng hơn bằng cách hiểu bối cảnh

Gỡ lỗi mã luôn là một công việc tẻ nhạt. Nhưng bạn càng hiểu nhiều lỗi của mình thì bạn càng dễ sửa chúng hơn.

LogRocket cho phép bạn hiểu những lỗi này theo những cách mới và độc đáo. Giải pháp giám sát giao diện người dùng của chúng tôi theo dõi mức độ tương tác của người dùng với giao diện người dùng JavaScript của bạn để cung cấp cho bạn khả năng tìm ra chính xác những gì người dùng đã làm dẫn đến lỗi.

LogRocket ghi lại nhật ký bảng điều khiển, thời gian tải trang, tốc độ xếp chồng, yêu cầu / phản hồi mạng chậm với tiêu đề + nội dung, siêu dữ liệu trình duyệt và nhật ký tùy chỉnh. Hiểu tác động của mã JavaScript của bạn sẽ không bao giờ dễ dàng hơn thế!

.

Chia sẻ cái này:


Xem thêm những thông tin liên quan đến chủ đề javascript được cập nhật

Google Search Update Impacts, Reporting Delays, JavaScript SEO, Local, & Tiaras

alt

  • Tác giả: RustyBrick Barry Schwartz Search Engine Roundtable
  • Ngày đăng: 2018-10-19
  • Đánh giá: 4 ⭐ ( 5190 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: https:///www.SERoundtable.com/ - This week we had another big Google algorithm update, Google did not yet confirm it. Google said all sites are impacted by algorithm updates, even ones that didn’t see changes. Google talked to one site owner that got hit hard but an algorithm update, it is something you might find interesting to watch. Google Search Console has reporting delays again. Google said things they don’t document can change. Google said there is a huge opportunity in SEO for technical SEOs that know JavaScript. Google may or may not support web content in noscript tags. GoogleBot may or may not be able to scroll down your web pages. Google said never to use hashtags in URLs to load content. Google said they render over 98% of all pages they crawl but the JavaScript pages take longer. Google has fully deprecated the AJAX crawling scheme. Google may have a GoogleBot just to crawl favicons.. Google is really doing some wild things with people also search for. Google My Business added a quarter filter for data, and also lets you now filter by branded searches. Google My Business video upload is currently broken. Google local panels now show products and services. Google My Business added a way to clear all attributes. Google is showing large slideshow images for the local pack. Google My Business added the map near the address edit section. Google said 46% of queries have local intent. Google conversion answers now shoe the formula. I explained the reason I am wearing the tiara is because after I won the US Search Personality Award this week. That was this first week in search at the Search Engine Roundtable.

    October 16, 2018 Google Search Algorithm Update : https://www.seroundtable.com/google-search-algorithm-update-26533.html
    Google Search Algorithm Updates Impact Sites That Didn't Have Ranking Changes : https://www.seroundtable.com/google-search-algorithm-updates-impact-all-sites-26523.html
    Google Listens & Responds To A Site That Lost 60% Of Their Traffic After An Algorithm Update : https://www.seroundtable.com/watch-google-listen-algorithm-update-26547.html
    Google Search Console Pipeline Issues Cause Reporting Delays : https://www.seroundtable.com/google-search-console-delay-26543.html
    Google: If It Is Not Documented, It Can Change Over Time : https://www.seroundtable.com/google-not-documented-change-26516.html
    Google: Huge Opportunity In Knowing JavaScript For Technical SEO : https://www.seroundtable.com/google-knowing-javascript-for-technical-seo-26518.html
    Google Supports Noscript Tag For Images But Not Sure About Web Content? : https://www.seroundtable.com/google-supports-noscript-tag-26536.html
    Is GoogleBot Able Scroll Down Your Page? : https://www.seroundtable.com/googlebot-scroll-26539.html
    Google: Do Not Use Hashtags In URLs : https://www.seroundtable.com/google-no-hashtags-in-urls-26537.html
    Google: We Render 98% Of Crawled Pages But It Can Take Weeks : https://www.seroundtable.com/google-render-slow-26538.html
    Google Has Fully Deprecated AJAX Crawling Scheme : https://www.seroundtable.com/google-fully-deprecated-ajax-crawling-scheme-26530.html
    GoogleBot Favicon: Google Has A New Favicon Crawler : https://www.seroundtable.com/google-favicon-crawler-26522.html
    Google Again Tests Favicons In Search Results Snippets : https://www.seroundtable.com/google-favicons-in-search-results-snippets-26517.html
    Google People Also Search For Changing Things Up : https://www.seroundtable.com/google-people-also-search-26531.html
    Google People Also Search In Local Search Results : https://www.seroundtable.com/google-local-search-people-also-search-for-26514.html
    Google My Business Insights Queries Report One Quarter Date Range Available : https://www.seroundtable.com/google-my-business-insights-queries-one-quarter-26521.html
    Google My Business Insights Shows Branded Searches Now : https://www.seroundtable.com/google-my-business-insights-branded-searches-26545.html
    Google My Business Video Upload Not Working: Server Reject Error : https://www.seroundtable.com/google-my-business-video-upload-server-reject-error-26544.html
    Google Local Panel Shows Products & Services Section : https://www.seroundtable.com/google-local-panel-products-services-section-26532.html
    New Google My Business Clear Option For Attributes : https://www.seroundtable.com/google-my-business-clear-attributes-26515.html
    Google Tests Large Slideshow Images For Local Pack Results : https://www.seroundtable.com/google-slideshow-images-local-pack-results-26540.html
    Google My Business Dashboard Adds Map To Address : https://www.seroundtable.com/google-my-business-adds-map-26524.html
    Did Google Say 46% Of Searches Have Local Intent? : https://www.seroundtable.com/google-46-of-searches-have-local-intent-26529.htmla
    Google Search Calculator Shows Formulas For Conversions : https://www.seroundtable.com/google-search-calculator-formulas-26528.html
    Me Wearing A Tiara : https://www.seroundtable.com/photos/barry-schwartz-tiara-26542.html

Bật, tắt JavaScript trên Chrome, Cốc Cốc, Firefox, Edge, Opera, Safari

  • Tác giả: quantrimang.com
  • Đánh giá: 5 ⭐ ( 2817 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Biết cách bật/tắt JavaScript sẽ giúp bạn chủ động khi làm việc trên trình duyệt. Hãy cùng theo dõi cách tắt và bật JavaScript trên Chrome dưới đây nhé, cũng khá đơn giản thôi.

5 tính năng mới của ES11

  • Tác giả: freetuts.net
  • Đánh giá: 3 ⭐ ( 9757 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong bài viết này chúng ta sẽ tìm hiểu những tính năng mới nhất cảu ES11 nhé, đây là bản update của Javascript trong năm 2020 vừa mới cập nhật

Nút Javascript không cập nhật trường

  • Tác giả: coder-solution-vn.com
  • Đánh giá: 3 ⭐ ( 2560 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

JavaScript Cập nhật form mà không cần refresh

  • Tác giả: www.javascriptbank.com
  • Đánh giá: 3 ⭐ ( 4737 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hiệu ứng JavaScript này dùng để cập nhật tổng giá tiền trên một ...JavaScript Cập nhật form mà không cần refresh - Cập nhật form mà không cần refresh - Ngôn ngữ: tiếng Việt

Cập nhật JavaScript làm được gì và học JavaScript có khó không?

  • Tác giả: vuongchihung.com
  • Đánh giá: 4 ⭐ ( 7696 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Chào đa số những bạn độc giả thân mến, là một người hay tìm mua online trên mạng nên tôi dành thời gian Phân tích đầy đủ về những sản phẩm mà mình định tậu

Các bản Cập Nhật cho thư viện Windows cho JavaScript

  • Tác giả: support.microsoft.com
  • Đánh giá: 4 ⭐ ( 4613 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Mô tả các vấn đề đã được khắc phục trong từng phiên bản của thư viện Windows cho JavaScript.

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  SQL DROP COLUMN dành cho người mới bắt đầu - thả một cột trong sql