• About
  • Advertise
  • Privacy & Policy
  • Contact
NQ NEWS
  • Kiến thức tổng hợp
    • Development
    • Deep Learning
    • Cloud Computing
    • Kiến thức bảo mật
    • Tin học văn phòng
  • Thủ thuật
    • Phần Mềm
    • Sửa lỗi máy tính
    • Bảo mật máy tính
    • Tăng tốc máy tính
    • Thủ thuật Wifi
  • Quản trị hệ thống
    • Giải pháp bảo mật
    • Mail Server
    • Mạng LAN – WAN
    • Máy chủ
    • Windows Server 2012
  • Tin tức
No Result
View All Result
  • Kiến thức tổng hợp
    • Development
    • Deep Learning
    • Cloud Computing
    • Kiến thức bảo mật
    • Tin học văn phòng
  • Thủ thuật
    • Phần Mềm
    • Sửa lỗi máy tính
    • Bảo mật máy tính
    • Tăng tốc máy tính
    • Thủ thuật Wifi
  • Quản trị hệ thống
    • Giải pháp bảo mật
    • Mail Server
    • Mạng LAN – WAN
    • Máy chủ
    • Windows Server 2012
  • Tin tức
No Result
View All Result
NQ NEWS
No Result
View All Result
Home Kiến thức tổng hợp Development

Làm quen với MithrilJS – Phần 1

@admiz by @admiz
21/04/2022
in Development
0
Làm Quen Với Mithriljs – Phần 1 60902ec9a4f01.jpeg

Mithril là gì?

Mithril là một JavaScript framework gọn nhẹ nhưng rất mạnh mẽ, được dùng để xây dựng các ứng dụng web một trang (Single Page Applications – SPA). Mithril được viết hoàn toàn bằng ES5, hỗ trợ xây dựng giao diện với Virtual DOM, cung cấp một hệ thống Routing và một số tiện ích khác như XHR, Etream…Tất cả gói gọn trong một tập tin JS nhỏ hơn 8KB gzip. Giao diện viết bằng Mithril có thể hoạt động trên tất cả trình duyệt từ IE9 mà không cần bất cứ Polyfill nào.

Mithril là tên một kim loại quý thường xuất hiện trong các game nhập vai (RPG). Từ này do tác giả J. R. R. Tolkien nghĩ ra và nó xuất hiện lần đầu tiên trong tác phẩm Chúa tể những chiếc nhẫn 😀

Tại sao lại sử dụng Mithril?

1. Nhẹ

Như đã nói ở trên, dung lượng của Mithril chỉ có 8KB gzip cho tất cả các tính năng. So sánh với React 16 (34.8KB gzip), Vue.js (20KB gzip), Angular, hay Ember thì Mithril gọn nhẹ hơn hẳn. Dung lượng nhẹ giúp giảm thời gian Download, đặc biệt là trên thiết bị di động với kết nối bèo bọt, đồng thời ít code hơn giảm thời gian Parse và Execute bên phía trình duyệt.

Tuy nhiên Mithril chưa hẳn là UI Framework nhẹ nhất, ít ra còn có Preact (3KB) hay RE:DOM (2KB).

2. Dễ tiếp thu

Bản thân Mithril được viết hoàn toàn bằng ES5, do đó bạn gần như không cần phải sử dụng bất cứ Transpiler nào như Babel hay TypeScript để sử dụng Mithril. Chỉ cần thêm đoạn sau vào tập tin HTML là mọi thứ đã sẵn sàng.

Mithril cũng không giới thiệu bất cứ khái niệm nào mới. Mọi thứ đều là JavaScript, không JSX, không Directive, không Custom Attribute, thành ra nếu bạn đã biết JavaScript thì bạn chỉ tốn khoảng vài tiếng đến 1 ngày là có thể nắm bắt Mithril.

3. Nhanh vừa phải

Theo Benchmark trên Website của Mithril thì hiệu suất của Mithril vượt trội so với Vue, React hay Angular nhưng so sánh với Preact, Inferno hay RE:DOM thì Mithril vẫn thuộc kèo dưới. Trên thực tế, Mithril nhanh vừa phải để được sử dụng bởi các công ty như Vimeo, Nike hay Memrise trong Game Guild Wars 2 hay các ứng dụng mã nguồn mở như Lichess hay Flarum.

Tác giả @lhorie có đôi lời thảo luận ở đây về chuyện so sánh các Framework, nếu có thời gian bạn nên đọc. Nhìn chung, tất cả Framework đều nhanh và đủ mạnh để xây dựng các ứng dụng phức tạp. Việc quyết định sử dụng Framework nào tùy thuộc vào trình độ, kinh nghiệm và khả năng thích ứng tiếp thu Framework mới trong team của bạn mà thôi. Mọi thứ có sẵn (Batteries Included) và dễ dàng tích hợp với thư viện thứ ba.

Tính năng ban đầu của Mithril là hỗ trợ xây dựng giao diện người dùng với Virtual DOM. Bên cạnh đó Mithril cũng có sẵn cơ chế Routing với hash (/#!/foo), QueryString (/?/foo) hay Pathnaname (/foo). Và để gửi AJAX Request lên Server, Mithril kèm theo một thư viện XHR nhỏ gọn. Ba thành phần này là vừa đủ để xây dựng một SPA. Nhưng nếu bạn muốn sử dụng các thư viện bên ngoài (và chắc chắn bạn sẽ cần) thì việc tích hợp chúng cũng rất dễ dàng, vì “Everything is just plain JavaScript.”

Bạn có thể đưa Redux hay MobX vào để quản lý State gắn Anime.js để hỗ trợ các Animation phức tạp hay tích hợp d3.js vào để vẽ đồ thị. Mithril cho phép (và không giới hạn) việc tiếp cận trực tiếp vào DOM Node (cùng khái niệm với ref trong React).

Cá nhân mình nghĩ, hướng tiếp cận này mang đến nhiều tự do cho lập trình viên, vì bạn có thể thoải mái chọn và tích hợp thư viện mà mình cần. So sánh với React, mỗi khi muốn dùng thư viện ngoài mình luôn nghĩ “chắc phải có một Wrapper của React cho cái này, hoặc phải viết sao cho nó giống React.” Điều này dẫn tới:

1. Giới hạn suy nghĩ của lập trình viên

2. Tăng thêm dung lượng cho ứng dụng

3. Tốn thời gian tìm hiểu Wrapper

4. Chưa chắc Wrapper đã hoạt động như mình mong muốn.

Bên cạnh “The three pillars of a SPA” đã nói ở trên, Mithril còn có một thư viện Stream nho nhỏ tương thích với chuẩn của Fantasy Land. Bạn có thể dùng thư viện này để viết ứng dụng theo kiểu Reactive (nghĩ như RxJS nhưng nhẹ hơn). Cuối cùng, Mithril còn có thêm một thư viện test “cây nhà lá vườn” gọi là Ospec.

4. Không chỉ dành cho SPAs

Cái này không hẳn là ưu điểm của riêng Mithril vì đa số các Framework khác cũng làm được. Với Mithril bạn có thể gắn ứng dụng vào một DOM Node đã có sẵn, dạng như:

render(Widget, document.getElementById(‘js-widget’))

Điều này hữu ích với các Website có thiết kế “truyền thống” với một phần hay toàn bộ view được trả về từ phía Backend Server. Một ví dụ là khi dòng đời đưa đẩy bạn phải bảo trì một Website PHP 5.2 viết từ hồi tận thế 2012. Bằng cách này bạn có thể quá độ từ “truyền thống” sang thiết kế “nửa nạc nửa mỡ” với một phần của Website là ứng dụng JavaScript tương tác với API ở phía Server.

Giới thiệu cho dài mà không khoe code cũng bằng thừa. Thay vì TodoMVC, mình sẽ viết một ứng dụng bán hàng đơn giản. Tính năng bao gồm: hiển thị danh sách hàng, thêm hàng vào giỏ (cart), và xem giỏ hàng.

– Virtual node (vnode)

Trước tiên, cần nói về Vnode. Với Mithril thì Vnode là một JavaScript Object được dùng để thể hiện các DOM Elements trong một trang. Thư viện Virtual DOM của Mithril sẽ nhận vào Vnode và tạo thay đổi tương ứng trên trang. Bạn dùng hàm m() để tạo ra Vnode và hàm này có chữ ký như sau:

/**

* selector (String|Object) REQUIRED

* attributes (Object)

* children (Vnode[]|String|Number|Boolean)

*/

m(selector, attributes, children)

Bạn dùng Selector để khai báo tên thẻ HTML và Class, ID hay các thuộc tính khác cho nó. Xem ví dụ sau:

//

m(‘h1’)

//

m(‘h1.foo.bar’)

//

m(‘h1.title#heading’)

//

m(‘h1.title#heading[title=”Hello”][data-lang=”en”]’)

//

m(”)

Để khai báo các thuộc tính một cách linh động hơn, bạn có thể dùng Attributes – là một JavaScript object. Ví dụ như:

m(‘h1.title’, {

title: ‘Hello’,

style: {

display: showTitle ? ‘block’ : ‘none’

)

Nếu showTitle != null thì // Attributes cũng được dùng để khai báo các lifecycle hooks và event handlers nhưng chúng ta sẽ đề cập đế chúng sau.

Chidlren để bạn khai báo nội dung của Vnode. Nó có thể là String, Number, Boolean hay một mảng các Vnode khác. Ví dụ:

//

Hello World

m(”, ‘Hello World’)

//

123

m(”, 123)

const h1 = m(‘h1’, ‘Hello’)

const h2 = m(‘h2’, ‘World’)

//

//

Hello

//

World

//

m(”, [h1, h2])

m(”, h1, h2 /* …vnodes */) //

Cài đặt Mithril

Để bắt đầu, bạn cần cài đặt Mithril. Cái này có hơi phức tạp chút, nên bạn hãy chú ý nghen. Tạo một tập tin index.html có nội dung như sau:

// Print “Hello World” to the page

m.render(document.body, m(‘h1’, ‘Hello World’))

>> Xem tiếp: Làm quen với MithrilJS – Phần 2

Post Views: 467
Previous Post

Làm quen với MithrilJS – Phần 2

Next Post

Tìm hiểu quy trình TC39

Related Posts

5 Bước Cài đặt Lemp Stack Trên Ubuntu 16.04 60902eddebb15.png
Development

5 bước cài đặt LEMP stack trên Ubuntu 16.04

05/05/2021
Tăng Tốc độ Làm Việc Trên Ubuntu Qua Command đặc Biệt 60902eda2d54e.png
Development

Tăng tốc độ làm việc trên Ubuntu qua command đặc biệt

05/05/2021
Quản Lý Các User Trong Ubuntu Server (p1) 60902ed56b2cc.png
Development

Quản lý các User trong Ubuntu Server (P1)

05/05/2021
Tìm Hiểu Quy Trình Tc39 60902ecd58440.jpeg
Development

Tìm hiểu quy trình TC39

21/04/2022
Làm Quen Với Mithriljs – Phần 2 60902ec600017.jpeg
Development

Làm quen với MithrilJS – Phần 2

21/04/2022
Tổng Quan Về V8 Engine 60902ec2049e0.jpeg
Development

Tổng quan về V8 Engine

05/05/2021
Next Post
Tìm Hiểu Quy Trình Tc39 60902ecd58440.jpeg

Tìm hiểu quy trình TC39

Bài mới nhất

Dịch Vụ Thiết Kế Website Tại Hải Dương Chuyên Nghiệp, ấn Tượng Và Uy Tín 612d25752b14f.png

Dịch vụ thiết kế website tại Hải Dương chuyên nghiệp, ấn tượng và uy tín

06/05/2025
Top Công Ty Thiết Kế Website Tại Biên Hòa Chuyên Nghiệp, Chuẩn Seo 612d259494e93.jpeg

Top công ty thiết kế website tại Biên Hòa chuyên nghiệp, chuẩn SEO

06/05/2025
Top Công Ty Thiết Kế Website Tại Vinh – Nghệ An Uy Tín 612d259a9cae3.jpeg

Top công ty thiết kế website tại Vinh – Nghệ An uy tín

05/05/2025
Top 10 Công Ty Thiết Kế Website Tại Nha Trang Chuyên Nghiệp 612d0a9ad018b.jpeg

Top 10 công ty thiết kế website tại Nha Trang chuyên nghiệp

05/05/2025
Các Dịch Vụ Thiết Kế Website Tại Vĩnh Phúc Chuyên Nghiệp, Uy Tín Nhất 612d0a91e63af.jpeg

Các dịch vụ thiết kế website tại Vĩnh Phúc chuyên nghiệp, uy tín nhất

04/05/2025

Danh mục

  • Android
  • Bảo mật máy tính
  • Bảo mật, Antivirus
  • Chuyện công nghệ
  • Deep Learning
  • Development
  • Dịch vụ công trực tuyến
  • Dịch vụ nhà mạng
  • Giải pháp bảo mật
  • Hệ thống
  • Hệ thống
  • iPhone
  • Kiến thức bảo mật
  • Kiến thức cơ bản phổ thông
  • Kiến thức Marketing căn bản
  • Kiến thức tổng hợp
  • Lập trình
  • Linux
  • Linux OS
  • macOS
  • Mail Server
  • Mạng LAN – WAN
  • Máy ảo
  • Máy chủ
  • ms excel
  • ms-powerpoint
  • Nền tảng điện toán đám mây
  • Phần cứng
  • Phần Mềm
  • Quản trị hệ thống
  • Raspberry Pi
  • Sửa lỗi máy tính
  • Tăng tốc máy tính
  • Thủ thuật
  • Thủ thuật SEO
  • Thủ thuật Wifi
  • Tiện ích hệ thống
  • Tin học văn phòng
  • Tin tức
  • Uncategorized
  • Ứng dụng
  • Website
  • Windows Server 2012

Thẻ

#app #chatbot #chatbot tự động #CRM #Kiến thức cơ bản #Techblog #Thiết kế website Android apple CPU Email Marketing Google Google Drive hacker HTML hàm python hàm python có sẵn hình nền hình nền máy tính học css học python học SQL ios iphone iphone 12 iPhone X macos Microsoft mssql MS SQL Server ngôn ngữ lập trình python Raspberry Pi Samsung smartphone SQL SQL Server tham số trong C thủ thuật windows 10 tài liệu python windows windows 10 YouTube điện thoại thông minh ứng dụng
  • About
  • Advertise
  • Privacy & Policy
  • Contact

© 2022 Pha Le Solution

No Result
View All Result
  • Home

© 2022 Pha Le Solution