Tổng quan về Javascript

Hãy cùng xem Javascript có gì đặt biệt, nó được dùng làm gì và sau khi hoàn thành khóa học thì chúng ta có thể làm được những ứng dụng gì với Javascript nhé.

Javascript là gì?

Đầu tiên thì JavaScript được tạo ra để làm cho website có thể tương tác được với người dùng mà thôi.

Những đoạn code trong ngôn ngữ này được gọi là scripts. Chúng có thể được viết ngay trong file HTML và sẽ chạy khi trang HTML được load.

Trình duyệt (browser) của bạn như là Chrome, Firefox, hay Safari, IE.... sẽ tự động compile và chạy những đoạn mà scripts này mà bạn sẽ không cần phải cài thêm thư viện sdk hay công cụ nào khác.

Đừng nhầm lẫn Javascript và Java, thật sự chúng là 2 ngôn ngữ lập trình hoàn toàn khác nhau.

Tại sao chọn Javascript?

Ban đầu Javascript được tạo ra với tên gọi LiveScript, nhưng vào thời điểm ấy, 1 ngôn ngữ lập trình khá nổi tiếng, làm mưa làm gió có tên là Java, nên mới đua đòi ăn theo như các vlog nhảm hiện tại, đặt lại tên là JavaScript, mong là cũng nổi tiếng như thèn anh :D.

Bất kỳ một băng nhóm xã hội đen nào cũng có trùm bảo kê, để nhóm đó phát triển theo đúng luật lệ, thèo nào vô mà láo nháo là under cut :D. JavaScript cũng vậy, đồng hành với sự phát triển của ngôn ngữ là một bộ các đặc tả được gọi là ECMAScript, tổ chức xây dựng các đặc tả này bao gồm các nhà phát triển của các ông lớn như Facebook, Google, Microsoft... có tên gọi TC39, mà ai muốn dùng phải tuân theo.

Thời nay, khái niệm Javascript chỉ có thể chạy trong trình duyệt (browser) không còn đúng nữa, nó có thể chạy ở server (dùng làm backend - NodeJS), làm ứng dụng trên mobile (React Native, Vue Native), làm ứng dụng trên Desktop (Electron). Tóm lại Javascript có thể chạy trên tất cả thiết bị, miễn là thiết bị đó có cài đặt 1 công cụ gọi là the JavaScript engine để có thể biên dịch và thực thi mã nguồn Javascript.

Lúc đầu mình có nói là code Javascript có thể chạy trên trình duyệt mà không cần cài thêm bất kỳ công cụ nào. Nó bị ngược ngược với ý trên đúng không, thật ra mình không có chém gió đâu nhé, mặc định mỗi trình duyệt đều được nhúng sẵn một Javascript engine rồi, một số nơi cũng còn được gọi là JavaScript virtual machine.

Một vài ví dụ về Javascript engine trên trình duyệt:

  • V8 – trong Chrome và Opera.
  • SpiderMonkey – trong Firefox.
  • IE thì có TridentChakra.
  • ChakraCore dùng cho Microsoft Edge.
  • NitroSquirrelFish cho Safari.
  • vân vân và mây mây... Các bạn tìm hiểu thêm nhé.

Cố gắng nhớ những engine trên nhé, lỡ đâu có người hỏi thì còn biết mà chém. Có ai đó nói chức năng XXX được hỗ trợ trong engine V8 thì chắc chắn nó dùng được trong trình duyệt Chrome và Opera, còn các trình duyệt khác thì hên xui.

Javascript engine hoạt động như thế nào?

Để mà tìm hiểu chi tiết thì chắc mình cũng không đủ trình mà nói hết được, nói 1 cách đơn giản và dễ hình dung nhất thôi. Chỉ gồm có 3 bước thôi:

  1. Javascript engine (được nhúng trong trình duyệt) sẽ đọc các đoạn code Javascript.
  2. Tiếp theo nó sẽ biên dịch ra mã máy (cái mà máy tính có thể hiểu được) - 0110 gì đó.
  3. Máy tính sẽ đọc các mã máy được dịch ra và thực thi thôi.

Nói thì đơn giản vậy thôi chứ nó phức cmn tạp hơn bạn tưởng đấy nhé, ở mỗi bước thì gồm nhiều công đoạn, quá trình nhỏ để tối ưu quá trình xử lý, cache lại những đoạn mã đã được dịch trước đó để dùng lại...

Javascript trong trình duyệt có thể làm được gì?

Có thể nói Javascript in-browser rất an toàn dành cho bạn. Nó không được phép truy cập vào bộ nhớ hay CPU như cách mà ban đầu nó được tạo ra - chỉ để cho người dùng tương tác với website.

Mình muốn nhấn mạnh là Javascript in-browser nhé, vì việc nó có thể truy cập vào bộ nhớ hay CPU, thao tác với file trên hệ thống hay không còn phụ thuộc vào môi trường mà mã Javascript đang được thực thi. Ví dụ môi trường Node.js cho phép JavaScript có thể đọc/ghi file, thực hiện các tác vụ với phần cứng, network....

Tóm lại in-browser JavaScript có thể:

  • Thao tác với HTML: thêm, sửa xóa...
  • Tương tác với người dùng website: xử lý click chuột, di chuyển con trỏ, nhấn phím...
  • Gửi yêu cầu (request) đến server, tải và upload các tập tin...
  • Lưu trữ dữ liệu trên trình duyệt như cookies, local storage...

Javascript trong trình duyệt không thể làm gì?

Javascript trong trình duyệt có nhiều hạn chế vì sự an toàn của chính bạn và người thân, điều gì sẽ xảy ra nếu bạn truy cập một trang web và trên đó có các đoạn mã để xử lý file trong máy tính của bạn, đúng không? Nó sẽ ngăn chặn không cho hacker mũ đen thực hiện các ý đồ đen tối từ việc lấy cắp thông tin cá nhân đến việc phát tán vi cmn rút lên thiết bị của bạn.

Sau đây là những hạn chế của in-browser Javascript:

  • Nó không thể đọc/ghi tập tin trên ổ đĩa cứng, không thể thực thi 1 chương trình, không có quyền truy cập vào các chức năng của hệ điều hành.

    Nhiều trình duyệt hiện đại (hỗ trợ HTML5) cho phép Javascript làm việc với file nhưng rất hạn chế, và chỉ được phép khi người dùng có hành động cụ thể nào đó, ví dụ như người dùng kéo thả 1 tập tin vào thẻ <input> chẳng hạn.

    Ngoài ra, in-browser Javascript còn có thể tương tác với camera/microphone... nhưng nó phải được sự cho phép của người dùng.

  • Một điểm hạn chế nữa là 2 tabs hay cửa sổ trình duyệt khác nhau thì không biết gì về nhau. Điều đó chỉ có thể khi bạn dùng Javascript để mở 1 trang web khác. Nhưng kể cả trong trường hợp này mà trang web bạn mở khác domain, khác giao thức, hay khác cổng thì cũng không được nhé. Hay còn được gọi là Same Origin Policy.

    Hạn chế này cũng để giúp an toàn cho bạn, một đoạn mã Javascript từ một trang web bất kỳ http://anysite.com không có quyền truy cập hay biết thông tìn gì về một trang web khác domain của nó như http://gmail.com.

Nhấn mạnh là những hạn chế trên chỉ có trên in-browser Javascript. Điều đó không đúng với Javascript chạy trên các môi trường khác ngoài trình duyệt nhé.

Những ngôn ngữ được phát triển trên nền tảng Javascript

Javascript ban đầu được tạo ra chỉ trong 10 ngày, mà bạn thấy đó, chỉ có thể là người có võ công cái thế mới học xong 1 môn võ công trong vài ngày mà thôi, nên Javascript có khá là nhiều bug và sida hơn bạn tưởng.

Vì vậy có nhiều nhà hảo tâm, xây dựng lên các ngôn ngữ khác trên nền tảng Javascript, để giúp code đọc dễ hơn, có cấu trúc chuẩn hơn, dể maintain và sửa lỗi, cũng như là đi kịp thời đại, tất nhiên là cũng để làm màu nữa.

Nhưng cho dù thế nào đi chăng nữa, Javascript engine trên trình duyệt chỉ hiểu được code Javascript, cho nên cuối cùng, code của các ngôn ngữ kia có cao siêu đến mấy cũng phải được chuyển đổi thành code Javascript thôi.

Sau đây là một số ngôn ngữ được xây dựng trên nền tảng Javascript:

  • CoffeeScript trông có vẻ không đắng như cà phê đâu, mà đây là một ngôn ngữ khá ngọt ngào trên nền tảng JavaScript. Nó cung cấp một cú pháp ngắn gọn hơn, có thể viết code rõ ràng và minh bạch hơn.
  • TypeScript một công cụ tuyệt vời được phát triển bởi Microsoft, nó tập trung vào giải quyết vấn đề strict data typing trong Javascript, đơn giản hóa việc phát triển và hổ trợ các hệ thống phức tạp, cồng kềnh của Javascript.

Còn nhiều nhưng mà mình cũng chẳng biết nó là cái quái gì mà nói nữa. Dù gì thì nó cũng được chuyển đổi sang mã Javascript. Nên trước hết, chúng ta hãy trao dồi kiến thức về Javascript trước đã.

Tổng kết

  • Javascript ban đầu được tạo ra để sử dụng trên trình duyệt mà thôi, nhưng hiện tại nó được ứng dụng trong khá nhiều lĩnh vực, miễn là thiết bị có cài đặt Javascript engine là mã Javascript có thể chạy được.
  • Bên cạnh đó cũng còn khá nhiều ngôn ngữ khác được xây dựng trên nền tảng Javascript. Nếu bạn có thời gian, hãy tìm hiểu những thú vị của chúng. Còn bây giờ, cùng học tiếp những bài học tiếp theo về Javascript nhé.