# nuxtjs **Repository Path**: tya0756/nuxtjs ## Basic Information - **Project Name**: nuxtjs - **Description**: nuxt3项目架子。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-09-14 - **Last Updated**: 2023-11-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Nuxt 3 说明文档 ## 命令说明 需要了解更多细节请参考 [官方文档](https://nuxt.com/docs/getting-started/introduction) 、[中文官方文档](https://nuxt.com.cn/docs/getting-started/introduction)。 ### 依赖安装 ```bash # npm npm install # pnpm pnpm install # yarn yarn install ``` ### 开发调试 默认服务启动地址: `http://localhost:3000`: ```bash # npm npm run dev # pnpm pnpm run dev # yarn yarn dev ``` ### 打包生产 在`.output`目录下产生一个用于`ssr`的包,其中的`public`目录下的文件也可用作静态打包资源: ```bash # npm npm run build # pnpm pnpm run build # yarn yarn build ``` 打包静态资源,在`dist`目录下生成一个可部署的静态资源包,同样在`.output/public`下也有一样的静态资源包: ```bash #npm npm run generate # pnpm pnpm run generate # yarn yarn generate ``` 本地启动服务查看打包完成的静态资源: ```bash # npm npm run preview # pnpm pnpm run preview # yarn yarn preview ``` > 了解更多信息请查看 [官方文档部署说明](https://nuxt.com/docs/getting-started/deployment)、[官方中文文档部署说明](https://nuxt.com.cn/docs/getting-started/deployment) 。 ## 部分目录结构说明 ```bash ├── commitlint.config.ts ---#提交规范配置文件,请谨慎修改 ├── nuxt.config.ts ---------#nuxt的配置文件 ├── prettier.config.js -----#prettier格式化配置项,请谨慎修改 ├── README.md --------------#说明文档 ├── src --------------------#资源目录 | ├── app -----------------#nuxt3的路由配置目录 | ├── app.vue -------------#根页面模板 | ├── error.vue -----------#自定义错误页面,配置该项后会覆盖默认的404.html | ├── assets | ├── components ----------#组件目录 | ├── layouts -------------#页面模板配置目录,默认为app.vue,如果同时使用了layouts和app.vue需要在组件中单独 引入的形式单独使用 | ├── public --------------#公共资源目录 | ├── request | ├── server --------------#ssr相关配置,暂时用不到 | ├── utils | └── views ---------------#页面存放位置,这里为了启用自定义路由文件不和默认/pages混淆所以用的views命名 ├── stylelint.config.js ----#stylelint配置文件,请谨慎修改 ├── tsconfig.json └── yarn.lock ``` ### nuxt.config.js 部分配置项说明 ```ts export default defineNuxtConfig({ // 开发工具项,此项只在开发模式生效,在页面底部会有一个nuxt的调试工具 devtools: { enabled: true }, // nuxt模块注册,在测试第三方工具库时发现使用plugin注册的库在加载时样式会有延迟,而使用nuxt-module的nuxt库则不会有这种问题 modules: ["@vant/nuxt"], //开发选项 devServer: { host: "0.0.0.0", }, // vite配置项 vite: { server: { proxy: { "/api": { target: "http://localhost:3001", changeOrigin: true, }, }, }, }, // 静态资源路由配置,该项配置仅针对build命令进行判断是否需要生成对应路由的的静态页面,对于ssg方案的generate命令会对每一个页面全量生成 generate: { routes: ["/", "/inside"], }, }); ``` > 更多详细目录结构说明请见[官方中文文档](https://nuxt.com.cn/docs/guide/concepts/auto-imports) ## 开发注意事项 ### 1. 关于`dom`或者浏览器环境独有的api调用 - 调用此类`api`时需要做一次环境判断以免`nuxt`打包时出错 ```js if (process.client) { // 此处调用相关api } ``` ### 2. `NuxtLink`标签 - `nuxtlink`在使用时对于某些需要`seo`的页面跳转请设置`external`为 `true`,该项表示跳转为一个新的外部链接,在`nuxt`跳转时就会对该页面进行一次请求获取完整的`html`页面结构,否则会转进`nuxt`内部路由跳转 ```vue ``` - 在对页面状态控制上由于是采用的外链形式的``标签就导致每次点击链接都会请求一个新的`html`页面,不同于单页应用的场景,此时对于某些全局的组件而言如果需要状态控制如果是使用`store`的存储形式是无法更改的,此时一般使用路由传参的形式进行状态控制。 ```vue ``` ### 3. 引入外链 `js、css` - 某些情况下我们可能需要在页面渲染之前就执行某些`js`或者解析完毕`css`,这样在页面渲染的时候就不会因为资源的加载晚于`nuxt`返回的`html`结构而产生页面的闪烁。 - 举个简单的例子,当我们需要定义`rem`的转换比例的时候,此时必须保证执行`rem`转换的`js`在首页渲染之前执行完毕并成功更改根节点字体大小,否则页面布局就会错乱导致出现闪烁,此时我们可以做如下处理: ```ts // 以下代码为nuxt.config.ts export default defineNuxtConfig({ ...// 省略部分配置项 app:{ head:{ script:[ { src:'xxx' // 这里一定是包含域名的绝对路径,也就是script标签中的src属性 tagPosition:'bodyOpen' // 这里是标签插入位置,如果不写默认插入在head标签中 textContent:'' // 这里是标签内的内容,可以以字符串的形式传入(比如某些非常简短的代码) } ] } } }) // 同样的配置也可以在app.vue的useHead中写入(这里推荐写在配置文件中) // 以下为app.vue ``` > 更多配置见[官方文档](https://nuxt.com.cn/docs/api/nuxt-config#head),对于包含属性使用`nuxt3`有完整的类型提示 ### 4. 动态切换模板 - `nuxt`的模板会静态生成一个`html`结构