Coffeescript là gì

  -  

Javascript là một ngôn ngữ lập trình. Spec mới nhất của nó là ES2016Javascript cần phải có Javascript engine để chạy: ví dụ V8 (của Chromium), Chakra (của MS Edge), SpiderMonkey (của Firefox),… có một cuộc chiến ngầm giữa mấy cái engine này đó đừng đùa


*

Node.js vs Browser (trình duyệt): cả 2 là runtime của Javascript, chứ không phải là một ngôn ngữ lập trình mới. Ở mỗi runtime thì có các Object riêng biệt cho nó. Ví dụ DOM API của browser, hay core module của Node.jsCoffeeScript, Typescript, Elm: là các ngôn ngữ sẽ được biên dịch về Javascript, bổ sung tính năng mà Javascript chưa có (do quá trình bổ sung cú pháp mới vào Javascript rất lâu, trải qua 5 bước)Babel : có thể coi nó là một compiler của chính Javascript, biên dịch ES6 (hay các proposal) về ES5 để chạy được trên hầu hết các trình duyệt

Phù. Một vài cái tên cần biết khi nói tới Javascript. Mọi người thấy có gì sai sót thì bổ sung giúp mình nha

11 Likes Lập trình web với ASP và Node js thangngoc89 (Khoa Nguyen) July 5, 2016, 4:54pm #2

cc Itachi_Citus giúp mình kiểm tra nhé. Mình viết bài này do thấy có nhiều nhầm lẫn quá



1 Like Itachi_Citus (Itachi Citus) July 5, 2016, 5:00pm #3 thangngoc89:

cc Itachi_Citus giúp mình kiểm tra nhé. Mình viết bài này do thấy có nhiều nhầm lẫn quá



Javascript là chuyên của thangngoc89 rồi còn gì, mình không hiểu sâu bằng đâu



.

Bạn đang xem: Coffeescript là gì

Bạn đang xem: Coffeescript Là Gì

2 Likes thangngoc89 (Khoa Nguyen) July 5, 2016, 5:58pm #4



Itachi_Citus:

Javascript là chuyên của thangngoc89 rồi còn gì

Không dám nhận. Mình chỉ mới hiểu sơ qua về Javascript. Còn nhiều cái vẫn thắc mắc. Context vẫn chưa hiểu rõ

1 Like Phan_Hoang (Phan Hoàng) July 7, 2016, 11:40am #5

Mình xin bổ sung theo góc độ của history:

1- JS được sinh ra để giúp các trang web trở nên động đậy (animation) và tương tác (interactive). Tên gốc của nó là EcmaScript (viết tắt là ES). Thế nên lúc đầu nó là ngôn ngữ dạng thông dịch. Specs mới nhất là ES8 (ES2017 http://www.2ality.com/2016/02/ecmascript-2017.html)

2- Ban đầu JS không cần engine gì để chạy cả vì lúc đó chỉ có mỗi browser cần parser JS code và JS lúc đó cũng đơn giản. Sau browser được chia thành các module: module parser JS (JS Engine), module parser HTML/CSS và render thành trang web (Gecko của Firefox, Webkit/Blink của Chrome), module UI (các nút back/…). Đa phần JS Engine giờ đều là JIT compiler, nên cho tốc độ thực thi rất tốt.

Xem thêm: Cách Chỉnh Full Màn Hình War, Cách Chơi Warcraft 3 Full Màn Hình

3- Node.JS là JS runtime environment, còn browser là app có khả năng chạy code JS. Gọi NodeJS là env vì nó có các thư viện, các biến môi trường mà nếu dùng code JS hoàn toàn có thể thay đổi, thêm mới, tương tác với môi trường được (NodeJS dùng v8 làm bộ compiler). Còn browser thì chỉ gọi là app thôi, và JS không chỉ làm việc với DOM API mà còn làm việc với File API (local storage, file upload), Geo API, History API (address bar),…

4- CoffeeScript, TypeScript, Elm thường được gọi là ngôn ngữ transpilation (chuyển đổi) vì level của TypeScript và JS là tương đương nhau, viết code JS trong TypeScript thì TS vẫn hiểu được. Còn compilation thường nói về việc chuyển sang ngôn ngữ bậc thấp hơn, ví dụ như JS Engine, nó chuyển code JS sang bytecode. Sự ra đời của những ngôn ngữ này bởi JS là loose-type nên code khá ngẫu hứng, khó check kiểu (type) -> chuyển sang các ngôn ngữ strong-type sẽ dễ code hơn, kiểm soát cũng dễ hơn. Ví dụ như #Kit, GWT sử dụng C# và Java sau đó transpile sang JS. Tương tự như vậy, CS, TS, Elm cũng giúp việc viết code strong-type (cú pháp gần tương tự JS nên dễ học hơn C#, Java), sau đó sẽ được transpile sang JS.

Xem thêm: Hướng Dẫn Lmht Mùa 11: Cách Chơi Shaco Đi Rừng Xuất Thần Nhập Quỷ

5- Babel: cũng là một transpilation tool, đồng thời là một polyfill giúp cho chuyển đổi các hàm mà ES6 có nhưng ES5 chưa có (những hàm này trên ES6 được viết bằng C++). Lý do là rất ít trình duyệt support full ES6 (trừ firefox) nên Babel sẽ cung cấp các hàm này viết bằng JS thuần.

Ngoài ra, để làm frontend các bạn cũng nên tìm hiểu thêm một số tool như:

Framework: AngularJS, VueJSTask Runner Tool: Gulp, Grunt giúp cho việc tự động hoá một số tác vụ perf cho app như: minimize JS, CSS (webpack), obfucate (uglyJS, …), làm sprite ảnh, ghép các file svg vào 1 file, …Một số Test FW (cả UnitTest lẫn Behaviour Test) như: Qunit, Mocha, Jasmine, PhantomJS …Lint check.…