Dva: рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рдмрд╛рдж, рдкреГрд╖реНрда рдЦреЛрд▓реЗрдВ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВ рдЪреЗрддрд╛рд╡рдиреА: рдХреГрдкрдпрд╛ `require("history").createHashHistory` рдХреЗ рдмрдЬрд╛рдп `require("history/createHashHistory")` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 17 рдорд╛рд░реНрдЪ 2019  ┬╖  16рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dvajs/dva

рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб: (рдХреГрдкрдпрд╛ рдкреБрдирд░реБрддреНрдкрд╛рджрд┐рдд рдХреЛрдб рдпрд╛ рдЪрд░рдг рдкреНрд░рджрд╛рди рдХрд░реЗрдВ)

1.dva рдирдпрд╛ рдРрдк
2. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ webpack.config.js рдмрдирд╛рдПрдВ:
рдирд┐рд░реНрдпрд╛рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлрд╝рдВрдХреНрд╢рди (webpackConfig) {
рд╣рдЯрд╛рдПрдБ webpackConfig.resolve.alias['@babel/runtime'];
рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧ рд▓реМрдЯрд╛рдПрдВ;
}
2.npm рдкреНрд░рд╛рд░рдВрдн

рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░: (рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рднрд╛рд╡)

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкреГрд╖реНрда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░: (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рднрд╛рд╡)

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рд╛рдВрддреНрд╡рдирд╛ рдЙрддреНрдкрд╛рджрди рдЪреЗрддрд╛рд╡рдиреА: рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ require("history").createHashHistory рдХреЗ рдмрдЬрд╛рдп require("history/createHashHistory") ред рдмрд╛рдж рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЕрдЧрд▓реА рдмрдбрд╝реА рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛

рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг: (рдХрд┐рд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реИ)

рдбреАрд╡рд╛-рдХреНрд▓реА рд╕рдВрд╕реНрдХрд░рдг 0.10.0

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдХреНрдпрд╛ dva рдЕрдиреБрд░рдХреНрд╖рд┐рдд рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реИ?рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдЗрддрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╣реИ, рдЗрд╕реЗ рдмрдВрдж рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рд╕рднреА 16 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

WechatIMG24

рдХреГрдкрдпрд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХрджрдо рджреЗрдВред

1.dva рдирдпрд╛ рдРрдк
2. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ webpack.config.js рдмрдирд╛рдПрдВ:
рдирд┐рд░реНрдпрд╛рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлрд╝рдВрдХреНрд╢рди (webpackConfig) {
рд╣рдЯрд╛рдПрдБ webpackConfig.resolve.alias['@babel/runtime'];
рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧ рд▓реМрдЯрд╛рдПрдВ;
}
2.npm рдкреНрд░рд╛рд░рдВрдн
3. рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡реНрдпреВ рдХрдВрд╕реЛрд▓

index.js: 2177 рдЪреЗрддрд╛рд╡рдиреА: рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ require("history").createHashHistory рдХреЗ рдмрдЬрд╛рдп require("history/createHashHistory") рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрддрд╛ рдЕрдЧрд▓реА рдмрдбрд╝реА рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛редред

рдЪреЗрддрд╛рд╡рдиреА рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

1.dva рдирдпрд╛ рдРрдк
2. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ webpack.config.js рдмрдирд╛рдПрдВ:
рдирд┐рд░реНрдпрд╛рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлрд╝рдВрдХреНрд╢рди (webpackConfig) {
рд╣рдЯрд╛рдПрдБ webpackConfig.resolve.alias['@babel/runtime'];
рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧ рд▓реМрдЯрд╛рдПрдВ;
}
2.npm рдкреНрд░рд╛рд░рдВрдн
3. рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡реНрдпреВ рдХрдВрд╕реЛрд▓

index.js: 2177 рдЪреЗрддрд╛рд╡рдиреА: рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ require("history").createHashHistory рдХреЗ рдмрдЬрд╛рдп require("history/createHashHistory") рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрддрд╛ рдЕрдЧрд▓реА рдмрдбрд╝реА рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛редред

1.dva рдирдпрд╛ рдРрдк
2. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ webpack.config.js рдмрдирд╛рдПрдВ:
рдирд┐рд░реНрдпрд╛рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлрд╝рдВрдХреНрд╢рди (webpackConfig) {
рд╣рдЯрд╛рдПрдБ webpackConfig.resolve.alias['@babel/runtime'];
рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧ рд▓реМрдЯрд╛рдПрдВ;
}
2.npm рдкреНрд░рд╛рд░рдВрдн
3. рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡реНрдпреВ рдХрдВрд╕реЛрд▓

index.js:2177 рдЪреЗрддрд╛рд╡рдиреА: рдХреГрдкрдпрд╛ require("history").createHashHistory рдмрдЬрд╛рдп require("history/createHashHistory") ред рдмрд╛рдж рд╡рд╛рд▓реЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЕрдЧрд▓реЗ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

image
рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреИрд╕реЗ рд╣рд▓ рд╣реЛрддреА рд╣реИ?рдорджрдж рдХреЗ рд▓рд┐рдП рдкреВрдЫрдирд╛

@mystylemylife рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо рджреЗрддрд╛ рд╣реИред .

@mystylemylife рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо рджреЗрддрд╛ рд╣реИред .

@mystylemylife рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо рджреЗрддрд╛ рд╣реИред .
рдпрд╣ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рдерд╛ред рдЬрдм рдореИрдВрдиреЗ [email protected] рд╢реБрд░реВ рдХрд┐рдпрд╛ , рддреЛ рдореИрдВрдиреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд╕реВрдЪрдирд╛ рджреА , рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ webpack.config.js рдЬреЛрдбрд╝рд╛ рдФрд░ рдЕрдиреБрд╕рд╛рд░ '@babel/runtime' рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ред рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХреА рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдкрд┐рдЫрд▓реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕реЗ рддреНрд░реБрдЯрд┐ред рдЕрдм рдЗрд╕ рдЬреЗрдПрд╕ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рд░реЛрдбрд╣реЛрдЧ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ 2.5.0-рдмреАрдЯрд╛.4 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВред

рдкреБрд░рд╛рдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдиреЗ рдиреЛрдбрдореЙрдбреНрдпреВрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд╕реВрдЪрдирд╛ рджреАред [email protected] рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреЗрдЦреЗрдВред <br i="5"/> рдореВрд▓ рдкреЛрд╕реНрдЯрд░ рдХреА рддрд░рд╣ рд╣реА

рдкреБрд░рд╛рдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдиреЗ рдиреЛрдбрдореЙрдбреНрдпреВрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд╕реВрдЪрдирд╛ рджреАред рдореВрд▓ рдкреЛрд╕реНрдЯрд░ рдХреА рддрд░рд╣ рд╣реА [email protected]<br i="6"/> Update

рд░реЛрдбрд╣реЛрдЧ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ 2.5.0-рдмреАрдЯрд╛.4 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ

'рдЗрддрд┐рд╣рд╛рд╕' рд╕реЗ рдЖрдпрд╛рдд { createBrowserHistory } 'рдЗрддрд┐рд╣рд╛рд╕' рд╕реЗ рдЖрдпрд╛рдд { createHashHistory }

рдЕрдм рдХреБрдЫ рдорд╣реАрдиреЗ рд╣реЛ рдЧрдП рд╣реИрдВ, рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЪреЛрд░ рдЬрд╣рд╛рдЬ рд╣реИред

рдкреБрд░рд╛рдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдиреЗ рдиреЛрдбрдореЙрдбреНрдпреВрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд╕реВрдЪрдирд╛ рджреАред рдореВрд▓ рдкреЛрд╕реНрдЯрд░ рдХреА рддрд░рд╣ [email protected]<br i="7"/> рдЕрдкрдбреЗрдЯ

рд░реЛрдбрд╣реЛрдЧ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ 2.5.0-рдмреАрдЯрд╛.4 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ

рд░реЛрдбрд╣реЛрдЧ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ 2.5.0-рдмреАрдЯрд╛.4 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╕рдордп рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧреА

рд╣рд▓ рдХрд░реЗрдВ:

  1. рдореЗрдВ node_modules рдореЗрдВ dva рдлрд╝реЛрд▓реНрдбрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╕рдВрд╢реЛрдзрд┐рдд lib/index.js
  2. рдХреЛрдб рдХреА рдЗрд╕ рдкрдВрдХреНрддрд┐ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЦреЛрдЬреЗрдВ
var _createHashHistory = _interopRequireDefault(require("history/createHashHistory"));
  1. рдкрде рдХреЛ `рдЖрд╡рд╢реНрдпрдХрддрд╛ рдореЗрдВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ:
var _createHashHistory = _interopRequireDefault(require("history").createHashHistory);

рд╕рдВрдХрд▓рдХ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдмрдВрдж рдХрд░реЗрдВ, рд╕реЗрд╡рд╛ рдХреЛ рдареАрдХ рд╕реЗ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ

рдХреНрдпрд╛ dva рдЕрдиреБрд░рдХреНрд╖рд┐рдд рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реИ?рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдЗрддрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╣реИ, рдЗрд╕реЗ рдмрдВрдж рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рдкреНрд░реЙрдХреНрд╕реА рджреЗрд╢реА рдХрдВрд╕реЛрд▓ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд░реЗрдВред рдЪреЗрддрд╛рд╡рдиреА рдФрд░ рдХрдВрд╕реЛрд▓.рддреНрд░реБрдЯрд┐

      (() => {
        //ш┐Зц╗дцОЙф╕Аф║ЫцЧачФичЪДшнжхСКуАБц▓бцЬЙф╗╖хА╝чЪДцКещФЩ
        //ф╗гчРЖconsole.warnцЦ╣ц│Х
        const _consoleWarn = console.warn;
        console.warn = (...rest) => {
          if (
            ![
              'react-error-overlay is not meant for use in production. You should ensure it is not included in your build to reduce bundle size.',
              'Warning: componentWillReceiveProps has been renamed',
              'Warning: componentWillUpdate has been renamed',
            ].some((item) => rest[0].indexOf(item) !== -1)
          ) {
            _consoleWarn(...rest);
          }
        };
        //ф╗гчРЖconsole.error
        const _consoleError = console.error;
        console.error = (...rest) => {
          if (
            ![
              `Warning: Please use \`require("history").createHashHistory\` instead of \`require("history/createHashHistory")\`. Support for the latter will be removed in the next major release.`,
              'ui socket init',
            ].includes(rest[0].toString())
          ) {
            _consoleError(...rest);
          }
        };
      })();

рдореИрдВрдиреЗ рдПрдХ рдкреИрдЪ рд▓рд┐рдЦрд╛, рд╣рд░ рдмрд╛рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, ./node_modules/dva/lib/index.js require\\("history/createHashHistory"\\) рдХреЛ require("history").createHashHistory рдмрджрд▓реЗрдВ:

  1. рдпрд╛рд░реНрди рдРрдб-рдбреА рдмрджрд▓реЗрдВ;
  2. рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ patch.js рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ, рд╕рд╛рдордЧреНрд░реА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
const replace = require("replace");

replace({
  regex: 'require\\("history/createHashHistory"\\)',
  replacement: 'require("history").createHashHistory',
  paths: ['./node_modules/dva/lib/index.js'],
  recursive: true,
  silent: true,
});
  1. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдореЗрдВ package.json рд╡реГрджреНрдзрд┐ рдореЗрдВ, start рдХрдорд╛рдВрдб рд╕реЗ рдкрд╣рд▓реЗ npm run patch && рд╡реГрджреНрдзрд┐, "patch": "node ./patch.js" npm рдЖрджреЗрд╢:
{
  ...
  "scripts": {
    "start": "npm run patch && cross-env APP_TYPE=site umi dev", // startхС╜ф╗дф╣ЛхЙНхЕИш┐РшбМpatch.js
    ...
    "patch": "node ./patch.js"
  },
  ...
}
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

zhuangtq picture zhuangtq  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bjwulin picture bjwulin  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sorrycc picture sorrycc  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

MiaoXingGua picture MiaoXingGua  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

BenAnn picture BenAnn  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ