Skip to content

Commit b5da15d

Browse files
committed
Sync with upstream @ 633db6f
2 parents 1f7b5f9 + 633db6f commit b5da15d

File tree

669 files changed

+11027
-8913
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

669 files changed

+11027
-8913
lines changed

1-js/01-getting-started/1-intro/article.md

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
# Mở đầu về Javascript
22

3-
Hãy cùng xem Javascript có gì đặc biệt, chúng ta có thể hoàn thành những gì với nó, và những công nghệ kết hợp tốt với ngôn ngữ này.
3+
Hãy xem JavaScript có gì đặc biệt, chúng ta có thể đạt được gì với nó và những công nghệ khác hoạt động tốt thế nào với nó.
44

55
## JavaScript là gì?
66

7-
*JavaScript* ban đầu được tạo ra để *"make web pages alive"*.
7+
*JavaScript* ban đầu được tạo ra để "làm cho các trang web trở nên sống động".
88

99
Các chương trình trong ngôn ngữ này được gọi là *kịch bản (scripts)*. Chúng có thể được viết ngay trong HTML của trang web và chạy khi tải trang.
1010

1111
Các tập lệnh (scripts) được cung cấp và thực thi dưới dạng văn bản thuần túy. Chúng không cần chuẩn bị hay biên dịch để có thể chạy được.
1212

13-
Ở khía cạnh này, JavaScript rất khác với ngôn ngữ lập trình có tên là [Java](https://en.wikipedia.org/wiki/Java_(programming_language)).
13+
Ở khía cạnh này, JavaScript rất khác với ngôn ngữ lập trình có tên là [Java](https://vi.wikipedia.org/wiki/Java_(ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh)).
1414

15-
```smart header="Vì sao lại gọi là <u>Java</u>Script?"
16-
Khi Javascript được tạo ra, ban đầu nó có một cái tên khác: "LiveScript". Nhưng lúc này Java đang rất phổ biến, vì vậy người ta đã quyết định rằng đặt một ngôn ngữ mới là "em trai" của Java sẽ có ích.
15+
```smart header="Vì sao nó được gọi là <u>Java</u>Script?"
16+
Khi Javascript được tạo ra, ban đầu nó có một cái tên khác: "LiveScript". Nhưng lúc đó Java đang rất phổ biến, vì vậy người ta đã quyết định rằng đặt một ngôn ngữ mới là "em trai" của Java sẽ có ích.
1717
18-
Nhưng với sự phát triển của mình, JavaScript đã trở thành một ngôn ngữ hoàn toàn độc lập, với những đặc điểm kỹ thuật riêng của mình được gọi là [ECMAScript](http://en.wikipedia.org/wiki/ECMAScript), và bây giờ nó chẳng liên quan gì đến Java cả.
18+
Nhưng với sự phát triển của mình, JavaScript đã trở thành một ngôn ngữ hoàn toàn độc lập, với những đặc điểm kỹ thuật riêng của mình được gọi là [ECMAScript](https://vi.wikipedia.org/wiki/ECMAScript), và bây giờ nó chẳng liên quan gì đến Java cả.
1919
```
2020

2121
Ngày nay, JavaScript không những có thể thực thi trên trình duyệt, mà còn trên cả máy chủ (server), hoặc trên bất cứ nơi nào có chương trình tên là [the JavaScript engine](https://en.wikipedia.org/wiki/JavaScript_engine).
@@ -24,9 +24,9 @@ Trình duyệt đã có sẵn một Javascript engine đôi khi được gọi l
2424

2525
Những engine khác nhau thì sẽ có những "tên mã" khác nhau. Chẳng hạn:
2626

27-
- [V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- trong Chrome và Opera.
27+
- [V8](https://vi.wikipedia.org/wiki/Chrome_V8) -- trong Chrome và Opera.
2828
- [SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- trong Firefox.
29-
- ...Có một số tên mã khác là "Trident" và "Chakra" cho những phiên bản khác nhau của IE, "ChakraCore" cho Microsoft Edge, "Nitro" và "SquirrelFish" cho Safari, etc.
29+
- ...Có một số tên mã khác như "Chakra" cho IE, "ChakraCore" cho Microsoft Edge, "Nitro" và "SquirrelFish" cho Safari v.v.
3030

3131
Nên ghi nhớ các thuật ngữ trên bởi vì chúng được sử dụng khá nhiều trong các bài viết dành cho nhà phát triển (developer) trên Internet, và cả chúng ta. Ví dụ, nếu "tính năng X được hỗ trợ bởi V8", vậy nó có lẽ sẽ hoạt động trên Chrome và Opera.
3232

@@ -38,22 +38,22 @@ Engine khá phức tạp, tuy nhiên có thể hiểu đơn giản như sau:
3838
2. Tiếp theo nó chuyển đổi ("biên dịch") tập lệnh sang mã máy.
3939
3. Và sau đó mã máy chạy, khá nhanh.
4040
41-
Engine đều áp dụng tối ưu hóa ở các quy trình. Nó thậm chí còn xem tập lệnh được biên dịch khi đang chạy, phân tích dữ liệu chảy qua nó và áp dụng tối ưu hóa cho mã máy. Vì vậy tập lệnh có tốc độ khá nhanh sau khi được hoàn tất.
41+
Engine áp dụng tối ưu hóa ở mỗi bước của quá trình. Nó thậm chí còn theo dõi tập lệnh đã biên dịch khi chạy, phân tích dữ liệu chạy qua nó và tối ưu hóa hơn nữa mã máy dựa trên kiến thức đó.
4242
```
4343

4444
## JavaScript có thể làm gì trong trình duyệt?
4545

4646
Javascript hiện đại là một ngôn ngữ lập trình "an toàn". Nó không cung cấp quyền truy cập cấp thấp vào bộ nhớ hay CPU, bởi vì ban đầu nó được tạo ra cho trình duyệt vốn dĩ không yêu cầu những điều đó.
4747

48-
Sức mạnh của Javascript phụ thuộc rất lớn vào môi trường mà nó đang hoạt động. Chẳng hạn, [Node.js](https://wikipedia.org/wiki/Node.js) hỗ trợ các hàm giúp cho Javascript có thể đọc/ghi các tập tin tùy ý, thực hiện các yêu cầu mạng, etc.
48+
Sức mạnh của Javascript phụ thuộc rất lớn vào môi trường mà nó đang hoạt động. Chẳng hạn, [Node.js](https://vi.wikipedia.org/wiki/Node.js) hỗ trợ các hàm giúp cho Javascript có thể đọc/ghi các tập tin tùy ý, thực hiện các yêu cầu mạng, etc.
4949

5050
Javascript trong trình duyệt có thể làm mọi thứ có liên quan đến thao tác của trang web, tương tác với người dùng, và máy chủ web (webserver).
5151

5252
Ví dụ, JavaScript trong trình duyệt có khả năng:
5353

5454
- Thêm HTML mới vào trang, thay đổi nội dung có sẵn, sửa đổi phong cách (styles).
5555
- Phản ứng với các hành động của người dùng, chạy khi nhấp chuột, chuyển động của con trỏ, nhấn phím.
56-
- Gửi yêu cầu qua mạng đến các máy chủ từ xa, tải xuống và tải lên file (cái gọi là [AJAX](https://en.wikipedia.org/wiki/Ajax_(programming)) và công nghệ [COMET](https://en.wikipedia.org/wiki/Comet_(programming)) ).
56+
- Gửi yêu cầu qua mạng đến các máy chủ từ xa, tải xuống và tải lên file (cái gọi là [AJAX](https://vi.wikipedia.org/wiki/Ajax_(l%E1%BA%ADp_tr%C3%ACnh)) và công nghệ [COMET](https://en.wikipedia.org/wiki/Comet_(programming))).
5757
- Lấy và đặt cookie, đặt câu hỏi cho người truy cập, hiện tin nhắn.
5858
- Ghi nhớ dữ liệu ở phía máy khách ("lưu trữ cục bộ - local storage").
5959

@@ -63,11 +63,11 @@ Nhiều tính năng của Javascript trong trình duyệt bị giới hạn vì
6363

6464
Một số hạn chế có thể kể là:
6565

66-
- Javascript trên trang web không thể đọc/ghi các tập tin tùy ý, sao chép hoặc thực thi một chương trình. Nó cũng không có cách nào trực tiếp truy cập vào các hàm hệ thống của Hệ điều hành.
66+
- JavaScript trên một trang web không thể đọc/ghi các tệp tùy ý trên đĩa cứng, sao chép chúng hoặc thực thi các chương trình. Nó không có quyền truy cập trực tiếp vào các chức năng của hệ điều hành.
6767

6868
Nhiều trình duyệt hiện đại cho phép làm việc với tập tin, nhưng bị giới hạn và chỉ được truy cập nếu như người dùng thực hiện một hành động nhất định nào đó, ví dụ như "thả" các tập tin vào cửa sổ trình duyệt hoặc chọn chúng qua thẻ `<input>`.
6969

70-
Có nhiều cách để tương tác với camera/microphone và thiết bị khác, nhưng chúng yêu cầu sự cho phép rõ ràng của người dùng. Vì vậy, một trang web hỗ trợ Javascript sẽ không bật lén camera, quan sát và gửi thông tin cho [NSA](https://en.wikipedia.org/wiki/National_Security_Agency).
70+
Có nhiều cách để tương tác với camera/microphone và thiết bị khác, nhưng chúng yêu cầu sự cho phép rõ ràng của người dùng. Vì vậy, một trang web hỗ trợ Javascript sẽ không bật lén camera, quan sát và gửi thông tin cho [NSA](https://vi.wikipedia.org/wiki/C%C6%A1_quan_An_ninh_Qu%E1%BB%91c_gia_(Hoa_K%E1%BB%B3)).
7171
- Các tab/cửa sổ nhìn chung không biết gì về nhau. Thỉnh thoảng có, ví dụ như một cửa sổ dùng Javascript để mở cửa sổ khác. Nhưng kể cả như vậy, JavaScript từ trang này vẫn không thể can thiệp vào trang kia nếu như chúng đến từ tên miền, giao thức hoặc port khác.
7272

7373
Cái này được gọi là "Same Origin Policy". Để làm việc với nó, *cả 2 trang web* cần phải đồng ý cho việc trao đổi dữ liệu và bao gồm cả các đoạn mã Javascript đặc biệt nhằm xử lí nó. Chúng ta sẽ nhắc đến trong phần hướng dẫn sau.
@@ -88,16 +88,12 @@ Có ít nhất *ba* điều tuyệt vời ở Javascript:
8888
+ Những điều đơn giản được thực hiện một cách đơn giản.
8989
+ Được hỗ trợ bởi tất cả các trình duyệt chính và được bật theo mặc định.
9090
```
91+
9192
Javascript là công nghệ trình duyệt duy nhất kết hợp cả 3 điều trên.
9293

9394
Đó là cách khiến cho Javascript khác biệt. Đó là cách tại sao nó là công cụ phổ biến nhất để tạo giao diện cho trình duyệt.
9495

95-
<<<<<<< HEAD
96-
Trong khi đang lên kế hoạch tìm hiểu một công nghệ mới, việc kiểm tra các quan điểm của nó là có lợi. Vì vậy, hãy chuyển sang các xu hướng hiện đại ảnh hưởng đến nó, bao gồm các ngôn ngữ mới và khả năng của trình duyệt.
97-
98-
=======
99-
That said, JavaScript also allows to create servers, mobile applications, etc.
100-
>>>>>>> 34e9cdca3642882bd36c6733433a503a40c6da74
96+
Điều đó nói rằng, JavaScript cũng cho phép tạo các ứng dụng di động, máy chủ v.v.
10197

10298
## Những ngôn ngữ "trên nền tảng" JavaScript
10399

@@ -115,10 +111,11 @@ Có thể kể đến một số ngôn ngữ:
115111
- [TypeScript](http://www.typescriptlang.org/) được tập trung cho việc "gõ dự liệu một cách nghiêm ngặt" nhằm đơn giản hóa việc phát triển và hỗ trợ các hệ thống phức tạp. Nó được phát triển bởi Microsoft.
116112
- [Flow](http://flow.org/) cũng thêm một vài cách gõ dữ liệu, nhưng theo một cách khác. Phát triển bởi Facebook.
117113
- [Dart](https://www.dartlang.org/) là một ngôn ngữ độc lập có engine riêng và có thể chạy trong môi trường khác ngoài trình duyệt, nó cũng có thể được dịch sang Javascript. Phát triển bởi Google.
114+
- [Brython](https://brython.info/) là một trình chuyển tiếp Python sang JavaScript cho phép viết các ứng dụng bằng Python thuần túy mà không cần JavaScript.
118115

119116
Sẽ có nhiều hơn số kể trên. Dĩ nhiên, ngay cả khi chúng ta sử dụng một trong những ngôn ngữ đó, chúng ta cũng nên biết Javascript để thực sự hiểu chúng ta đang làm gì.
120117

121-
## Tổng kết
118+
## Tóm tắt
122119

123120
- Javascript được tạo ra với mục đích ban đầu chỉ cho trình duyệt, nhưng bây giờ đã được sử dụng rộng rãi trên nhiều môi trường khác.
124121
- Ngày nay, Javascript có một vị trí khác biệt như là ngôn ngữ trình duyệt được sử dụng rộng rãi nhất với sự tích hợp đầy đủ với HTML/CSS.
Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,41 @@
1-
# Hướng dẫn và đặc điểm
1+
# Cẩm nang và đặc tả
22

3-
Đây là *tài liệu hướng dẫn*. Mục tiêu là giúp bạn học Javascript dần dần. Nhưng nếu đã làm quen cơ bản với Javascript, bạn nên cần một nguồn khác để học.
4-
## Đặc điểm
3+
Cuốn sách này là một *hướng dẫn*. Nó nhằm mục đích giúp bạn dần dần học ngôn ngữ. Nhưng một khi bạn quen với những thứ căn bản, bạn sẽ cần các nguồn khác.
54

6-
**Những đặc điểm của ECMA-262** chứa những thông tin chuyên sâu, chi tiết và chính thức nhất về Javascript.
7-
8-
Nhưng với việc được chính thức hóa, ban đầu nó khá là khó hiểu. Vì vậy, nếu bạn cần nguồn thông tin đáng tin cậy nhất về chi tiết của Javascript, đó sẽ là nơi thích hợp. Nhưng không phải để sử dụng hàng ngày.
5+
## Đặc tả
96

10-
Dự thảo mới nhất: <https://tc39.es/ecma262/>.
7+
[Đặc tả ECMA-262](https://www.ecma-international.org/publications/standards/Ecma-262.htm) chứa thông tin chuyên sâu, chi tiết và chính thức nhất về JavaScript. Nó xác định đặc điểm ngôn ngữ.
8+
9+
Nhưng với việc được chính thức hóa như vậy, thoạt đầu nó thật khó hiểu. Vì vậy, nếu bạn cần nguồn thông tin đáng tin cậy nhất về chi tiết ngôn ngữ, thì bản đặc tả là nơi phù hợp. Nhưng nó không phải để sử dụng hàng ngày.
10+
11+
Một phiên bản đặc tả mới được phát hành hàng năm. Giữa các bản phát hành này, bản nháp đặc tả mới nhất có tại <https://tc39.es/ecma262/>.
1112

1213
Để đọc về những tính năng mới nhất, bao gồm cả các tính năng gần như tiêu chuẩn (được gọi là "stage-3") xem tại: <https://github.com/tc39/proposals>.
1314

1415
Ngoài ra, nếu bạn đang phát triển cho trình duyệt, thì có các thông số kỹ thuật khác được đề cập trong [phần thứ hai](info:browser-environment) của hướng dẫn.
1516

1617
## Cẩm nang
1718

18-
- **Tài liệu tham khảo Javascript MDN (Mozilla)** là một tài liệu hướng dẫn với các ví dụ và thông tin khác gồm những thông tin chuyên sâu khá bổ ích về các hàm, phương thức (methods) etc.
19+
- **Tài liệu tham khảo Javascript MDN (Mozilla)** là một cẩm nang hướng dẫn với các ví dụ và thông tin khác. Nó rất tuyệt để lấy thông tin chuyên sâu về các hàm, phương thức riêng lẻ của ngôn ngữ v.v.
1920

20-
Bạn có thể tìm nó tại <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference>.
21+
Bạn có thể tìm thấy nó tại <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference>.
2122

22-
Tuy nhiên, sẽ tốt hơn nếu dùng internet để tìm kiến. Chỉ cần tìm "MDN [chỉ định]" trong câu truy vấn, ví dụ: <https://google.com/search?q=MDN+parseInt> để tìm hàm `parseInt` .
23+
Mặc dù, tốt nhất bạn nên sử dụng tìm kiếm trên Internet. Chỉ cần sử dụng "MDN [term]" trong truy vấn, ví dụ: <https://google.com/search?q=MDN+parseInt> để tìm kiếm hàm `parseInt`.
2324

2425

25-
- **MSDN**Tài liệu của Microsoft với khá nhiều thông tin, bao gồm Javascript Microsoft manual with a lot of information, including JavaScript (thường gọi là JScript). Nếu như cần tra cứu cụ thể về Internet Explorer, nên truy cập vào link này: <http://msdn.microsoft.com/>.
26+
- **MSDN**Cẩm nang của Microsoft với nhiều thông tin, bao gồm Javascript (thường được gọi là JScript). Nếu ai cần gì đó cụ thể cho Internet Explorer, tốt hơn nên đến đó: <http://msdn.microsoft.com/>.
2627

27-
Ngoài ra, chúng ta cũng có thể tìm kiếm trên internet bằng những từ khóa như: "RegExp MSDN" hoặc "RegExp MSDN jscript".
28+
Ngoài ra, chúng ta có thể tìm kiếm trên internet với các cụm từ như "RegExp MSDN" hoặc "RegExp MSDN jscript".
2829

2930
## Bảng tương thích
3031

31-
<<<<<<< HEAD
3232
JavaScript là một ngôn ngữ đang phát triển, các tính năng mới được bổ sung thường xuyên.
33-
=======
34-
- **MSDN** – Microsoft manual with a lot of information, including JavaScript (often referred to as JScript). If one needs something specific to Internet Explorer, better go there: <http://msdn.microsoft.com/>.
35-
>>>>>>> fb38a13978f6e8397005243bc13bc1a20a988e6a
3633

37-
Để xem sự hỗ trợ của nó giữa các trình duyệt và engine khác:
34+
Để xem sự hỗ trợ chúng giữa các engine dựa trên trình duyệt và các engine khác, hãy xem:
3835

39-
- <http://caniuse.com> - bảng tính năng hỗ trợ, chẳng hạn để xem engine nào hỗ trợ các hàm mã hóa hiện đại: <http://caniuse.com/#feat=cryptography>.
40-
- <https://kangax.github.io/compat-table> - bảng bao gồm các tính năng và các engine có hoặc không hỗ trợ các tính năng đó.
36+
- <http://caniuse.com> - các bảng hỗ trợ theo từng tính năng, ví dụ: để xem engine nào hỗ trợ các hàm mã hóa hiện đại: <http://caniuse.com/#feat=cryptography>.
37+
- <https://kangax.github.io/compat-table> - một bảng với các tính năng và các engine có hoặc không hỗ trợ các tính năng đó.
4138

42-
Tất cả những tài nguyên trên đều rất hữu ích trong phát triển thực tế, chúng bao gồm chi tiết về Javascript, các tính năng hỗ trợ,...
39+
Tất cả các tài nguyên này đều hữu ích cho việc phát triển trong đời thực, vì chúng chứa thông tin có giá trị về các chi tiết ngôn ngữ, sự hỗ trợ chúng v.v.
4340

44-
Nên nhớ tất cả những tài liệu trên (hoặc trang này) trong trường hợp bạn cần tìm hiểu sâu về các tính năng cụ thể.
41+
Vui lòng ghi nhớ những tài nguyên trên (hoặc trang này) trong các trường hợp bạn cần thông tin chuyên sâu về một tính năng cụ thể.

1-js/01-getting-started/3-code-editors/article.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ In practice, lightweight editors may have a lot of plugins including directory-l
3232
The following options deserve your attention:
3333

3434
- [Atom](https://atom.io/) (cross-platform, free).
35+
- [Visual Studio Code](https://code.visualstudio.com/) (cross-platform, free).
3536
- [Sublime Text](http://www.sublimetext.com) (cross-platform, shareware).
3637
- [Notepad++](https://notepad-plus-plus.org/) (Windows, free).
3738
- [Vim](http://www.vim.org/) and [Emacs](https://www.gnu.org/software/emacs/) are also cool if you know how to use them.

0 commit comments

Comments
 (0)