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 apps.
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 in to ES5, which is the well-known version of JavaScript supported in all browsers.
Browserify
Browserify is a code bundler, similar to webpack, that analzyes all the code in an project, and budle it into single file.
Bundling
Bundling is the process of taking an app 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 API's. 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 familar 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 introducted 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 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 in to CSS, minifying code, and concatenating files.
Imports
ES6 brings the concept of modules to javascript. With modules, things are no longer on the global scope and have to imported into be used. This makes it much easier to understand where your code is coming from.
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's takes your test, written in any testing framework, and just runs them in browser. Orginially written for 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 deteches changes. It watches a specific path and anytime a file or directory is updated, it will trigger a full browser reload. In cases where css is chagned, 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 normailizes browser differences. This is similar to a shim, but where as a shim has it's own API, a polyfill let's you use the expect API of the brower.
What is a polyfill?
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. Basically figuring out if your app behaves the way you expect it too. 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. A shim is a piece of code that normailizes difference APIs across browsers. A shim would often has it's own API that would handle the cross browser differences. 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).
Transpile means to convert code from one language, to another language. Typically a transpiler will convert a high-level language to another high-level language. Often times the Ionic community will talk about transpiling ES2015/ES6 or TypeScript to ES5.
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 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 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 is an IDE that allows you to develop iOS apps. XCode includes tools that help with building, testing, and debugging your app. Although many Ionic developers do not use it as their primary editor, it is often used to build and sign the production version of an app.Protractor
Sass
Shim
SystemJS
Transpiler
TypeScript
Unit Tests
Webpack
XCode