Skip to content

Commit

Permalink
Create basic React application
Browse files Browse the repository at this point in the history
  • Loading branch information
Saluev committed Mar 6, 2019
1 parent e8ef3b8 commit b2ce789
Show file tree
Hide file tree
Showing 7 changed files with 94 additions and 7 deletions.
3 changes: 3 additions & 0 deletions frontend/.babelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"presets": ["@babel/env", "@babel/react"]
}
11 changes: 7 additions & 4 deletions frontend/index.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
const express = require("express");
import express from 'express'
import template from './src/template'

app = express();
let app = express();

app.listen(process.env.APP_FRONTEND_PORT);
app.use('/dist', express.static('../dist'));

app.get("*", (req, res) => {
res.send("Hello, world!")
res.send(template("Habr demo app"));
});

app.listen(process.env.APP_FRONTEND_PORT);
17 changes: 14 additions & 3 deletions frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
"description": "This is an app demo for Habr article.",
"main": "index.js",
"scripts": {
"build": "echo 'build'",
"start": "node index.js",
"build": "webpack",
"start": "node /app/server.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
Expand All @@ -19,6 +19,17 @@
},
"homepage": "https://github.com/Saluev/habr-app-demo#readme",
"dependencies": {
"express": "^4.16.3"
"express": "^4.16.3",
"react": "^16.8.3",
"react-dom": "^16.8.3"
},
"devDependencies": {
"@babel/core": "^7.3.3",
"@babel/polyfill": "^7.2.5",
"@babel/preset-env": "^7.3.1",
"@babel/preset-react": "^7.0.0",
"babel-loader": "^8.0.5",
"webpack": "^4.29.5",
"webpack-cli": "^3.2.3"
}
}
8 changes: 8 additions & 0 deletions frontend/src/client.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import React from 'react'
import {render} from 'react-dom'
import App from './components/app'

render(
<App/>,
document.querySelector('#app')
);
10 changes: 10 additions & 0 deletions frontend/src/components/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import React, {Component} from 'react'

class App extends Component {

render() {
return <h1>Hello, world!</h1>
}
}

export default App
16 changes: 16 additions & 0 deletions frontend/src/template.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
export default function template(title) {
let page = `
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>${title}</title>
</head>
<body>
<div id="app"></div>
<script src="/dist/client.js"></script>
</body>
</html>
`;
return page;
}
36 changes: 36 additions & 0 deletions frontend/webpack.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
const path = require("path");

clientConfig = {
mode: "development",
entry: {
client: ["./src/client.js", "@babel/polyfill"]
},
output: {
path: path.resolve(__dirname, "../dist"),
filename: "[name].js"
},
module: {
rules: [
{ test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }
]
}
};

serverConfig = {
mode: "development",
target: "node",
entry: {
server: ["./index.js", "@babel/polyfill"]
},
output: {
path: path.resolve(__dirname, ".."),
filename: "[name].js"
},
module: {
rules: [
{ test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }
]
}
};

module.exports = [clientConfig, serverConfig];

0 comments on commit b2ce789

Please sign in to comment.