Webpack 页面入口配置


Webpack 配置文件 ${root}/webpack.config.js 。 该配置最终会通过 easywebpack-react 转换为完整的 Webpack 配置。(支持 Webpack 原生配置, 具体见 easywebpack

  1. module.exports = {
  2. entry: {
  3. app: 'app/web/page/app/index.js', // js 文件需要自己实现 react.render 逻辑
  4. hello: 'app/web/page/hello/index.jsx' // 自动使用 react-entry-template-loader 模板
  5. }
  6. };
  • .jsx 文件后缀这种模式可以直接渲染 React Component 组件,而无需编写 React.render 初始化代码,统一react-entry-template-loader 插件提供的模板进行 React 页面初始化。React Component 可以直接渲染出完整的 HTM 网页。
  1. //${root}/app/web/page/hello/index.jsx
  2. export default class Hello extends Component {
  3. render() {
  4. return <h1>Egg React Server Render</h1>
  5. }
  6. }
  • .js 文件后缀这种模式需要自己编写 React.render 代码且需要自己判断 SSR 还是前端渲染
  1. import React, { Component } from 'react';
  2. import ReactDOM from 'react-dom';
  3. import { AppContainer } from 'react-hot-loader';
  4. import Layout from '../../component/layout.jsx';
  5. import List from './componets/list';
  6. import './index.css';
  7. class ListPage extends Component {
  8. render() {
  9. return <div className="main">
  10. <div className="page-container page-component">
  11. <List list={this.props.list}></List>
  12. </div>
  13. </div>
  14. }
  15. }
  16. class ServerEntry extends Component {
  17. render() {
  18. return <Layout><ListPage {...this.props} /></Layout>;
  19. }
  20. }
  21. const clientEntry = () => {
  22. const root = document.getElementById('app');
  23. const state = window.__INITIAL_STATE__ || {};
  24. const render = () =>{
  25. ReactDOM.hydrate(EASY_ENV_IS_DEV ? <AppContainer><ListPage {...state}/></AppContainer> : <ListPage />, root);
  26. };
  27. if (EASY_ENV_IS_DEV && module.hot) {
  28. module.hot.accept();
  29. }
  30. render();
  31. };
  32. export default EASY_ENV_IS_NODE ? ServerEntry : clientEntry();

Sass/Less/Stylus 配置

语雀内容

Babel 相关配置

语雀内容

Css Module

语雀内容

自定义 manifest.json 路径

  • 修改 webpack.config.js 生成 manifest.json 默认位置

语雀内容

  • egg-view-react-ssr 的 manifest 默认配置修改
  1. // ${root}/config/config.default.js
  2. exports.reactssr = {
  3. manifest: path.join(app.baseDir, 'config/easy-manifest.json')
  4. };