Nuxt 结合Strapi 建站
曾经用Nuxt3/Strapi 建了一个公司主页,但是将近一年没看,几乎忘完了。权且做些笔记,如果后面重构的话可以快速上手。
Nuxt的很多功能都是通过模块实现的,在集成/模块可以搜索需要的模块。
Nuxt4 项目文件结构 比上个版本精简来很多,也更有条理了。
国际化/i18n
@nuxtjs/i18n 通过json 配置多语言。在其官方仓库内有示例,同时该模块可以配合VSCode/i18n-ally插件使用。唯一需要注意的是,可能需要配置一下该插件的路径匹配规则。 可以修改插件的配置项,并且尽量自动检测浏览器语言小心设置prefex前缀,根目录没有内容直接自动跳转会影响SEO。
设备检测
可以通过设备检测插件获取设备信息,再结合Layout适配不同设备,毕竟靠CSS 实现响应式布局难度还是太高了。
Strapi 模块
@nuxtjs/strapi 基本按教程配置就行,但是开发环境下可能需要配置代理服务器:
export default defineNuxtConfig({
// ...
strapi: {
// Options
url: "https://www.xxxx.com",
prefix: "/strapi",
admin: "/admin",
version: "v5",
cookie: {},
cookieName: "strapi_jwt",
},
// ...
nitro: {
devProxy: {
"/uploads": {
target: "http://127.0.0.1:1337/uploads",
changeOrigin: true,
},
},
},
// ...
});
富文本
虽然Strapi 插件市场提供了一些富文本插件,但是要想白嫖又好用,可以使用@_sh/strapi-plugin-ckeditor。该插件是strapi 插件,注意不要安装到nuxt 环境中。使用时可能有一些css 样式不能正确显示,需要在nuxt 中微调:
figure.image {
display: table;
clear: both;
text-align: center;
margin: 0.9em auto;
min-width: 50px;
}
figure.image img {
max-width: 100%; /* 图片宽度最多与父容器相等 */
height: auto; /* 按比例缩放 */
display: block; /* 避免默认的 inline 间隙 */
}
figure.image.image-style-block-align-left {
margin-left: 0;
margin-right: auto;
}
figure.image.image-style-block-align-right {
margin-left: auto;
margin-right: 0;
}
Nuxt 注意事项
Nuxt 新建项目中许多文件夹是不需要的,比较重要的是:
pages用于处理路由servers用于处理特殊的前端请求,如数据交互等public表示公共资源plugins注册前端插件,用element-plus-icon时用到了
其他的就还好。
配合pm2/Nginx/Let’s Encrypt,基本功能就搞定了。