express-multiview
v1.0.2
Published
A subdomain and multi-view expressjs middleware
Downloads
4
Readme
express-multiview
Install
$ npm install express-multiview
API
let multiview = require("express-multiview");
multiview.withMultiView(app, configs)
Creates definition for multiple subdomains on the app. Unlike the .defineSubdomainView()
method, this method allows you to define configurations for multiple subdomains. configs
is an object containing the subdomain as key, and a subdomainConfig as value. For each subdomain, an optional viewsFolder
can be specified, as well as an optional router
option which takes in an express router.
const multiview = require("express-multiview");
const app = express();
const customRouter = express.Router();
customRouter.get('/', function(req, res){
res.send("Hello from subdomain");
});
multiview.withMultiView(app, {
"docs":{
viewsFolder: "/views/docs", //optional
router: customRouter //optional
},
"another.sub":{
...
}
});
In the example above, requests from docs.yoursite.com will render views from the /views/docs/ folder, and will handle requests in the customRouter. It is recommended that you specify at least a viewsFolder
or router
.
multiview.defineSubdomainView(app, subdomain, config)
This method allows you to define a single subdomain configuration.
const multiview = require("express-multiview");
const app = express();
const customRouter = express.Router();
customRouter.get('/', function(req, res){
res.send("Hello from subdomain");
});
multiview.defineSubdomainView(app, "docs", {
viewsFolder: "/views/docs", // optional
router: customRouter // optional
});
Developing Locally
In order to use this middleware locally, you'll need to list the subdomain in your hosts file.
On *nix systems, add your subdomain to /etc/hosts
:
127.0.0.1 yoursite.com
127.0.0.1 subdomain.yoursite.com
On Windows 7/8, the hosts file can be found in %systemroot%\system32\drivers\etc
.
Notes
1: It is not possible to dev locally with this middleware without the above setup
2: It is important that you define the subdomain configs before the app router for the main domain.
3: For multilevel TLD's, such as .co.uk
you need to pass a value in the third parameter of the defineSubdomainView()
and/or withMultiView()
methods. The third parameter takes in subdomain offset value which is passed straight to expressjs. The value for .co.uk
would be 3, and for .com
it would be 2 (default)