我已经深入学习了Node/Express(同时学习了JavaScript中级内容),但是我有点困惑,为什么需要像Jade或EJS这样的“视图引擎”呢?
我似乎找不到使用普通HTML5的东西,或者说我无法通过express将值传递给普通HTML页面吗?
假设我有一个名为index.html的页面,它会在加载时显示并在“登录”时以用户名称显示在顶部(仅用于示例)。我不能在express中将值传递给正常的html文件吗?
Express/Node是否需要视图引擎?
不需要,Express可以愉快地按照您的意愿提供静态HTML5文件。您无需使用视图引擎。您可以创建自定义路由并为每个页面使用res.sendFile()
,或者您可以使用express.static()
自动服务整个静态HTML文件目录,或者编写自己的代码来构建想要发送的任何HTML5内容,并使用res.send()
发送它。
视图引擎所需的地方是您想要一种模板类型的系统,可以在其中创建一个具有动态内容占位符的HTML模板,然后在服务器上插入动态值到页面中。
我不能在Express中传递值到普通的.html文件中吗?
不行,您无法使用常规的Express实现此功能。Express提供了服务静态HTML文件的功能,但没有将动态内容插入HTML文件中的能力。这就是使用视图引擎的原因。Express没有内置此功能,因为有许多不同的视图引擎哲学,而Express不想强制执行一种风格,所以它支持一个视图引擎接口用于从模板呈现,您可以选择要使用哪个视图引擎。
res.send()
应该用于内存字符串。res.sendFile()
应该用于从磁盘中读取文件。如果找不到文件,则可能是路径错误。你应该使用视图引擎来使用res.render()
。 - jfriend00