Уменьшите исполнимый размер окон

Вам нужно будет гидрировать визуализированный HTML-код на стороне клиента, чтобы реакция вступила во владение.

Создайте файл client.js с:

import React from 'react';
import ReactDOM from 'react-dom';
ReactDOM.hydrate(
  <App/>,
  document.querySelector('#app'),
);

отметьте, что гидрат должен соответствовать тому, что renderToString отрисовал.

Затем добавьте это как дополнительную запись в конфигурацию вашего веб-пакета:

module.exports = [
{
        /*Config for backend code*/ 
        entry: './src/server/server.js',
        target: 'node',
        output: {
            filename: 'server.js'
        },
        externals: [nodeExternals()],
        module: {
            rules: [
                {
                    test: /\.(js|jsx)$/,
                    exclude: /node_modules/,
                    use: {
                        loader: "babel-loader"
                    }
                },
                {
                    test: /\.html$/,
                    use: {
                        loader: "html-loader",
                        options: { minimize: true }
                    }
                },
                {
                    test: /\.css$/,
                    use: [MiniCssExtractPlugin.loader,"css-loader"]
                }
            ]
        },
        plugins: [
            new HtmlWebPackPlugin({
                template: "./public/index.html",
                filename:"./index.html"
            }),


  new MiniCssExtractPlugin({
            filename: "[name].css",
            chunkFilename:"[id].css"
        })
    ]
},
{ 
   entry: './client.js',
   output: {
      filename: 'bundle.js',
   },
   module: {
      rules: [ {
          test: /\.js$/,
          exclude: /node_modules/,
          loader: 'babel-loader',
      },
   ],
 },
]

Измените код рендеринга html, включив в него следующее:

const Html = ({ body, styles, title }) => `
  <!DOCTYPE html>
  <html>
    <head>
      <title>${title}</title>
    </head>
    <body style="margin:0">
      <div id="app">${body}</div>
      <script async src="/bundle.js"></script>
    </body>
  </html>
`;

Я не 100 % уверены, будет ли работать этот точный код, но это общая идея.

5
задан Martin Beckett 13 January 2009 в 02:11
поделиться

3 ответа

Вы не можете смешать CRT/MFC dlls. Движение из памяти...

Как другой предложенный ответ, Вы можете #define WIN32_LEAN_AND_MEAN и VC_EXTRALEAN. Они, вероятно, не помогут все же. Они имеют тенденцию быть об уменьшении времени изготовления - не финал exe размер.

За исключением восстановления MFC (Который является опцией - Вы могли восстановить его OS/, или если Вы чувствуете себя действительно развязными, / GL - но это, вероятно, приведет к большему количеству нисходящей забавы - надо надеяться, она уже создала/Gy).

Хорошо. Простые вещи попробовать. Создайте свое приложение с / GL / OS / GF/Gy/GA. В компоновщике Вы более или менее хотите/OPT:REF и/OPT:ICF и/LTCG.

Я должен сказать - сборка конечных версий от 30k до мегабайтов - слишком. Вы могли также передать карту/: компоновщику и видят то, что занимает все это место - но это очень очень утомительно.

Это почти кажется, что MFC не был создан с/Gy - но это будет удивительно.

7
ответ дан 18 December 2019 в 08:31
поделиться

Я не уверен, как разделить исполняемый файл, но другая мысль состоит в том, чтобы сжать его, например, с помощью upx, который распакует его и выполнит его на месте... Это уменьшает размер достаточно для Вас?

7
ответ дан 18 December 2019 в 08:31
поделиться

Можно попробовать Зависимость Walker для проверки, какой DLLs, что статический EXE-файл зависит от, затем если это зависит от библиотеки, Вы уверены, что это существует в машине Вашего клиента, можно скомпилировать без него и уменьшить размер.

1
ответ дан 18 December 2019 в 08:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: