首页 > 为什么我的js和css可以按需加载但是却销毁不了 而且css也没有被提取出来

为什么我的js和css可以按需加载但是却销毁不了 而且css也没有被提取出来

这是我的 webpack.config.js和main.js
图4为页面结构
为什么我的js和css可以按需加载但是却销毁不了 而且css也没有被提取出来
有没有知道是什么原因的啊
你看看哪不对啊


我们先来说css部分,你觉得dom结构里平白多了style标签很不爽,尤其在用完之后还不自动删除不爽,对吧?那你需要看的是style-loader的Reference-counted API,通过以下手段:

//引入想要的css文件
var style = require('style/useable!css!./file.css');

//激活,也就是在dom中添加style标签
style.use();

//销毁,也就是不想用时,可以从dom中把style标签再删掉
style.unuse(); // = style.unref();

至于你说“没有提取出来”,那是因为你用的是style-loader,如果真想提取文件,应该用extract-text-webpack-plugin。

最后关于javascript部分,script标签从dom中删除这件事,其实意义不大,这么说吧,对你来说,最想把她从dom中移除的原因是什么?因为你的用户会检查你的dom?还是因为你觉得script标签杵在那里影响了你的心情?

实际上,当script标签添加之后,脚本内容开始下载/解析,甚至执行,该被运行时记录的变量都已经记录了。如果真有变量需要销毁,这也不是c,js有自己的垃圾回收机制,只要你没写出内存泄漏的代码,内存中的废弃物是会自动销毁的;换句话说,如果你代码写的倒出是问题,就算手动删了那个script标签又如何?照样内存泄漏!

补充:

如果你想提取.vue文件里的style css内容,那你的loader配置也没配对地方,应该是在vue属性里配置:

vue: {
    loaders: {
        js: 'babel-loader?presets[]=es2015&plugins[]=transform-runtime&comments=false',
        css: ExtractTextPlugin.extract(['css-loader'])
    }
},
plugins: [
    new ExtractTextPlugin('output.css')
]

具体参考extract-css

【热门文章】
【热门文章】