Skip to content

Commit 997e320

Browse files
authored
docs(cn): improve the translations of guides/hmr (#1861)
1 parent 9828e5b commit 997e320

File tree

5 files changed

+47
-46
lines changed

5 files changed

+47
-46
lines changed

src/content/api/loaders.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ resolve(context: string, request: string): Promise<string>
350350
351351
### this.hot $#thishot$
352352
353-
loaders 的 HMR(热模块替换)相关信息。
353+
loaders 的 HMR(模块热替换)相关信息。
354354
355355
```javascript
356356
module.exports = function (source) {

src/content/configuration/dev-server.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ module.exports = {
228228

229229
`'log' | 'info' | 'warn' | 'error' | 'none' | 'verbose'`
230230

231-
允许在浏览器中设置日志级别,例如在重载之前,在一个错误之前或者 [热模块替换](/concepts/hot-module-replacement/) 启用时。
231+
允许在浏览器中设置日志级别,例如在重载之前,在一个错误之前或者 [模块热替换](/concepts/hot-module-replacement/) 启用时。
232232

233233
**webpack.config.js**
234234

@@ -889,7 +889,7 @@ npx webpack serve --host local-ipv6
889889

890890
`'only'` `boolean = true`
891891

892-
启用 webpack 的 [热模块替换](/concepts/hot-module-replacement/) 特性:
892+
启用 webpack 的 [模块热替换](/concepts/hot-module-replacement/) 特性:
893893

894894
**webpack.config.js**
895895

@@ -914,7 +914,7 @@ npx webpack serve --hot
914914
npx webpack serve --no-hot
915915
```
916916

917-
启用热模块替换功能,在构建失败时不刷新页面作为回退,使用 `hot: 'only'`
917+
启用模块热替换功能,在构建失败时不刷新页面作为回退,使用 `hot: 'only'`
918918

919919
**webpack.config.js**
920920

src/content/guides/development.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -280,13 +280,13 @@ W> `webpack-dev-server` 在编译之后不会写入任何输出文件,而是
280280

281281
`webpack-dev-server` 具有许多可配置的选项。参阅 [配置文档](/configuration/dev-server) 以了解更多配置选项。
282282

283-
T> 现在 server 正在运行,也许你想试试 [热模块替换](/guides/hot-module-replacement)
283+
T> 现在 server 正在运行,也许你想试试 [模块热替换](/guides/hot-module-replacement)
284284

285285
### 使用 webpack-dev-middleware $#using-webpack-dev-middleware$
286286

287287
`webpack-dev-middleware` 是一个包装器,它可以把 webpack 处理过的文件发送到 server。这是 `webpack-dev-server` 内部的原理,但是它也可以作为一个单独的包使用,以便根据需求进行更多自定义设置。下面是一个 `webpack-dev-middleware` 配合 `express` server 的示例。
288288

289-
首先,安装 `express` 和 `webpack-dev-middleware`
289+
首先,安装 `express`  `webpack-dev-middleware`
290290

291291
```bash
292292
npm install --save-dev express webpack-dev-middleware
@@ -424,7 +424,7 @@ Example app listening on port 3000!
424424

425425
打开浏览器,访问 `http://localhost:3000`,应该看到 webpack 应用程序已经运行!
426426

427-
T> 参阅 [热模块替换](/guides/hot-module-replacement/) 指南了解更多关于热模块替换的运行机制
427+
T> 参阅 [模块热替换](/guides/hot-module-replacement/) 指南了解更多关于模块热替换的运行机制
428428

429429
## 调整文本编辑器 $#adjusting-your-text-editor$
430430

src/content/guides/hot-module-replacement.mdx

Lines changed: 39 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ translators:
2525
- QC-L
2626
- jacob-lcs
2727
- lcxfs1991
28+
- Yucohny
2829
related:
2930
- title: 概念 - 模块热替换
3031
url: /concepts/hot-module-replacement
@@ -34,20 +35,20 @@ related:
3435

3536
T> 本指南继续沿用 [开发环境](/guides/development) 指南中的代码示例。
3637

37-
模块热替换(hot module replacement 或 HMR)是 webpack 提供的最有用的功能之一。它允许在运行时更新所有类型的模块,而无需完全刷新。本页面重点介绍其**实现**,而 [概念](/concepts/hot-module-replacement) 页面提供了更多关于它的工作原理以及为什么它有用的细节。
38+
模块热替换HMR是 webpack 提供的最有用的功能之一。它能帮助在运行时不完全刷新页面的情况下更新所有类型的模块。本页面重点介绍 **如何使用**,而 [概念](/concepts/hot-module-replacement) 页面提供了更多关于它的工作原理以及为什么它有用的细节。
3839

39-
W> **HMR** 不适用于生产环境,这意味着它应当用于开发环境。更多详细信息,
40-
请查看 [生产环境](/guides/production) 指南
40+
W> **HMR** 不适用于生产环境,而应当用于开发环境。
41+
参阅 [生产环境](/guides/production) 指南以了解更多详细信息
4142

4243
## 启用 HMR $#enabling-hmr$
4344

4445
此功能可以很大程度提高生产效率。我们要做的就是更新 [webpack-dev-server](https://github.com/webpack/webpack-dev-server) 配置,
4546
然后使用 webpack 内置的 HMR 插件。我们还要删除掉 `print.js` 的入口起点,
4647
因为现在已经在 `index.js` 模块中引用了它。
4748

48-
`webpack-dev-server` v4.0.0 开始,热模块替换是默认开启的
49+
`webpack-dev-server` v4.0.0 开始,模块热替换是默认开启的
4950

50-
T> 如果你在技术选型中使用了 `webpack-dev-middleware` 而没有使用 `webpack-dev-server`,请使用 [`webpack-hot-middleware`](https://github.com/webpack-contrib/webpack-hot-middleware) 依赖包,以在你的自定义服务器或应用程序上启用 HMR。
51+
T> 如果在技术选型中使用的是 `webpack-dev-middleware` 而非 `webpack-dev-server`,请使用 [`webpack-hot-middleware`](https://github.com/webpack-contrib/webpack-hot-middleware) 依赖以在自定义服务器或应用程序上启用 HMR。
5152

5253
**webpack.config.js**
5354

@@ -78,7 +79,7 @@ T> 如果你在技术选型中使用了 `webpack-dev-middleware` 而没有使用
7879
};
7980
```
8081

81-
你也可以为 HMR 提供入口
82+
也可以为 HMR 提供入口起点
8283

8384
**webpack.config.js**
8485

@@ -91,23 +92,23 @@ T> 如果你在技术选型中使用了 `webpack-dev-middleware` 而没有使用
9192
entry: {
9293
app: './src/index.js',
9394
- print: './src/print.js',
94-
+ // Runtime code for hot module replacement
95+
+ // 模块热替换的运行时代码
9596
+ hot: 'webpack/hot/dev-server.js',
96-
+ // Dev server client for web socket transport, hot and live reload logic
97+
+ // 用于 web 套接字传输、热重载逻辑的 web server 客户端
9798
+ client: 'webpack-dev-server/client/index.js?hot=true&live-reload=true',
9899
},
99100
devtool: 'inline-source-map',
100101
devServer: {
101102
static: './dist',
102-
+ // Dev server client for web socket transport, hot and live reload logic
103+
+ // 用于 web 套接字传输、热重载逻辑的 web server 客户端
103104
+ hot: false,
104105
+ client: false,
105106
},
106107
plugins: [
107108
new HtmlWebpackPlugin({
108109
title: 'Hot Module Replacement',
109110
}),
110-
+ // Plugin for hot module replacement
111+
+ // 模块热替换的插件
111112
+ new webpack.HotModuleReplacementPlugin(),
112113
],
113114
output: {
@@ -118,9 +119,9 @@ T> 如果你在技术选型中使用了 `webpack-dev-middleware` 而没有使用
118119
};
119120
```
120121

121-
T> 你可以通过以下命令来修改 [webpack-dev-server](https://github.com/webpack/webpack-dev-server) 的配置:`webpack serve --hot-only`
122+
T> 可以通过以下命令修改 [webpack-dev-server](https://github.com/webpack/webpack-dev-server) 的配置:`webpack serve --hot-only`
122123

123-
现在,我们来修改 `index.js` 文件,以便当 `print.js` 内部发生变更时可以告诉 webpack 接受更新的模块。
124+
现在修改 `index.js` 文件,以便检测到 `print.js` 内部发生更改时告诉 webpack 接受更新的模块。
124125

125126
**index.js**
126127

@@ -159,8 +160,8 @@ T> 你可以通过以下命令来修改 [webpack-dev-server](https://github.com/
159160

160161
```diff
161162
export default function printMe() {
162-
- console.log('I get called from print.js!');
163-
+ console.log('Updating print.js...');
163+
- console.log('我在 print.js 中被调用了!');
164+
+ console.log('正在更新 print.js……');
164165
}
165166
```
166167

@@ -173,12 +174,12 @@ main.js:4395 [WDS] Hot Module Replacement enabled.
173174
+ main.js:4395 [WDS] App hot update...
174175
+ main.js:4330 [HMR] Checking for updates on the server...
175176
+ main.js:10024 Accepting the updated printMe module!
176-
+ 0.4b8ee77….hot-update.js:10 Updating print.js...
177+
+ 0.4b8ee77….hot-update.js:10 正在更新 print.js……
177178
+ main.js:4330 [HMR] Updated modules:
178179
+ main.js:4330 [HMR] - 20
179180
```
180181

181-
## 通过 Node.js API $#via-the-nodejs-api$
182+
## 通过 Node.js API 启用 HMR $#via-the-nodejs-api$
182183

183184
在 Node.js API 中使用 webpack dev server 时,不要将 dev server 选项放在 webpack 配置对象中。而是在创建时,
184185
将其作为第二个参数传递。例如:
@@ -199,16 +200,16 @@ const webpackDevServer = require('webpack-dev-server');
199200
const config = {
200201
mode: 'development',
201202
entry: [
202-
// Runtime code for hot module replacement
203+
// 模块热替换的运行时代码
203204
'webpack/hot/dev-server.js',
204-
// Dev server client for web socket transport, hot and live reload logic
205+
// 用于 web 套接字传输、热重载逻辑的 web server 客户端
205206
'webpack-dev-server/client/index.js?hot=true&live-reload=true',
206-
// Your entry
207+
// 你的入口起点
207208
'./src/index.js',
208209
],
209210
devtool: 'inline-source-map',
210211
plugins: [
211-
// Plugin for hot module replacement
212+
// 模块热替换的插件
212213
new webpack.HotModuleReplacementPlugin(),
213214
new HtmlWebpackPlugin({
214215
title: 'Hot Module Replacement',
@@ -222,23 +223,23 @@ const config = {
222223
};
223224
const compiler = webpack(config);
224225

225-
// `hot` and `client` options are disabled because we added them manually
226+
// 由于手动添加了 `hot` `client` 参数,其将被禁用
226227
const server = new webpackDevServer({ hot: false, client: false }, compiler);
227228

228229
(async () => {
229230
await server.start();
230-
console.log('dev server is running');
231+
console.log('dev server 正在运行');
231232
})();
232233
```
233234

234-
查看 [`webpack-dev-server` 的 Node.js API 的完整文档]
235+
参阅 [`webpack-dev-server` 的 Node.js API 的完整文档](/api/webpack-dev-server/) 以了解更多
235236

236-
T> 如果你正在使用 [`webpack-dev-middleware`](/guides/development#using-webpack-dev-middleware),可以通过 [`webpack-hot-middleware`](https://github.com/webpack-contrib/webpack-hot-middleware) 依赖包,在自定义 dev server 中启用 HMR。
237+
T> 如果正在使用 [`webpack-dev-middleware`](/guides/development#using-webpack-dev-middleware),可以通过 [`webpack-hot-middleware`](https://github.com/webpack-contrib/webpack-hot-middleware) 依赖在自定义 dev server 中启用 HMR。
237238

238239
## 问题 $#gotchas$
239240

240-
模块热替换可能比较难以掌握。为了说明这一点,我们回到刚才的示例中。如果你继续点击示例页面上的按钮,
241-
你会发现控制台仍在打印旧的 `printMe` 函数。
241+
模块热替换可能比较难以掌握。为了说明这一点,我们回到刚才的示例中。如果继续点击示例页面上的按钮
242+
会发现控制台仍在打印旧的 `printMe` 函数。
242243

243244
这是因为按钮的 `onclick` 事件处理函数仍然绑定在旧的 `printMe` 函数上。
244245

@@ -257,7 +258,7 @@ T> 如果你正在使用 [`webpack-dev-middleware`](/guides/development#using-we
257258
element.innerHTML = _.join(['Hello', 'webpack'], ' ');
258259

259260
btn.innerHTML = 'Click me and check the console!';
260-
btn.onclick = printMe; // onclick event is bind to the original printMe function
261+
btn.onclick = printMe; // onclick 事件仍然绑定着原本的 printMe 函数
261262

262263
element.appendChild(btn);
263264

@@ -270,7 +271,7 @@ T> 如果你正在使用 [`webpack-dev-middleware`](/guides/development#using-we
270271

271272
if (module.hot) {
272273
module.hot.accept('./print.js', function() {
273-
console.log('Accepting the updated printMe module!');
274+
console.log('正在接受更新后的 printMe 模块!');
274275
- printMe();
275276
+ document.body.removeChild(element);
276277
+ element = component(); // 重新渲染 "component",以便更新 click 事件处理函数
@@ -284,7 +285,7 @@ T> 如果你正在使用 [`webpack-dev-middleware`](/guides/development#using-we
284285

285286
## HMR 加载样式 $#hmr-with-stylesheets$
286287

287-
借助于 `style-loader`,使用模块热替换来加载 CSS 实际上极其简单。此 loader 在幕后使用了 `module.hot.accept`,在 CSS 依赖模块更新之后,会将其 patch(修补) 到 `<style>` 标签中。
288+
借助 `style-loader` 后,使用模块热替换加载 CSS 实际上极其简单。此 loader 在幕后使用了 `module.hot.accept`,在 CSS 依赖模块更新之后,会将其修补到 `<style>` 标签中。
288289

289290
首先使用以下命令安装两个 loader :
290291

@@ -368,7 +369,7 @@ body {
368369
element.innerHTML = _.join(['Hello', 'webpack'], ' ');
369370

370371
btn.innerHTML = 'Click me and check the console!';
371-
btn.onclick = printMe; // onclick event is bind to the original printMe function
372+
btn.onclick = printMe; // onclick 事件仍然绑定着原本的 printMe 函数
372373

373374
element.appendChild(btn);
374375

@@ -380,9 +381,9 @@ body {
380381

381382
if (module.hot) {
382383
module.hot.accept('./print.js', function() {
383-
console.log('Accepting the updated printMe module!');
384+
console.log('正在接受更新后的 printMe 模块!');
384385
document.body.removeChild(element);
385-
element = component(); // Re-render the "component" to update the click handler
386+
element = component(); // 重新渲染 component 以更新点击事件处理程序
386387
document.body.appendChild(element);
387388
})
388389
}
@@ -404,10 +405,10 @@ body {
404405

405406
社区还提供许多其他 loader 和示例,可以使 HMR 与各种框架和库平滑地进行交互……
406407

407-
- [React Hot Loader](https://github.com/gaearon/react-hot-loader): 实时调整 react 组件。
408-
- [Vue Loader](https://github.com/vuejs/vue-loader): 此 loader 支持 vue 组件的 HMR,提供开箱即用体验。
409-
- [Elm Hot webpack Loader](https://github.com/klazuka/elm-hot-webpack-loader): 支持 Elm 编程语言的 HMR。
410-
- [Angular HMR](https://github.com/gdi2290/angular-hmr): 没有必要使用 loader!直接修改 NgModule 主文件就够了,它可以完全控制 HMR API。
411-
- [Svelte Loader](https://github.com/sveltejs/svelte-loader): 此 loader 开箱即用地支持 Svelte 组件的热更新。
408+
- [React Hot Loader](https://github.com/gaearon/react-hot-loader)实时调整 react 组件。
409+
- [Vue Loader](https://github.com/vuejs/vue-loader)此 loader 支持 vue 组件的 HMR,提供开箱即用体验。
410+
- [Elm Hot webpack Loader](https://github.com/klazuka/elm-hot-webpack-loader)支持 Elm 编程语言的 HMR。
411+
- [Angular HMR](https://github.com/gdi2290/angular-hmr)没有必要使用 loader!直接修改 NgModule 主文件就够了,它可以完全控制 HMR API。
412+
- [Svelte Loader](https://github.com/sveltejs/svelte-loader)此 loader 开箱即用地支持 Svelte 组件的热更新。
412413

413-
T> 如果你知道任何其他 loader 或 plugin,能够有助于或增强模块热替换(hot module replacement),请提交一个 pull request 以添加到此列表中!
414+
T> 如果你知道任何其他 loader 或 plugin,能够有助于或增强模块热替换,请提交一个 pull request 以添加到此列表中!

src/content/guides/production.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ T> 以下示例来源于 [tree shaking](/guides/tree-shaking) 和 [开发环境]
3535

3636
## 配置 $#setup$
3737

38-
**development(开发环境)****production(生产环境)** 这两个环境下的构建目标存在着巨大差异。在**开发环境**中,我们需要:强大的 source map 和一个有着 live reloading(实时重新加载) 或 hot module replacement(热模块替换) 能力的 localhost server。而**生产环境**目标则转移至其他方面,关注点在于压缩 bundle、更轻量的 source map、资源优化等,通过这些优化方式改善加载时间。由于要遵循逻辑分离,我们通常建议为每个环境编写**彼此独立的 webpack 配置**
38+
**development(开发环境)****production(生产环境)** 这两个环境下的构建目标存在着巨大差异。在**开发环境**中,我们需要:强大的 source map 和一个有着 live reloading(实时重新加载) 或 hot module replacement(模块热替换) 能力的 localhost server。而**生产环境**目标则转移至其他方面,关注点在于压缩 bundle、更轻量的 source map、资源优化等,通过这些优化方式改善加载时间。由于要遵循逻辑分离,我们通常建议为每个环境编写**彼此独立的 webpack 配置**
3939

4040
虽然,以上我们将 _生产环境__开发环境_ 做了细微区分,但是,请注意,我们还是会遵循不重复原则(Don't repeat yourself - DRY),保留一个 "common(通用)" 配置。为了将这些配置合并在一起,我们将使用一个名为 [`webpack-merge`](https://github.com/survivejs/webpack-merge) 的工具。此工具会引用 "common" 配置,因此我们不必再在环境特定(environment-specific)的配置中编写重复代码。
4141

0 commit comments

Comments
 (0)