0.6.8-alpha • Published 4 years ago

server-renderer v0.6.8-alpha

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

ServerRenderer

library of server side render for React

安装

$ yarn add server-renderer react react-dom
$ yarn add typescript tslib @types/react .... -D

用法

目录结构

📦server-renderer-example
 ┣ 📂src
 ┃ ┣ 📂pages
 ┃ ┃ ┣ 📂Home
 ┃ ┃ ┃ ┣ 📜Home.scss
 ┃ ┃ ┃ ┗ 📜index.tsx
 ┃ ┃ ┣ 📜Other.tsx
 ┃ ┃ ┗ 📜index.ts
 ┃ ┣ 📜App.tsx
 ┃ ┣ 📜index.html
 ┃ ┣ 📜index.tsx
 ┃ ┗ 📜routes.ts
 ┗ 📜package.json

src/pages/Home/index.tsx

import * as React from 'react'
import { Link } from 'server-renderer'
// CSS Modules
import classes from './Home.scss'

interface HomeProps { data: string }

const Home: React.FunctionComponent = (props) => { const handler = () => console.log('clicked') return (

<div className={classes.container}>
  <p className={classes.content}>
    <Link to='/others'>to others page</Link>
  </p>
  <p onClick={handler}>{JSON.stringify(props.data)}</p>
</div>

) }

Home.getInitialProps = async () => { try { const data = await fetch('https://api.com/xxx').then(res => res.json()) return { data } } catch (error) { return { data: JSON.stringify(error) } } }

export default Home

> src/routes.ts
```ts
import { RouteProps } from 'server-renderer'
import * as pages from './pages'

const routes: RouteProps[] = [
  {
    path: '/',
    exact: true,
    component: pages.Home,
  },
  {
    path: '/others',
    exact: true,
    component: pages.Other,
  }
]

export default routes

src/App.tsx

import * as React from 'react'
import { GetInitialPropsParams } from 'server-renderer'

export interface AppProps { children: React.ReactNode }

class App extends React.Component {

public static async getInitialProps({ route }: GetInitialPropsParams) { const { component } = route let pageProps = {} if (component && component.getInitialProps) { pageProps = await component.getInitialProps() } return pageProps }

public render() { const { children } = this.props return (

  <div>
    <p>App Component</p>
    {children}
  </div>
)

} }

export default App

> src/index.tsx
```ts
import { render } from 'server-renderer'
import routes from './routes'
import App from './App'

render({
  container: '.app-container',
  routes,
  AppContainer: App,
})

src/index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <div class="app-container"></div>
</body>
</html>

package.json

{
  "name": "server-renderer-example",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "scripts": {
    "dev": "server-renderer dev",
    "build": "server-renderer build",
    "start": "server-renderer start"
  },
  "dependencies": {
    "react": "^16.8.4",
    "react-dom": "^16.8.4",
    "server-renderer": "^0.1.5"
  },
  "devDependencies": {
    "@types/history": "^4.7.2",
    "@types/react": "^16.8.8",
    "@types/react-dom": "^16.8.2",
    "@types/react-router-dom": "^4.3.1",
    "tslib": "^1.9.3",
    "tslint": "^5.14.0",
    "tslint-config-prettier": "^1.18.0",
    "tslint-react": "^3.6.0",
    "typescript": "^3.3.3333"
  }
}
## 开发
```bash
$ yarn dev

生产环境构建

$ yarn build
$ yarn start
0.7.12-alpha

4 years ago

0.7.11-alpha

4 years ago

0.7.10-alpha

4 years ago

0.7.9-alpha

4 years ago

0.7.8-alpha

4 years ago

0.7.7-alpha

4 years ago

0.7.6-alpha

4 years ago

0.7.5-alpha

4 years ago

0.7.4-alpha

4 years ago

0.7.3-alpha

4 years ago

0.7.2-alpha

4 years ago

0.7.1-alpha

4 years ago

0.7.0-alpha

4 years ago

0.6.10-alpha

4 years ago

0.6.11-alpha

4 years ago

0.6.9-alpha

4 years ago

0.6.8-alpha

4 years ago

0.6.7-alpha

4 years ago

0.6.6-alpha

4 years ago

0.6.5-alpha

4 years ago

0.6.4-alpha

4 years ago

0.6.3-alpha

4 years ago

0.6.0-alpha

4 years ago

0.5.9-alpha

4 years ago

0.6.1-alpha

4 years ago

0.5.8-alpha

4 years ago

0.5.7-alpha

4 years ago

0.5.3-alpha

4 years ago

0.5.6-alpha

4 years ago

0.5.2-alpha

4 years ago

0.5.1-alpha

4 years ago

0.5.0-alpha

4 years ago

0.4.14-alpha

4 years ago

0.4.13-alpha

4 years ago

0.4.12-alpha

4 years ago

0.4.11-alpha

4 years ago

0.4.10-alpha

4 years ago

0.4.9-alpha

4 years ago

0.4.8-alpha

4 years ago

0.4.7-alpha

4 years ago

0.4.6-alpha

4 years ago

0.4.5-alpha

4 years ago

0.4.4-alpha

4 years ago

0.4.3-alpha

4 years ago

0.4.1-alpha

4 years ago

0.4.0-alpha

4 years ago

0.3.3

5 years ago

0.3.1

5 years ago

0.3.0

5 years ago

0.2.15

5 years ago

0.2.14

5 years ago

0.2.13

5 years ago

0.2.12

5 years ago

0.2.11

5 years ago

0.2.10

5 years ago

0.2.9

5 years ago

0.2.8

5 years ago

0.2.7

5 years ago

0.2.6

5 years ago

0.2.5

5 years ago

0.2.4

5 years ago

0.2.3

5 years ago

0.2.2

5 years ago

0.2.1

5 years ago

0.2.0

5 years ago

0.1.7

5 years ago

0.1.6

5 years ago

0.1.5

5 years ago

0.1.4

5 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago