svelte + express (without sapper) - 如何用服务器发送 props/communicate?

svelte + express (without sapper) - how to send props/communicate with the server?

我正在编写一个小网站作为我的主页。
到目前为止,我设法用 express 和 handlebars 模板 做了我想做的事,但我做这个网站是为了测试我的界限,我没有使用 前端框架 并使用网络 components.

所以为了挑战和学习,我选择了svelte
我读到,这不完全是一个框架,但是用它来编写是一种乐趣,而且在性能方面似乎很有前途。

问题是我想将手放在我的网站上sapper,svelte 附带的完整框架是黑匣子对我来说有点太多了。
(你把这个文件放在这里,把那个文件放在那里,
使用这种你不应该接触的复杂配置进行编译
和 BOOM 你有路线)

我想要的是使用 express 来管理路线,然后呈现 svelte 应用程序,路线可以使用不同的 page/app,或者相同具有不同变量的应用程序。

有人能指出我正确的方向吗? 我考虑过使用 sessionssocket,但我不知道如何听这个客户端和 documentation/articles 关于苗条的稀疏,都在谈论sapper。

这是我在测试应用程序中编写的几行代码。我知道这不是你这样做的方式,但这是出于好奇

// --------------server.js
// ...
app.set('view engine', 'hbs')
app.set('views', path.join(__dirname, '../views'))
// Using a view engine on TOP of svelte 
// is certainly a bad choice

app.use(express.static('app/public'))
// to make the svelte compiled .js and .css available

app.get('/test', (req, res) => {
  res.render('home', {user:true}) 
  // I tried to send props like this
  // it did not get the props in svelte, 
  // but what I found is that svelte ADDS itself to the page
  // and does not remove the HBS code, event though it is in the target container
})


编辑

我终于会用sapper了,谢谢指教... 我真的希望他们实现某种允许单独 render/serve 页面的精巧中间件(当然,一旦它们被构建)

如果你这样做,将你的网络应用程序分成几个独立的 svelte 应用程序,由 express 提供服务,那么你需要在后端保持(网络)应用程序范围的状态或将其保存在本地存储中在浏览器上。您不能使用 sveltes store 提供的状态(可写等),因为它在内存中并且在您导航到新页面时(通过 express)被销毁。

如果 sapper 太神奇了,但您想保留 运行 一个单页应用程序,请查看 svelte-spa-router。那不是基于配置的。