Ionic Developer Glossary
Android SDK
The Android SDK is a software development kit that for developers building for Google's Android Platform. It includes tools for building, testing, and debugging Android applications.
Annotations
Annotations are used to add metadata to a class. TypeScript extends ES6 by adding annotations. While you can define your own annotations, the Ionic community often refers to two annotations provided by Angular 2: @Component
and @View
.
Autoprefixer
Autoprefixer is a tool that adds vendor-specific-prefixes to hand-written Sass/CSS code. This ensures that standardized CSS rules you write will be applied across all supporting browsers. For example, instead of having to know every flexbox syntax used by various browsers, autoprefixer allows you to just write display: flex;
and it'll automatically plug in the correct CSS.
Babel
Babel is a next-generation JavaScript compiler. Currently, today's browsers do not support every feature of the next-generation of JavaScript (ES6). Babel solves this problem by compiling your ES6 code to ES5, which is the well-known version of JavaScript supported in all browsers.
Browserify
Browserify is a code bundler, similar to webpack, that analyzes all the code in a project, and bundles it into a single file.
Bundling
Bundling is the process of taking an app's dependencies (code you've written plus any npm modules installed) and compiling/transpiling them down to one single file.
CLI
A CLI, or command-line interface, is text-based interface for interacting with a program. The common command-line app for a Mac user is the Terminal app, and Windows users often use Command Prompt. The Ionic community often uses this term to refer to Ionic's CLI. Ionic's CLI can be used for a number of things, such as creating production builds of an app, running the development server, and accessing Ionic services.
CommonJS
CommonJS is a group that defines standard formats for JavaScript APIs. They have defined standards for JavaScript modules and packages.
Cordova
Cordova is a way to transform standard HTML/CSS/JS into a full-fledged native app. It provides a JavaScript API for accessing native device functionality, such as the camera or accelerometer. Cordova contains the necessary build tools for packaging webapps for iOS, Android, and Windows Phone.
Decorators
Decorators are expressions that return a function. They basically allow you to take an existing function, and extend its behavior. With TypeScript, you can also decorate classes and parameters. When you decorate a class, you are wrapping and extending the behavior of its constructor. In other words, the decorator will add some functionality when the constructor is called, and will then return the original constructor. When you decorate a parameter, you are wrapping the argument that gets passed in for that parameter. In other words, the decorator will add functionality when an argument is passed to the method, and then return the original argument.
ES5
ES5 refers to EcmaScript 5th Edition. A simple way to put it is that ES5 is the version of JavaScript which developers are most familiar with today.
ES2015/ES6
ES2015/ES6 are two commonly used names for the most recent version of JavaScript. A wide range of new features have been introduced in this version, including classes, modules, iterators, and promises. The final draft of ES6 has been approved, which means eventually ES6 code will be interpreted directly by a browser. To use ES6 features today, tools such as Babel and TypeScript have to transpile ES6 code down to ES5.
ES2016/ES7
ES2016/ES7 are two commonly used names for the experimental version of JavaScript. This future version of JavaScript will add a number of new features to the language, including async functions and typed objects. It is constantly being revised, and it is not currently suitable for production apps.
Genymotion
Genymotion is a third-party Android emulator. It is extremely fast, and is useful for quickly testing your app on Android. Check out our resource section on Genymotion for more info.
Git
Git is a distributed version control system for managing code. It allows development teams to contribute code to the same project without causing code conflicts.
Gulp
Gulp is a tool for running tasks which can be used to build your application. Common build tasks include transpiling ES6 to ES5, turning Sass into CSS, minifying code, and concatenating files.
Imports
ES6 brings the concept of modules to javascript. With modules, classes and variables are no longer in the global scope and have to be explicitly imported into your project to be used. This makes it much easier to understand where your code is coming from and increases modularity and compartmentalization of functionality.
Ionicons
Ionicons is an open-source icon set used and created by Ionic. It includes iOS, Material Design, and social icons, as well as a wide range of commonly used icons. Ionicons is included by default in Ionic distributions, but they can be used in any project.
Karma
Karma is a test runner that will run your app's test inside a real browser. It executes your test cases, written in any testing framework, in a real browser. Karma was originally written for use with Angular 1.
Module
Modules in JavaScript are small, independent, and reusable pieces or code that are isolated from one another and the Global scope
Live Reload
Live Reload is a tool that automatically reloads your browser when it detects changes. It watches a specific path and when a file or directory is updated, it will trigger a full browser reload. In cases where CSS is changed, livereload will inject the changed CSS instead of reloading the entire page
Node
node is a runtime environment that lets you write JavaScript on the server-side. In addition to being used for web services, node is often used to build developer tools, such as the Ionic CLI.
NPM
npm is the package manager for node. It allows you to install, share, and package node modules. Ionic can be installed with npm, along with a number of its dependencies.
Observable
An observable is an object that emits events (or notifications). An observer is an object that listens for these events, and does something when an event is received. Together, they create a pattern that can be used for programming asynchronously.
Polyfill
A polyfill is a bit of code that add functionality to the browser and normalizes browser differences. This is similar to a shim, but where as a shim has its own API, a polyfill let's you use the expect API of the browser.
Protractor
Protractor is testing framework written for and by the Angular team. Protractor can be used with test runners, like Karma, for end-to-end testing. Test runners allow you to quickly and programmatically verify code quality.
Sass
Sass is a stylesheet language that compiles to CSS and is used by Ionic. Sass is like CSS, but with extra features such as variables, mixins, and for loops.
Shim
A shim is a piece of code that normailizes an APIs across browsers. A shim can have its own API that hides the browser specific implimentation from the end user.
SystemJS
SystemJS is a module loader (like RequireJS) that loads all module formats - AMD, CommonJS, and ES6, and is built on top of the ES6 Module Loader polyfill (a polyfill implementing the way JavaScript will load modules natively in the future).
Transpiler
Transpilation is the process of converting code from one language to another language prior to execution. Typically, a transpiler will convert a high-level language to another high-level language. The most common type of transpilation in the Ionic framework is converting ES2015/ES6 (TypeScript) to ES5 (traditional JavaScript).
TypeScript
TypeScript is a superset of JavaScript, which means it gives you JavaScript, along with a number of extra features such as type declarations and interfaces. Although Ionic is built with TypeScript, using it to build an Ionic app is completely optional.
Unit Tests
Unit Tests and unit testing are a way to test small pieces of code to see if they behave as expected. Unit testing frameworks include Jasmine, Mocah, QUnit, and many more.
Webpack
Webpack bundles together JavaScript modules and other assets. It can be used to create single or multiple "chunks" that are only loaded when needed. Basically you can use Webpack to take your many files and dependencies and bundle them into one file, or however you see fit.
Xcode
Xcode is an Apple IDE (integrated development environment) for software development on Apple operating systems (macOS, iOS, watchOS and tvOS), with extensions available for other languages and platforms.