Javascript Vue.js中具有服务器端渲染的单文件组件
我正在尝试使用服务器端渲染构建我的应用程序,但我的服务器代码中存在以下问题:Javascript Vue.js中具有服务器端渲染的单文件组件,javascript,vue.js,server-side-rendering,Javascript,Vue.js,Server Side Rendering,我正在尝试使用服务器端渲染构建我的应用程序,但我的服务器代码中存在以下问题: function (exports, require, module, __filename, __dirname) { <template> ^^^^^^^^^ 我想这是一个文件组件的问题。有没有办法避免这种情况?如何使用express server渲染单个文件组件 这是我的服务器配置: const Vue = require('vue') const App = require('./src/App
function (exports, require, module, __filename, __dirname) {
<template>
^^^^^^^^^
我想这是一个文件组件的问题。有没有办法避免这种情况?如何使用express server渲染单个文件组件
这是我的服务器配置:
const Vue = require('vue')
const App = require('./src/App.vue');
const server = require('express')();
const renderer = require('vue-server-renderer').createRenderer();
server.get('*', (req, res) => {
const app = new Vue({
el: '#app',
data: {
url: req.url
},
template: '<App/>',
components: { App }
})
renderer.renderToString(app, (err, html) => {
if (err) {
res.status(500).end('Internal Server Error')
return
}
res.end(`
<!DOCTYPE html>
<html lang="en">
<head><title>Hello</title></head>
<body>${html}</body>
</html>
`)
})
})
server.listen(8080);
我知道有一些网页选项,但我可以不用它,只使用express吗?谢谢你的帮助。不,你不能
Vue.Vue文件不是常规的javascript文件,因此需要将它们传输到.js中,以供任何NodeJS进程读取
你有几个选择,如果你不想使用webpack,我强烈建议你试试:
你可以使用Vueify和Gulp,使用我必须提到的是,我是这个软件包的作者。
或者,可能是推荐的方法,您可以将其用作
.
现在有一个名为express vue的包可以实现这一点 我在这方面取得了巨大的成功,它仍然支持组件、mixin等 其思想是简单地将Node+Express用于控制器和模型,将Vue.js用于视图 danmademe提供 从npm页面: 用法 这是所需的最低设置。如果您不提供vueVersion,它将在项目发布时使用最新版本。如果没有rootPath,它将假定root是node_模块的父目录
var expressVue = require("express-vue");
var app = express();
const expressVueMiddleware = expressVue.init();
app.use(expressVueMiddleware);
在您的路线中,假设您有一个main.vue
router.get('/', (req, res, next) => {
const data: {
otherData: 'Something Else'
};
req.vueOptions: {
head: {
title: 'Page Title',
metas: [
{ property:'og:title', content: 'Page Title'},
{ name:'twitter:title', content: 'Page Title'},
]
}
}
res.renderVue('main.vue', data, req.vueOptions);
})
要将数据绑定到vue文件中,需要如上所述通过数据对象传入数据。express vue将自动将您在此处放置的任何内容添加到vue组件的根元素中。您不需要在.vue文件的数据中包含任何内容,但如果您这样做,则res.render将覆盖它