(Translated by https://www.hiragana.jp/)
GitHub - easy-team/res-awesome: Node React Web Awesome for Res Server Side Render Framework
Skip to content

easy-team/res-awesome

Repository files navigation

egg-react-typescript-boilerplate

もとRes かまち Egg + React + TypeScript + Webpack ふく务端渲染工程こうていこつ

版本はんぽん

  • Res(Egg) 版本はんぽん: ^2.0.0
  • Node 版本はんぽん: Node ^8.0.0,
  • Webpack 版本はんぽん: ^4.0.0
  • React 版本はんぽん: ^16.0.0
  • TypeScript: ^3.0.0

ぶん

特性とくせい

  • 支持しじ Egg Node はしだい码和ぜんはしだい码 TypeScript 编写构建

  • 支持しじ Node asyncData 方式ほうしき获取すうすえ进行渲染

  • 支持しじ页面(MPA) かず 单页めん(SPA) ふく务端渲染(SSR)かずぜんはし渲染(CSR)

  • 支持しじ AntD 按需载和ぬし配置はいちこうのう以及 MobX 应用

  • 支持しじ Webpack 时时编译更新こうしん, npm run dev いち键启动应よう

  • 支持しじ开发环境, 测试环境,正式せいしき环境 Webpack 编译

运行

あんそう

npm install

本地ほんじ启动应用

npm run dev

应用访问: http://127.0.0.1:7001

构建ぶんけん

  • TypeScript Egg 构建
npm run tsc
  • TypeScript ぜんはし工程こうてい构建
npm run build

つつみ部署ぶしょ

  1. さき运行 npm run tsc npm run build 构建 TypeScript Egg だい码和 TypeScript ぜんはしだい
  2. 项目だい码和构建だい码一起打包代码
  3. 应用部署ぶしょきさきつうnpm start 启动应用

开发

编写ぜんはしだい

添加てんか ${root}/app/web/page/demo.tsx ぜんはしだい

'use strict';
import React, { Component } from 'react';
class Demo extends Component<any, any> {
  render() {
    const { title, article } = this.props;
    return <div>
      <h1 className="easy-article-detail-title">{title}</h1>
      <h3 className="easy-article-detail-title">{article.title}</h3>
      <div>{article.content}</div>
    </div>;
  }
}
export default Demo;

编写 Node だい

添加てんか ${root}/app/controller/demo.ts Node だい

import { Controller, Context } from 'egg';

export default class DemoController extends Controller {
  public async index(ctx: Context) {
    const title = 'Node 直接ちょくせつ获取渲染すうすえ';
    const article = await ctx.service.article.query({ id: Number(id) });
    await ctx.render('demo.js', { title, article });
  }
}

Egg よし配置はいち

添加てんか ${root}/app/router.ts Egg よし配置はいち

import { Application } from 'egg';
export default (app: Application) => {
  const { router, controller } = app;
  router.get('/demo', controller.demo.index);
};

Webpack 构建配置はいち

添加てんか ${root}/webpack.config.js しんぞう页面 entry 配置はいち

module.exports = {
  entry: {
    demo: 'app/web/page/demo.tsx',
  }
}

License

MIT