我目前正在使用vue-cli制作一个项目,该项目通过webpack生成一个Node项目。我可以构建所有脚本并在.vue
文件中使用帕格语言。但是,在构建时,项目使用HTML-Webpack-Plugin
,它会使用客户端脚本将代码输出为静态HTML。
如何将变量从服务器端传递给这些客户端脚本?我以前使用的是pug,这使此过程变得容易,但是由于它现在已内置到.html
文件中,因此无法需要做的更多。
我有两次尝试,均次优:
script.
const clinetSideVar = `!{serverSideVar}`;
这种方法的问题是,我无法将此变量传递给vue实例,因为在构建时会对其进行混淆,而且我无法访问它(或者,我没有找到方法)。
我还可以为服务器端站点数据创建一个宁静的API并使用AJAX检索它,但这似乎是一个真正的技巧,并且与仅通过pug模板简单地发送数据相比,这会损失很多性能( 。1我也是,因为客户端JS必须将数据插入DOM)。
我建议使用JSONP(因为index.html是在Vue-cli中提前构建的。)>
在您的public / index.html
(它是模板)<head> ... <script>function getServerData(data) { window.__SERVER_DATA__ = data; }</script> <script src="/api/server-data.json?callback=getServerData"></script> </head>
在您的Node Express路由定义中
const app = express(); // ... app.get('/api/server-data.json', (req, res) => { res.jsonp({ foo: 'foo', bar: 'bar' }); });
然后只需从任何Vue组件中访问
window.__SERVER_DATA__
。>>