> Is it a method or a constructor?
Neither; it's a *function*, although if you said "method" I don't think anyone would give you a hard time.
A *method* is a function attached to an object. In JavaScript, methods are <s>just</s> mostly functions that you reference via object properties. *(Update: As of ES2015, if you use method syntax to create them, they're* slightly *more than that because they have access to `super`.)*
A *constructor*, in JavaScript, is a function you call via the `new` operator. Even though other functions may create things, we don't typically call them "constructors" to avoid confusion. Sometimes they may be "creator" or "builder" functions.
> Where does it come from?
ExpressJS is a [NodeJS module][1]; `express` is the name of the module, and also the name we typically give to the variable we use to refer to its main function in code such as what you quoted. NodeJS provides the [`require` function][2], whose job is to load modules and give you access to their exports. (You don't *have* to call the variable `express`, you can do `var foo = require('express');` and use `foo` instead, but convention is that you'd use the module's name, or if only using one part of a module, to use the name of that part as defined by the module's documentation.)
The default export of `express` is a bit unusual in that it's a function that also has properties on it that are also functions (methods). That's perfectly valid in JavaScript,¹ but fairly unusual in some other languages. That's why you can create an `Application` object via `express()`, but also use `express.static(/*...*/)` to set up serving static files.
----
¹ In fact, it's completely normal. Functions have a couple of standard methods by default: `call`, `apply`, and `toString` for instance.
[1]:
[To see links please register here]
[2]:
[To see links please register here]