更改ejs 为html 并且让html里面可以写 ejs 代码
要在app.js 中修改
var ejs = require('ejs'); // 需要在头部引入
app.set('view engine', 'html');
app.engine('.html', require('ejs').__express);
更改文件中如下结果位置,jade格式全部更改为html后缀。
然后在命令行去安装ejs,完成后运行程序:
set DEBUG=myapp & npm start
最后打开浏览器,如果没问题,输入http://localhost:3000/就可以访问主页,有错误的话再检查一下,就这几步,很简单的。
更改 jade 为 html 并且让html里面可以写 jade 代码
这个更改方法同上!!
var jade = require('jade'); // 需要在头部引入
app.set('view engine','html');
app.engine('.html',require('jade').__express);
更改为html后,渲染方式也会改变
页面上直接通过如下方式在输出内容:
<%- demo %>
(node.js)Nodejs + React做后端渲染时,如何绑定事件
但是,问题是,在组件中绑定的onClick事件并没有生效:
解决方案1:
后端只会生成HTML String, 所有浏览相关的操作是无法进行的。 E.g. componentDidMount事件不会被触发。
在后端生成HTML String 并 Return 回浏览器端时, 要重新render一次, 但注意这次render要保证有同样的State(如果你用Flux的话, 就是Store里的data 要一样)。在这次浏览器端的render中,会发生事件绑定。
一般情况下, 只需要对‘GET’进行服务器端渲染, 'POST', 'PUT', 'DELETE'这些不太有必要, 完全在客户端处理就行了
解决方案2:
事件绑定和处理是浏览器行为 不可能在后端实现的. 所以必须在浏览器端重新render
react智能的识别服务端render的字符串, 在页面中挂载&渲染的时候,只去做事件绑定.
建议好好去看看文档, 好多问题可以避免.
之后陆续都要写一些文章进行记录,供自己日后进行查阅。