recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - vue webpack se développe anormalement après l'empaquetage

J'ai fait une démo en utilisant vue
Le site entier ne fait qu'une seule page
Le code ne fait que 300 lignes
Voici l'introduction dans main.js

Ce qui suit est la taille après emballage

Pourquoi est-il si grand ? ? ?
Une seule page
Trouvez la solution !

Les packages introduits sont si volumineux, mais element n'introduit toujours que certains composants. Existe-t-il des méthodes d'optimisation ?

巴扎黑巴扎黑2699 Il y a quelques jours853

répondre à tous(3)je répondrai

  • ringa_lee

    ringa_lee2017-06-26 10:57:00

    élément vue vue-router vuex
    Cette taille est tout à fait normale

    répondre
    0
  • ringa_lee

    ringa_lee2017-06-26 10:57:00

    Vous devez inclure les modules importés de node_modules, sinon ces éléments apparaîtront de nulle part. .
    Vous n'avez pas inclus element-ui, vue et axios

    répondre
    0
  • 为情所困

    为情所困2017-06-26 10:57:00

    Lorsque vous emballez, tous les packages dont vous dépendez seront compressés. Si vous ne voulez pas que le fournisseur soit si grand, vous pouvez introduire le CDN étape par étape

    .

    Option 1 : L'option externe est ce que j'ai dit à propos de l'introduction du CDN. Il sera bien préférable de l'introduire via la distribution.

    // webpack.prod.config.js
    // 多余代码省略
    module.exports = {
        externals: {
            'vue': 'window.Vue',
            'vuex': 'window.Vuex',
            'vue-router': 'window.VueRouter'
            ...
        }
    }
    
    // 配置externals之后,webpack不会把配置项中的代码打包进去,别忘了需要在外部引入cdn上的js文件
    // html
    <body>
        <script src="XXX/cdn/vue.min.js"></script>
        ......
    </body>

    Option 2 : webpack.DLLplugin

    webpack.dll.config.js :

    // webpack.dll.config.js
    
    // 需要打包到一起的js文件
    const vendors = [
        'vue',
        'vuex',
        'vue-router',
        'axios',
        'moment',
        'vue-echarts'
    ];
    
    module.exports = {
        // 也可以设置多个入口,多个vendor,就可以生成多个bundle
        entry: {
            vendor: vendors
        },
    
        // 输出文件的名称和路径
        output: {
            filename: '[name].bundle.js',
            path: path.join(__dirname, '..', 'static'),
            library: '[name]_[chunkhash]',
        },
    
        plugins: [
            // 这时候打包需要设置环境为production,因为像vue之类在
            // dev环境下会比prod环境多一些信息,在生产环境如果打包的是dev代码,
            // vue也会给出警告
            new webpack.DefinePlugin({
                'process.env': {
                    NODE_ENV: '"production"'
                }
            }),
            new webpack.DllPlugin({
                path: path.join(__dirname, '..', 'static', '[name]-manifest.json'),
                name: '[name]_[chunkhash]',
                context: __dirname
            }),
            
            // 压缩
            new webpack.optimize.UglifyJsPlugin({
                compress: {
                    warnings: false
                },
                sourceMap: true
            }),
    
            new webpack.LoaderOptionsPlugin({
                minimize: true
            }),
            new webpack.optimize.OccurrenceOrderPlugin()
        ]
    }

    Je n'ai pas recherché le deuxième - -

    répondre
    0
  • Annulerrépondre