小编Thi*_*ijs的帖子

清理OO结构与SQL性能

在PHP中编程时,我总是尝试创建与数据库中的表对应的有意义的"模型"(类).我经常遇到以下问题:

假设我已经创建了一个包含两个表的数据库:authors并且blogs在我的应用程序中都有相应的模型.

假设我想打印所有博客以及有关作者的信息,我必须做这样的事情:

<?php
foreach ($app->getBlogs() as $blog) {
  echo "<h1>" . $blog->title . "</h1>";
  echo "Written by" . $blog->getAuthor()->name . "</p>";
  // ... et cetera
}
?>
Run Code Online (Sandbox Code Playgroud)

问题是,应用程序现在将触发1个SQL查询以获取所有博客项目和[博客项目数]查询以获取每个作者的信息.使用简单的SQL我可以使用简单的查询检索此信息:

SELECT * FROM blogs
JOIN authors ON authors.id = blogs.author
Run Code Online (Sandbox Code Playgroud)

处理此类问题的最佳方法是:开发面向对象的应用程序而不执行太多无用的SQL查询.

php sql oop design-patterns domain-driven-design

25
推荐指数
1
解决办法
1314
查看次数

如何在 Nuxt 3 Vite 项目中使用 SSR 和 Stencil?

在 Nuxt 2 中,我可以通过利用 Stencil 包中提供的 renderToString() 方法并结合 Nuxt 钩子来使用服务器端渲染的 Stencil 组件,如下所示:

import { renderToString } from '[my-components]/dist-hydrate'

export default function () {
  this.nuxt.hook('generate:page', async (page) => {
    const render = await renderToString(page.html, {
      prettyHtml: false
    })
    page.html = render.html
  })
}
Run Code Online (Sandbox Code Playgroud)

自从Stencil 2.16.0最近发布以来,我能够在由 Vite 提供支持的 Nuxt 3 中使用本机 Web 组件。然而我还没有找到一种方法来连接模板水合过程。不幸的是,还没有关于可组合useHydration()的文档。

有谁知道我如何让它在 Nuxt 3 中工作?

render-to-string server-side-rendering stenciljs vite nuxtjs3

11
推荐指数
1
解决办法
2116
查看次数