Dec 05, 2020 • ☕️ 4 min read
JavaScript was initially a browser-only scripting language. Today, JavaScript is a widely-adopted general-purpose multi-paradigm programming language that runs literally everywhere (web browsers, web servers, mobile apps, desktop apps, IoT devices).
It is very common for ECMAScript and JavaScript to be used interchangeably. ECMAScript is a specification programming language defined in the document ECMA-262. JavaScript is a dialect of ECMAScript, conforms to the ECMAScript specification while also providing additional features not described in the specification.
Host environments are platforms where JavaScript can run, each of them implements JavaScript language specification and provides additional platform specific functionality.
JavaScript language itself only defines APIs for working with text, dates, regular expressions, standard data structures. Any I/O (networking, storage, graphics, files, etc.) will be optionally provided by host environments.
A web browser provides a host environment for client-side computation including, for instance, objects that represent windows, menus, pop-ups, dialog boxes, text areas, anchors, frames, history, cookies, input, and output.
Web browser also provides a means to attach scripting code to events such as change of focus, page and image loading, unloading, error and abort, selection, form submission, and mouse actions.
The World Wide Web Consortium (W3C) has established standards for Structural and Semantic Languages (HTML, XHTML, XML), Presentation Languages (CSS), Object Models (DOM), Scripting Languages (ECMAScript), Additional Markup Languages (MathML), commonly used to develop web pages.
All modern web browsers (Chrome, Safari, Firefox, Edge) are considered to be W3C-compliant, in that they conform to the set-forth standards and should deliver a consistent web experience across browsers.
JavaScript engines are typically developed by web browser vendors, and every major browser has one. The use of JavaScript engines is not limited to browsers. For example, the Chrome V8 engine is a core component of the popular Node.js and Deno runtime systems.
Host environments outside browsers come in different shapes and sizes, relies on popular JavaScript engines (V8, JavaScriptCore, etc.) to handle JavaScript language, provides addition platform-specific features as JavaScript frameworks, and not standardized by any specifications.
JavaScript in server-side has exploded in recent years with the help of Node.js and Deno runtime. They provide server-side computation including objects representing requests, clients, files, mechanisms to lock and share data.
With introduction of mobile Javascript frameworks (React Native, NativeScript, Ionic, or Apache Cordova), you can now use JavaScript to develop truly universal apps that run in both iOS and Android. They allow you to develop UI elements using web technologies (HTML, CSS, React, Vue, Angular, etc.) and provide access to iOS and Android APIs via bridging.
Typically, you create a desktop application for an operating system (OS) using each operating system’s specific native application frameworks. Electron makes it possible to write your application once using technologies that you already know: Chromium for displaying web content, Node.js for working with the local filesystem and the operating system, and Custom APIs for working with often-needed OS native functions.
Riding on the widespread popularity of JavaScript (particularly event-driven Node.js) in combination with low cost prototyping hardware, a new set of projects have emerged letting client side web developers use their skills to start controlling elements in the physical world.
It seems impossible to imagine software development without JavaScript these days. The merits of JavaScript aren’t limited to just web applications. If you possess JavaScript skills, you can easily migrate to any field including server side, mobile, or IoT development.
CSR strategy has very good developer experience but the impact on SEO and user experience still concerned
Starting a technical blog is easy but maintaining it for a long period of time is a pain in the neck
A low-level utility-first CSS framework to write inline styles for rapidly building custom user interfaces
To get from good to great, I believe we have to constantly learn from others, these are those that contains valuable articles and resources that help us to make the leap