From 36b1fef1181ac7981d266eb9803c9e0817134037 Mon Sep 17 00:00:00 2001 From: jaejungscene <jaejungscene@ajou.ac.kr> Date: Fri, 7 Jul 2023 20:52:48 +0900 Subject: [PATCH] modify --- .babelrc | 6 +++ .gitignore | 25 +++++++++++ package.json | 35 +++++++++++++++ src/App.js | 111 ++++++++++++++++++++++++++++++++++++++++++++++ src/index.js | 10 +++++ webpack.config.js | 41 +++++++++++++++++ 6 files changed, 228 insertions(+) create mode 100644 .babelrc create mode 100755 .gitignore create mode 100644 package.json create mode 100755 src/App.js create mode 100755 src/index.js create mode 100644 webpack.config.js diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..fbd6da0 --- /dev/null +++ b/.babelrc @@ -0,0 +1,6 @@ +{ + "presets": [ + "@babel/preset-env", + "@babel/preset-react" + ] +} \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..f088ade --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +package-lock.json + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/package.json b/package.json new file mode 100644 index 0000000..fb1417f --- /dev/null +++ b/package.json @@ -0,0 +1,35 @@ +{ + "name": "react-boilerplate", + "version": "0.1.0", + "private": true, + "dependencies": { + "@mui/material": "^5.13.7", + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "scripts": { + "start": "webpack-dev-server --open --mode development --port 3000", + "build": "webpack --mode production" + }, + "eslintConfig": { + "extends": "react-app" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ], + "devDependencies": { + "@babel/core": "^7.2.2", + "@babel/preset-env": "^7.3.1", + "@babel/preset-react": "^7.0.0", + "babel-loader": "^8.0.5", + "css-loader": "^6.7.3", + "file-loader": "^6.2.0", + "style-loader": "^3.3.2", + "webpack": "^5.77.0", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^4.13.1" + } +} diff --git a/src/App.js b/src/App.js new file mode 100755 index 0000000..bb59e0b --- /dev/null +++ b/src/App.js @@ -0,0 +1,111 @@ +import React, { useState, useEffect } from 'react'; +// import Button from '@mui/material/Button'; + +const TimeButton = (props) => { + let [time, setTime] = useState(null); + + // const location = { country: true ? '한국' : '일본' }; + + // console.log("hello world"); + // useEffect(() => { + // console.log('useEffect... 호출'); + // }, [location]); + // console.log("heqewrqwerq"); + + // useEffect(() => { + // let timer = setInterval(() => { + // displayTime(props.timeZone); + // }, 1000); + // console.log("alsdkfj"); + // return () => clearInterval(timer) + // }, []); + + const displayTime = (zone) => { + let date = new Date(); + setTime(date.toLocaleString('ko-KR', {timeZone: zone})) + } + + return ( + <> + <button onClick={()=>displayTime(props.timeZone)}>{props.cityName}</button> + <div id="time">{time}</div> + <hr></hr> + </> + ) +} + +const App = () => { + let cityList = [ + {cityName: "Seoul", timezone:"Asia/Seoul"}, + {cityName: "Dubai", timezone:"Asia/Dubai"}, + {cityName: "Madrid", timezone:"Europe/Madrid"} + ]; + + return ( + <div> + <h1>What time is it?</h1> + <hr></hr> + {cityList.map((i)=>{ + return( + <TimeButton cityName={i.cityName} timeZone={i.timezone}/> + ) + })} + </div> + ); +} + +export default App; + + + +// import React, {useState, useMemo} from 'react'; + +// function App() { +// const [number, setNumber] = useState(0); + +// // console.log("0000000"); +// // const squaredNum = squareNum(number); +// // console.log("1111111"); + +// const squaredNum = useMemo(()=>{ +// console.log("222222"); +// squareNum(number); +// console.log("333333"); +// }, [number]); + +// const [counter, setCounter] = useState(0); + +// // Change the state to the input +// const onChangeHandler = (e) => { +// // console.log(e.target.value); +// setNumber(e.target.value); +// } + +// // console.log("check") + +// // Increases the counter by 1 +// const counterHander = () => { +// setCounter(counter + 1); +// } +// return ( +// <div className="App"> +// <h1>Welcome to Geeksforgeeks</h1> +// <input type="number" placeholder="Enter a number" +// value={number} onChange={onChangeHandler}> +// </input> +// <div>squaredNum: {squaredNum}</div> +// <div>number: {number}</div> +// <hr></hr> +// <button onClick= {counterHander}>Counter ++</button> +// <div>Counter : {counter}</div> +// </div> +// ); +// } + +// // function to square the value +// function squareNum(number){ +// console.log("Squaring will be done!"); +// return Math.pow(number, 2); +// } + +// export default App; \ No newline at end of file diff --git a/src/index.js b/src/index.js new file mode 100755 index 0000000..422769f --- /dev/null +++ b/src/index.js @@ -0,0 +1,10 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import App from './App'; + +var container = document.getElementById('root'); +var root = ReactDOM.createRoot(container); + +root.render(<App />); + +module.hot.accept() diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..35e1440 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,41 @@ +const path = require('path'); +const webpack = require('webpack'); + +module.exports = { + entry: { + app: './src/index.js' + }, + output: { + filename: '[name].bundle.js', + path: path.resolve(__dirname, 'public') + }, + module: { + rules: [{ //js 또는 jsx 파일을 빌드할 때 필요한 라이브러리 정의 + test: /\.(js|jsx)$/, + exclude: /node_modules/, + use: { + loader: 'babel-loader' + } + }, + { + test: /\.css$/i, + use: ['style-loader', 'css-loader'] + }, + { + test: /\.(png|jpe?g|gif)$/i, + loader: 'file-loader', + }] + }, + devServer: { + static: { + directory: path.join(__dirname, 'public'), + }, + allowedHosts: 'all', + }, + plugins: [ + new webpack.HotModuleReplacementPlugin() + ], + watchOptions: { + ignored: '**/node_modules', + }, +}; -- GitLab