ejs inlude的修改

刚在用node开发博客系统的时候碰到一个ejs不方便的地方。
我想把用户和文章两个视图的文件放在各自的文件夹下,例如user/user.ejs,post/post.ejs
更改完之后,然后ejs的inlude comon/page.ejs,这一行就报错了,所找不到/views/post/common/page.ejs
看路径我明白了,原来ejs的include是这么做文件包含的,那么似乎要改回去呢,但是我不想改,我想分类管理文件,
所以必须更改ejs的inlude操作。于是我进行跟踪,发现ejs有一个方法就是来操作inlude的路径问题的。
resolveInclude(name, filename)是的,就是这个方法,里面有个关键的代码join(filename, name);
这行代码就是把当前的文件路径+inlude后面的字符串,但是我希望的是以views为跟路径,其他的都参照这个路径去inlude
于是我想,既然express有设置views路径,那么ejs应该会拿到 ,与我是去看render方法,render方法里面有个神奇的东西options。
于是,我把options打印出来果然,options里面有个views的路径,这下就简单了更改join(filename, name);为join(options.settings.views, name);ok,问题解决了,以后我所有的视图包含路径都是相对views来的了,里面的路径我可以自由包含。

你可能感兴趣的:(ejs inlude的修改)