We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Next.js 是一款支持服务器渲染(Server Side Rendering,简称 SSR)和静态站点生成(Static Site Generation,简称 SSG)的 React 框架。
Next.js 已经火了好几年了,而我最近才开始尝试,一用就停不下来了,体验确实很好,以后做前端项目肯定都是优先用它了。
好处:
坏处:
next run dev
next run build
我的结论:部分可以。
扩展程序的代码分为三大类:
接下来逐个进行分析。
这一类完全等同于网页环境,所以可以用 Next.js 的 SSG 能力输出纯静态页面,然后复制粘贴进扩展程序里,再通过 url 打开即可。
做个详细的说明。
Next.js 的 SSG 产物大概是下面这个样子:
output/ --- .next/ 各种 js、css 等静态文件 --- options.html --- popup.html --- offscreen.html
我们只需要把 output 文件夹下面的内容复制粘贴到扩展程序的根目录下,即可在浏览器里通过 chrome-extension://extension-id/options.html 的方式打开这个页面了。
chrome-extension://extension-id/options.html
注意:一定要复制到根目录下,因为 html 里引用静态文件时默认是用的绝对路径,e.g. /_next/static/chunks/xxx.js。当然,也许可以通过修改 Next.js 的配置让它的引用路径是相对的,这一点有待验证。
/_next/static/chunks/xxx.js
复制到扩展程序根目录下后,文件夹结构是这样:
browser-extension/ --- .next/ --- options.html --- popup.html --- offscreen.html --- manifest.json --- 其它扩展程序文件如 serviceworker.js
这部分代码不能通过 Next.js 生成,还是只能通过 Rollup / Webpack 等工具生成。
这部分能否通过 Next.js 来开发,由于还没有实际操作过,所以我目前的看法是:存疑。
内容脚本支持 DOM 环境,所以代码是可以用 Next.js 来生成的,比如创建一个 app/content-script/page.tsx,然后在其中编写内容脚本的代码,最后分析一下 SSG 在 content-script.html 里引用的 <script> 标签,就能得到内容脚本的 js 文件列表了,然后写进 manifest.json 里即可。
app/content-script/page.tsx
<script>
但是,这里面有几个疑问:
const mod = await import('./path/to/module')
chrome-extension://extension-id/
等我实际操作之后再下定论。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
什么是 Next.js?
Next.js 是一款支持服务器渲染(Server Side Rendering,简称 SSR)和静态站点生成(Static Site Generation,简称 SSG)的 React 框架。
Next.js 已经火了好几年了,而我最近才开始尝试,一用就停不下来了,体验确实很好,以后做前端项目肯定都是优先用它了。
为什么要用 Next.js 开发扩展程序?
好处:
坏处:
next run dev
目前还不支持 SSG 模式,所以每次修改代码之后,如果想在扩展程序内看到变化,都需要重复这三个步骤:next run build
能不能用于扩展程序开发?
我的结论:部分可以。
扩展程序的代码分为三大类:
接下来逐个进行分析。
设置页、Popup 页、Offscreen Document 等
这一类完全等同于网页环境,所以可以用 Next.js 的 SSG 能力输出纯静态页面,然后复制粘贴进扩展程序里,再通过 url 打开即可。
做个详细的说明。
Next.js 的 SSG 产物大概是下面这个样子:
我们只需要把 output 文件夹下面的内容复制粘贴到扩展程序的根目录下,即可在浏览器里通过
chrome-extension://extension-id/options.html
的方式打开这个页面了。注意:一定要复制到根目录下,因为 html 里引用静态文件时默认是用的绝对路径,e.g.
/_next/static/chunks/xxx.js
。当然,也许可以通过修改 Next.js 的配置让它的引用路径是相对的,这一点有待验证。复制到扩展程序根目录下后,文件夹结构是这样:
Service Worker
这部分代码不能通过 Next.js 生成,还是只能通过 Rollup / Webpack 等工具生成。
内容脚本
这部分能否通过 Next.js 来开发,由于还没有实际操作过,所以我目前的看法是:存疑。
内容脚本支持 DOM 环境,所以代码是可以用 Next.js 来生成的,比如创建一个
app/content-script/page.tsx
,然后在其中编写内容脚本的代码,最后分析一下 SSG 在 content-script.html 里引用的<script>
标签,就能得到内容脚本的 js 文件列表了,然后写进 manifest.json 里即可。但是,这里面有几个疑问:
const mod = await import('./path/to/module')
的形式),应该就不会出现。chrome-extension://extension-id/
的前缀,不过这应该能通过修改 Next.js 的配置来实现。最终结论
等我实际操作之后再下定论。
The text was updated successfully, but these errors were encountered: