Skip to content

daryl-cecile/express-multi-view

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

express-multiview

NPM Version NPM Downloads

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)

License

MIT

About

Subdomain and Multi Views middleware for expressjs

Topics

Resources

License

Stars

Watchers

Forks