由于moment属于纯js,他不需要window对象,所以我们有两种方式在nuxt中调用它。

传统引入

第一种:plugins

在plugins目录下创建一个moment.js文件,内容如下:

import Vue from "vue";
import moment from "moment";
import 'moment/locale/zh-cn';

moment.locale("zh-cn"); //汉化
Vue.prototype.$moment = moment;

我们将它挂载到vue上,然后再打开nuxt.config.js文件,引用插件

nuxt.config.js:

export default {
    plugins: [
        '@/plugins/moment', //moment.js
    ]
}

这样我们就可以通过this上下文获取到moment

第二种:import

制作一个插件还挺费事的,如果只是个别地方使用,也可以不使用插件,我们在对应的vue文件中直接引入

< template >
  ...
</template> 
<script >
import moment from "moment";
import "moment/locale/zh-cn";
moment.locale("zh-cn"); //汉化
export default {

}; 
</script>

这样也行,但是这两种方法并不是按需引入,他们会引入所有的语言文件,导致moment的包非常大!

未按需引入前,所有语言文件被加载,moment大小在600多kb,压缩后200多kb,而按需引入语言文件后,moment在200kb以下,压缩后60kb出头,这个比率还是很大的。

所以,按需引入,我觉得非常有必要,但是目前并没有人分享教程。于是我来了。

示例图

未按需引入:

按需引入:

按需引入

引入的方式还是按照上面的写法,我们需要改动的是nuxt.config.js文件,就以第一种为例子,第二种就不多说了,代码都一样。

nuxt.config.js:

import webpack from 'webpack'
export default {
    plugins: [
        '@/plugins/moment', //moment.js
    ],
    build: {
      plugins: [
        new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
      ]
    }
}

这样就行了,效果很棒!

分类: nuxt 标签: 按需引入momentnuxt

评论

暂无评论数据

暂无评论数据

目录