Next.js 中引入 raw-loader 将文件内容以字符串形式导入以优化代码结构

望舒的头像
望舒
标签:
Next.jsraw-loaderNext.js 配置Webpack 配置Next.js 优化字符串导入

在日常开发中,我们经常会遇到需要一些长字符串文件的需求(如:base64字符串、固定的静态文章、网页隐私政策、协议、静态代码块等),为了避免这些长字符串侵入代码,我们可以引入 raw-loader 插件以优化代码结构

Next.js 项目开发 中,经常会遇到以下场景:

  • 需要导入一段 较长的静态字符串(如 Base64 图片、HTML 模板、Markdown 内容)。
  • 项目中需要引入 隐私政策、用户协议、静态文章内容
  • 想要直接把某些 固定代码块 当作纯文本字符串使用,而不是放在组件中。

如果把这些内容直接写在 React 组件里,不仅会让代码 冗长难维护,还会影响 可读性与可扩展性

这时候就可以使用 raw-loader 来优化代码结构,将 .txt 文件内容直接作为 字符串导入

1. 安装 raw-loader

复制
展开
npm install raw-loader --save-dev
# 或者使用 yarn
yarn add raw-loader -D

2. Next.js 配置 next.config.ts

next.config.ts 中加入 webpack 配置,告诉 Next.js 遇到 .txt 文件时用 raw-loader 来处理:

复制
展开
import type { NextConfig } from "next";

const nextConfig: NextConfig = {
  webpack: (config, { dev }) => {
    config.module.rules.push({
      test: /\.txt$/,
      use: ["raw-loader"],
    });
    return config;
  },
};

export default nextConfig;

3. 使用示例

比如项目中有一个 terms.txt 文件(存放隐私政策/协议),只需要这样导入即可:

复制
展开
import terms from "../assets/terms.txt";

export default function Page() {
  return (
    <div>
      <h1>用户协议</h1>
      <pre>{terms}</pre>
    </div>
  );
}

这样,terms.txt 的内容会被直接转成字符串导入到 React 组件中。

作者:https://blog.xn--rpv331d.com/望舒

链接:https://blog.xn--rpv331d.com/望舒/blog/99

转载注意保留文章出处...

‌​‌‌‌​​‌‌‌​​‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌​‌‌‌​‌‌‌‌‌‌‌‌​‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌​​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌​‌‌‌​‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌​​‌‌‌‌​‌​‌‌‌‌​‌​​​‌​​​​​​​‌‌​‌​‌‌‌‌​‌​​‌‌‌‌​​​​​​​​​​‌‌​​​‌‌​‌‌‌​​‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌​‌‌‌‌‌‌‌‌​‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌​​‌‌‌​​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌​​‌​‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌​‌‌‌‌​‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌‌​‌‌‌‌​‌​‌‌‌​‌‌‌‌​‌‌‌​​‌‌‌‌‌​‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌​‌​‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌​‌‌‌​‌‌‌‌​‌‌‌‌​‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌​​‌​​​​​‌‌‌​‌​‌‌​​​‌​‌‌​‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌​‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌​​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌​‌‌‌​‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌​‌‌‌​​‌‌‌​​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​​‌​‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​‌​‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌​​‌‌‌‌​‌​‌‌‌‌‌‌‌‌​‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌​​‌​‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌​‌‌‌‌​‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌‌​‌‌‌‌​‌​‌‌‌​‌‌‌‌​‌‌‌​​‌‌‌‌‌​‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌​‌​‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌​‌‌‌​‌‌‌‌​‌‌‌‌​‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌​​‌​​​​​‌‌‌​‌​‌‌​​​‌​‌‌​‌‌‌‌​‌‌‌​‌‌‌​​‌‌‌​​‌​‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌‌​‌​‌‌‌​‌‌‌​​‌‌‌​​‌​‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌​‌‌‌​‌‌‌​​‌‌‌‌​‌​‌‌‌​‌‌‌​​‌‌‌​​‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌​‌‌‌​‌‌‌‌‌‌‌‌​‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌​​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌​‌‌‌​‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌​​‌‌‌‌​‌​‌‌​‌‌​​​​‌‌‌‌​‌​‌​‌​​‌‌‌‌​‌‌​​​‌​​​​​​​​​​​​‌‌​​​‌‌​‌‌‌​​‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌​‌‌‌‌‌‌‌‌​‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌​​‌‌‌​​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌​​‌​‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌​‌‌‌‌​‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌‌​‌‌‌‌​‌​‌‌‌​‌‌‌‌​‌‌‌​​‌‌‌‌‌​‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌​‌​‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌​‌‌‌​‌‌‌‌​‌‌‌‌​‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌​​‌​​​​​‌‌‌​‌​‌‌​​​‌​‌‌​‌‌‌‌​‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌​​‌​‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌​‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌​​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌​‌‌‌​‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌​‌‌‌​​‌‌‌​​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​​‌​‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​‌​‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌​​‌‌‌‌​‌​‌‌‌‌‌‌‌‌​‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌​​‌​‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌​‌‌‌‌​‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌‌​‌‌‌‌​‌​‌‌‌​‌‌‌‌​‌‌‌​​‌‌‌‌‌​‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌​‌​‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌​‌‌‌​‌‌‌‌​‌‌‌‌​‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌​​‌​​​​​‌‌‌​‌​‌‌​​​‌​‌‌​‌‌‌‌​‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌​​‌​‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌​​‌​‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌‌​‌​‌‌‌​‌‌‌​​‌‌‌​​‌​‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌​‌‌‌​‌‌‌​​‌‌‌‌​‌​‌‌‌​‌‌‌​​‌‌‌​​‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌​‌‌‌​‌‌‌‌‌‌‌‌​‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌​​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌​‌‌‌​‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌​​‌‌‌‌​‌​‌‌‌‌​​​‌​‌‌​​​​​‌‌‌‌​​​​​‌‌​​​​‌‌‌‌‌‌‌​‌​​‌​​‌‌​​​‌​‌‌‌‌​​​‌‌​​‌​‌‌‌​‌​​​‌​​​​​‌​​​‌‌‌​​​​​‌​‌​‌​‌‌​‌‌​‌‌​​‌‌​​‌​​​‌​‌‌‌‌​‌​​‌‌​​​​‌‌‌‌​​‌‌‌‌‌​​​​​​‌‌‌‌‌‌​​​​​​​‌‌​‌‌‌‌​‌‌‌‌​‌​‌‌‌​‌‌‌‌​‌‌‌‌​‌​‌‌‌​‌‌‌‌​‌‌‌‌​‌​‌‌‌​‌‌‌​​‌‌‌​​‌​‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌​‌‌‌​‌‌‌​​‌‌‌‌​‌​‌‌
No data