According to the dictionary, a framework is "an essential supporting structure of a building, vehicle, or object".
In software it's the same thing. The framework defines the structure, you just fill in the blanks like you would fit floors, add wheels, etc.
The pro is that it's an easy way if you want to build an application that closely follows an existing type of application. But it's too constraining if you want to be able to customize the structure down the line; all of a sudden, you realize that it's defined outside, in a technology that is not your own and you don't understand.