Вам нужно будет гидрировать визуализированный 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 % уверены, будет ли работать этот точный код, но это общая идея.
Вы не можете смешать 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 - но это будет удивительно.
Я не уверен, как разделить исполняемый файл, но другая мысль состоит в том, чтобы сжать его, например, с помощью upx, который распакует его и выполнит его на месте... Это уменьшает размер достаточно для Вас?
Можно попробовать Зависимость Walker для проверки, какой DLLs, что статический EXE-файл зависит от, затем если это зависит от библиотеки, Вы уверены, что это существует в машине Вашего клиента, можно скомпилировать без него и уменьшить размер.