Component attributes are like member variables on a class in Apex. They are typed fields that are set on a specific instance of a component, and can be referenced from within the component’s markup using an expression syntax. Attributes enable you to make components more dynamic.
Use the <aura:attribute> tag to add an attribute to the component or app. Let’s look at the following sample, helloAttributes.app:
All attributes have a name and a type. Attributes may be marked as required by specifying required="true", and may also specify a default value.
In this case we’ve got an attribute named whom of type String. If no value is specified, it defaults to “world”.
Though not a strict requirement, <aura:attribute> tags are usually the first things listed in a component’s markup, as it provides an easy way to read the component’s shape at a glance.
Attribute Naming Rules
An attribute name must follow these naming rules:
Must begin with a letter or an underscore
Must contain only alphanumeric or underscore characters
Expressions
helloAttributes.app contains an expression, {!v.whom}, which is responsible for the component’s dynamic output.
{!expression} is the framework’s expression syntax. In this case, the expression we are evaluating is v.whom. The name of the attribute we defined is whom, while v is the value provider for a component’s attribute set, which represents the view.
Expressions are case sensitive. For example, if you have a custom field myNamespace__Amount__c, you must refer to it as {!v.myObject.myNamespace__Amount__c}.
An attribute of an aura:method can have a type corresponding to a JavaScript function so that you can pass a function into the method. An attribute of a component can’t have a type corresponding to a JavaScript function.
An Aura component attribute type can correspond to values held in an Apex class. An attribute type can be a custom Apex class, a List standard Apex class, or a Map standard Apex class. To use values held in other standard Apex classes, first create a custom Apex class, and then copy the needed values from instances of the standard class into your custom class.