Hướng dẫn how is javascript run by the browser? - javascript được chạy bởi trình duyệt như thế nào?
Đã hỏi 11 năm, 7 tháng trước 11 years, 7 months ago Đã xem 31k lần 31k times Tôi đang cố gắng tìm hiểu xem các trình duyệt web có sử dụng trình thông dịch để thực thi JavaScript hay một số loại trình biên dịch hay không. Người ta biết rằng các ngôn ngữ kịch bản được giải thích không được biên soạn; Tuy nhiên, có JScriptCompiler có thể biên dịch JavaScript thành MSIL. Điều này khiến tôi tự hỏi liệu IE, FF, Chrome, v.v. Bất cứ ai cũng có thể trích dẫn phương thức cụ thể trong đó các trình duyệt chạy JavaScript?
JMAX 25.6K12 Huy hiệu vàng67 Huy hiệu bạc87 Huy hiệu đồng12 gold badges67 silver badges87 bronze badges Đã hỏi ngày 15 tháng 3 năm 2011 lúc 19:51Mar 15, 2011 at 19:51 1 Trong quá khứ, JavaScript đã được giải thích - và không có gì hơn. Trong hai năm qua, các trình duyệt đã triển khai các công cụ JavaScript mới, cố gắng biên dịch một số phần mã, để tăng tốc JavaScript.
Để biết thêm thông tin về động cơ của Chrome, bạn sẽ muốn đọc:
Và cho WebKit (Safari):
Không chắc chắn những gì đã được (hoặc là) được thực hiện trên các trình duyệt khác - nhưng tôi cho rằng cùng một loại điều tồn tại, hoặc sẽ tồn tại.
Đã trả lời ngày 15 tháng 3 năm 2011 lúc 19:55Mar 15, 2011 at 19:55
Pascal Martinpascal MartinPascal MARTIN 389K77 Huy hiệu vàng647 Huy hiệu bạc656 Huy hiệu Đồng77 gold badges647 silver badges656 bronze badges 3 Đã trả lời ngày 15 tháng 3 năm 2011 lúc 19:57Mar 15, 2011 at 19:57
Các tập lệnh JavaScript thường được giải thích trong các trình duyệt web (không chắc chắn về Chrome và V8), nhưng ở đây và ở đó bạn có thể tìm thấy một số phần mềm độc lập có thể biên dịch nó ít nhiều chính xác. Ngôn ngữ này không nhanh như nhiều người khác và tốc độ và chức năng của anh ấy phụ thuộc vào động cơ trình duyệt. Đã trả lời ngày 15 tháng 3 năm 2011 lúc 19:58Mar 15, 2011 at 19:58
FrizifriziFrizi 2.8301 Huy hiệu vàng18 Huy hiệu bạc25 Huy hiệu đồng1 gold badge18 silver badges25 bronze badges Trong khi CSS đang được phân tích cú pháp và CSSOM được tạo, các tài sản khác, bao gồm các tệp JavaScript, được tải xuống. Điều này đang xảy ra nhờ
5. Thực thi JavaScriptVì vậy, sau khi chúng tôi nhận được tệp JavaScript từ máy chủ, mã được giải thích, biên dịch, phân tích cú pháp và thực thi. Máy tính không thể hiểu mã JavaScript, chỉ có trình duyệt mới có thể. Mã JS cần được dịch thành một cái gì đó mà máy tính có thể hoạt động và đây là công việc của Động cơ JavaScriptMột công cụ JavaScript (đôi khi còn được gọi là Các công cụ JavaScript thường được phát triển bởi các nhà cung cấp trình duyệt web và mọi trình duyệt chính đều có một. Chúng tôi đã nói rằng các trình duyệt được sử dụng nhiều nhất với ngày hôm nay là V8 V8 là động cơ JavaScript hiệu suất cao của Google. Nó được viết bằng C ++ và nó được sử dụng trong Chrome và trong Node.js, trong số những người khác. Nó thực hiện JavaScriptCore JavaScriptCore là công cụ JavaScript tích hợp cho WebKit và nó cung cấp năng lượng cho trình duyệt Safari, Mail và các ứng dụng khác được sử dụng trên MacOS. Nó hiện đang thực hiện Ecmascript như trong đặc tả ECMA-262. Ngoài ra, nó cũng được gọi là Chakra Chakra là một công cụ JavaScript được phát triển bởi Microsoft cho trình duyệt web Microsoft Edge và các ứng dụng Windows khác. Nó thực hiện Ecmascript 5.1 và có hỗ trợ một phần (phát triển) cho Ecmascript 6. Nó được viết bằng C ++. Spidermonkey Spidermonkey là động cơ JavaScript và Webass của Mozilla. Nó được viết bằng C ++, JavaScript và Rust và nó được sử dụng để cung cấp năng lượng cho Firefox, servo và các dự án khác. Ban đầu, động cơ JavaScript là phiên dịch đơn giản. Các trình duyệt hiện đại mà chúng ta sử dụng ngày nay có khả năng làm một cái gì đó gọi là Biên dịch trong quá trình biên dịch, một phần mềm có tên Giải thích Trong quá trình giải thích, trình thông dịch đang đi qua dòng mã JavaScript theo từng dòng và thực hiện nó một cách đúng đắn. Không có bản biên dịch nào diễn ra để không có mã đối tượng nào được tạo (đầu ra của mã được tạo bởi chính trình thông dịch, sử dụng các cơ chế nội bộ của nó). Các phiên bản cũ hơn của JavaScript Sử dụng loại thực thi mã này. Tổng hợp JIT Một khía cạnh rất quan trọng về biên dịch JIT là nó sẽ biên dịch mã nguồn thành các hướng dẫn mã máy của máy chạy. Điều này có nghĩa là mã máy kết quả được tối ưu hóa cho kiến trúc CPU của máy chạy. Nói một cách siêu đơn giản, ba quá trình này có thể được nối lại với:
Ngày nay, ranh giới giữa các điều khoản Thông báo tôi đã đề cập đến phiên bản cũ hơn và mới hơn của JavaScript. Các trình duyệt không hỗ trợ các phiên bản mới hơn của ngôn ngữ sẽ diễn giải mã trong khi các phiên bản sẽ sử dụng một số phiên bản JIT để thực thi mã (động cơ V8, Chakra JavaScriptcore và Spidermonkey đều sử dụng JIT). Sự thật là mặc dù JavaScript là một ngôn ngữ được giải thích (nó không cần biên dịch), nhưng hầu hết các trình duyệt ngày nay sẽ sử dụng tổng hợp JIT để chạy mã, thay vì giải thích thuần túy. Mã JavaScript được xử lý như thế nàoKhi mã JavaScript vào công cụ JavaScript, nó sẽ được phân tích cú pháp như bước đầu tiên. Điều này có nghĩa là mã được đọc và trong khi điều này đang xảy ra, mã được chuyển thành cấu trúc dữ liệu được gọi là Giả sử chúng ta có một tệp chứa một chương trình chỉ làm một điều và đó là để xác định một biến:
Nhập chế độ FullScreenen EXIT Mode FullScreen Đây là cách dòng mã siêu đơn giản cực kỳ đơn giản này trông như một cây cú pháp trừu tượng (tôi đang sử dụng @Babel/Parser-7.16.12): Nếu bạn muốn tự chuyển đổi một số JavaScript thành một cây cú pháp trừu tượng, bạn có thể sử dụng công cụ này. Kết quả của AST sau khi viết biến thể của tôi thực sự lớn hơn nhiều và có nhiều nút được ẩn trong ảnh chụp màn hình. Sau khi AST được xây dựng, nó được dịch thành mã máy và được thực thi ngay lập tức, vì JavaScript hiện đại sử dụng biên dịch đúng lúc. Việc thực hiện mã này sẽ được thực hiện bởi công cụ JavaScript, sử dụng một cái gì đó gọi là "ngăn xếp cuộc gọi".
Vật liệu giải quyết:
JavaScript chỉ chạy trong trình duyệt?Ngày nay, JavaScript có thể thực thi không chỉ trong trình duyệt mà còn trên máy chủ hoặc thực sự trên bất kỳ thiết bị nào có chương trình đặc biệt có tên là JavaScript Engine. Trình duyệt có một động cơ nhúng đôi khi được gọi là máy ảo JavaScript.JavaScript can execute not only in the browser, but also on the server, or actually on any device that has a special program called the JavaScript engine. The browser has an embedded engine sometimes called a “JavaScript virtual machine”.
JavaScript hoạt động như thế nào dưới mui xe?Tất cả bắt đầu bằng việc lấy mã JavaScript từ mạng.V8 phân tích mã nguồn và biến nó thành một cây cú pháp trừu tượng (AST).Dựa trên AST đó, trình thông dịch đánh lửa có thể bắt đầu thực hiện việc của nó và sản xuất mã byte.Tại thời điểm đó, động cơ bắt đầu chạy mã và thu thập phản hồi loại.
Làm thế nào để trình duyệt xử lý JavaScript và HTML?Từ các giải thích trước, trình duyệt đọc các byte RAW của tệp HTML từ đĩa (hoặc mạng) và biến nó thành ký tự.Các nhân vật được phân tích nhanh hơn vào mã thông báo.Ngay khi trình phân tích cú pháp đạt đến dòng, một yêu cầu được thực hiện để tìm nạp tệp CSS, Style.the browser reads raw bytes of the HTML file from the disk (or network) and transforms that into characters. The characters are further parsed into tokens. As soon as the parser reaches the line with , a request is made to fetch the CSS file, style.
Trình duyệt sử dụng JavaScript nào?Một trình duyệt đi kèm với một công cụ JavaScript chịu trách nhiệm thực hiện bất kỳ JavaScript nào có bên trong ứng dụng web (trang web).Ví dụ: Google Chrome sử dụng động cơ V8 JavaScript.JavaScript engine that is responsible to execute any JavaScript contained inside a web application (web page). For example, Google Chrome uses V8 JavaScript engine. |