Nuxt.js允许你在自动生成的vendor.bundle.js文件中添加一些模块,以减少应用bundle的体积。如果你的应用依赖第三方模块,这个配置项是十分实用的。
Nuxtjs里配置全局的css文件、模块、库。(每个页面都会被引入,一般用于公共样式)
如果要使用sass就必须要分别安装node-sass和sass-loader。
在nuxt.config.js中,添加要使用的css资源:
Nuxt.js会自动识别被导入文件的扩展名,之后,webpack会使用对应的预处理器进行处理。前提是你安装了对应的预处理器。
配置Nuxt.js应用是开发模式还是生产模式。
dev属性的值会被nuxt命令覆盖:
在server.js中:
然后可在package.json中添加脚本配置如下:
注意:要运行上面的示例,你需要运行npm install --save-dev cross-env 安装 cross-env。 如果你在非 Windows 环境下开发,你可以不用安装 cross-env,这时需要把 start 脚本中的 cross-env 去掉。
Nuxt.js让你可以配置在客户端和服务端共享的环境变量。
例如(nuxt.config.js):
以上配置我们创建一个baseUrl环境变量,如果应用设定了BASE_URL环境变量,那么baseUrl的值等于BASE_URL的值,否则其值为 http://localhost:3000 。
然后,我们可以通过以下两种方式来使用baseUrl变量:
1.通过process.env.baseUrl
2.通过context.baseUrl
举个例子,我们可以利用它来配置axios的自定义实例。
plugins/axios.js:
然后在页面中,我们可以使用import axios from '~plugins/axios'引入axios模块。
配置Nuxt.js应用生成静态站点的具体方式。
当运行nuxt generate命令或在编码中调用nuxt.generate()时,Nuxt.js会使用generate属性的配置。
借助head属性,Nuxt.js让你可以在nuxt.config.js中配置应用的meta信息。
想了解head属性的可用配置,可以参考vue-meta配置文档。
modules是Nuxt.js扩展,可以扩展它的核心功能并添加无限的集成。
用于设置路径解析的模块目录,例如:webpack resolveLoading, nodeExternal和postcss。配置路径为相对路径options.rootDir
plugins属性使得你可以轻易地为Nuxt.js配置使用Vue.js插件。
例如(nuxt.config.js):
然后我们需要创建plugins/vue-notifications.js文件:
plugins属性配置的所有插件会在Nuxt.js应用初始化之前被加载导入。
每次你需要使用 Vue.use() 时,你需要在 plugins/ 目录下创建相应的插件文件,并在 nuxt.config.js 中的 plugins 配置项中配置插件的路径。
设置Nuxt.js应用的根目录。
该配置项的值会被nuxt命令行指定的路径参数覆盖(例如:nuxt my-app/会将rootDir的值覆盖设置为my-app/目录对应的绝对路径)。
Nuxt.js允许为应用程序内部nuxt.config.js中定义服务器访问主机和端口。
设置Nuxt.js应用的源码目录
用于设置页面切换过渡效果的默认属性值。
默认值:
例如(nuxt.config.js):
transition用于设置页面切换过渡效果。
用于设置布局过渡的默认属性。配置与layout相同
默认:
例如(nuxt.config.js):
全局配置示例css:
vue单页面应用渲染是从服务器获取所需js,在客户端将其解析生成html挂载于id为app的DOM元素上,这样会存在两大问题。
除此之外,nuxt与vue还有一些其他方面的区别。
下图为关于nuxt的简单概述
vue文件中可直接使用
sass文件如需解析,nuxt.config.js中配置css属性
封装axios,解决每个请求前加baseURL
plugins/axios.js
index.vue
为避免每个页面都引入moment,执行 moment.locale('zh-cn') ,可将其定义为全局方法
icon.png文件存放在static文件夹下,nuxt.config.js中配置head属性
中间件存放于middleware文件夹下,按使用场景可分为全局中间件和单页面中间件
中间件执行流程顺序:
nuxt.config.js ->匹配布局 ->匹配页面
按照index.vue通过 require('mini-toastr') 引入miniToastr,运行程序报错如下
打印miniToastr发现为一Module对象,init挂载在其default属性上
所以修改引入方法为
为什么需要require().default
关于如上介绍,测试关于两种模块的导出方法
方式一:export default
新建test.js文件
vue页面导入
此时 require('~/plugins/con.js') 打印为
方式二:module.exports
此时 require('~/plugins/con.js') 打印为