Misplaced Pages

Google Closure Tools

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.
(Redirected from Soy templates) JavaScript developer toolkit
This article contains promotional content. Please help improve it by removing promotional language and inappropriate external links, and by adding encyclopedic text written from a neutral point of view. (October 2019) (Learn how and when to remove this message)
Google Closure Tools
Original author(s)Google
Initial releaseNovember 5, 2009
Stable releasev20230802 Edit this on Wikidata / 2 August 2023; 16 months ago (2 August 2023)
Repository
Written inJava
Available inJavaScript
TypeAjax framework
LicenseApache License 2.0
Websitedevelopers.google.com/closure/ Edit this at Wikidata

Google Closure Tools is a set of tools built with the goal of helping developers optimize rich web applications with JavaScript. It was developed by Google for use in their web applications such as Gmail, Google Docs and Google Maps. As of 2023, the project had over 230K LOCs not counting the embedded Mozilla Rhino compiler.

Closure Compiler

The Closure Compiler is a tool that attempts to compress and optimize JavaScript code, at the expense of human readability. Unlike an actual compiler, it does not compile from JavaScript to machine code but rather minifies JavaScript.

The process executes the following steps:

  1. Parses the submitted JavaScript
  2. Analyzes the JavaScript
  3. Removes any dead code
  4. Rewrites and minifies what is left

It also checks syntax, variable references, and types and warns about common JavaScript pitfalls.

It supports transpiling modern ECMAScript code to ECMAScript 5 to achieve a wider range of browser compatibility, similar to Babel. This obviated Traceur Compiler, another project that supported transpiling ES6 to ES3.

The Closure compiler also supports type checking via JSDoc type annotations.

CLI

The Closure Compiler is available for use through command line tools:

  • Java-based application run from the shell which compiles a list of specified JavaScript files
  • npm package google-closure-compiler which provides three compilers: native binary executable (via GraalVM), Java and a JavaScript-based one

Closure Compiler Service

The Closure Compiler Service application provides a form for a user to input a URL pointing to a JavaScript source or enter JavaScript source code in a text box. The website will display the compiled JavaScript on the right side for the user to copy.

An API is available, accessible via POST requests, parameters include:

  • The JavaScript to be optimized, or a URL pointing to it
  • Optimization level
  • Emit errors and warnings
  • Output format i.e. JSON, XML, or text

The service is marked as deprecated and will eventually be removed.

Ecosystem

Programming languages that transpile to JavaScript can use the Closure Compiler in their toolchain. For example, the Closure Compiler is used in ClojureScript to optimize the compiled JavaScript.

Internals

Closure Compiler is built upon a modified version of the Rhino JS engine built by Mozilla, Google Guava, a Java standard library, Protocol Buffers, Gson and various other tools for testing. It also ships with built-in JavaScript JSDoc annotations for various popular projects like Node.js' standard API library, JQuery, and Google Map APIs.

Closure Library

The Closure Library is a JavaScript library, written specifically to take advantage of the Closure Compiler, based on a modular architecture. It provides cross-browser functions for DOM manipulations and events, Ajax and JSON, as well as more high-level objects such as User Interface widgets and Controls.

Closure Templates

Closure Templates are a templating system for dynamically generating HTML in both Java and JavaScript.

Since the language is apparently referred to as "Soy" internally by Google, and "Soy" remains in some of the documentation and classes, sometimes Closure Templates are referred to as "Soy Templates".

Closure Stylesheets

Closure Stylesheets provide extensions to CSS, which are transpired to ordinary CSS. Internally in Google, this extended version of CSS is referred to as GSS.

As of November 2021, Closure Stylesheets have been deprecated in favor of tools such as Sass and PostCSS.

See also

References

  1. "Introducing Closure Tools - The official Google Code blog". 5 November 2009.
  2. "v20230802: RemoveUnusedCode: log reasons for not removing variables". 2 August 2023. Retrieved 4 August 2023.
  3. Bolin, Michael, "Closure: The Definitive Guide", O'Reilly Media Inc., Sebastopol, CA, 2010
  4. "FAQ - Closure Tools". Google Developers.
  5. "Traceur is a JavaScript.next-to-JavaScript-of-today compiler". GitHub.
  6. "Annotating JavaScript for the Closure Compiler". GitHub.
  7. "Closure Compiler Service".
  8. "Closure Compiler Service API Reference". Retrieved 2023-07-18.
  9. "Motivations for using Google's Closure Tools". GitHub.
  10. "Hello World Using Java". github.com.
  11. "Hello World Using JavaScript". github.com.
  12. "Google Code Archive - Long-term storage for Google Code Project Hosting". code.google.com.
  13. Weizenbaum, Natalie (2021-11-01). "Officially mark this repository as end-of-life". Retrieved 2023-07-18.

External links

Google free and open-source software
Software
Applications
Programming languages
Frameworks and
development tools
Operating systems
Related
JavaScript
Code analysis
Supersets
Transpilers
Concepts
Debuggers
Doc generators
Editors (comparison)
Engines
Frameworks
Related technologies
Package managers
Module bundlers
Server-side
Unit testing frameworks (list)
People
Categories: