nuxt 按需加载moment.js
由于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$/),
]
}
}
这样就行了,效果很棒!
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据