Change sails.js EJS views to use .html extensions instead of .ejs extensions?

痞子三分冷 提交于 2019-12-04 03:39:39

问题


Is it possible to configure sails.js apps to use .html extentions rather than .ejs (but still use the ejs view engine)?

sails new app creates ./views/home/index.ejs and ./views/layout.ejs.

I'd like to change the extensions to .html but keep everything else working the same way.

ie: I would now have ./views/home/index.html and ./views/layout.html, and the home page would still be injected into the layout page, as per normal.

How can I configure this please?


回答1:


In your config/views.js:

engine: {
  ext: 'html',
  fn: require('ejs').renderFile
},

Seems though that the future support for this feature is not guaranteed, since they removed this from docs, so use with caution.




回答2:


Another approach

Sails provides EJS templating by default.To override this and to use .html files , here is a simple solution. In your Sails App , go to config/routes.js. You will see following code there

module.exports.routes = {

 /***************************************************************************
 *                                                                          *
 * Make the view located at `views/homepage.ejs` (or `views/homepage.jade`, *
 * etc. depending on your default view engine) your home page.              *
 *                                                                          *
 * (Alternatively, remove this and add an `index.html` file in your         *
 * `assets` directory)                                                      *
 *                                                                          *
 ***************************************************************************/

 '/': {
   view: 'homepage'
 }

 /***************************************************************************
 *                                                                          *
 * Custom routes here...                                                    *
 *                                                                          *
 *  If a request to a URL doesn't match any of the custom routes above, it  *
 * is matched against Sails route blueprints. See `config/blueprints.js`    *
 * for configuration options and examples.                                  *
 *                                                                          *
 ***************************************************************************/

};

Remove the route to '/' as shown below . Keep it blank

New routes.js will look like

module.exports.routes = {

   //Remove '/' :)

};

Okay !!! now it’s done you can use your HTML files in Sails app . Put your index.html in assets folder . Sails will now load views from here :)




回答3:


In latest sails.js 0.11, this also valid:

engine: 'ejs',
extension: 'html',

To check how they do this, in /node_modules/sails/lib/hooks/views/configure.js:

if (typeof sails.config.views.engine === 'string') {
    var viewExt = sails.config.views.extension || sails.config.views.engine;
    sails.config.views.engine = {
        name: sails.config.views.engine,
        ext: viewExt
    };
}


来源:https://stackoverflow.com/questions/21013180/change-sails-js-ejs-views-to-use-html-extensions-instead-of-ejs-extensions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!