๐๏ธ์ํํธ์จ์ด/๐JavaScript
[f/e] ์บก์ณ๋ง๊ณผ ๋ฒ๋ธ๋ง
1. ์บก์ณ๋ง๊ณผ ๋ฒ๋ธ๋ง ์บก์ณ๋ง(capturing)์ ์ด๋ฒคํธ๊ฐ ๊ฐ์ฅ ์์์ ๋ถ๋ชจ ์์์์๋ถํฐ ์์ํ์ฌ ์ค์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์๊น์ง ๋ด๋ ค์ค๋ ๊ณผ์ ์ ์๋ฏธํฉ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์์์ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ๋ฑ๋กํ๋๋ผ๋, ์์ ์์์ ๋ฑ๋ก๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋๊ฐ ๋จผ์ ํธ์ถ๋ฉ๋๋ค. ๋ฐ๋ฉด์ ๋ฒ๋ธ๋ง(bubbling)์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์์์ ์์ํ์ฌ ์์ ์์๋ก ์ ํ๋๋ ๊ณผ์ ์ ์๋ฏธํฉ๋๋ค. ์ด ๊ฒฝ์ฐ์๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์์์ ๋ฑ๋กํ ์ด๋ฒคํธ ๋ฆฌ์ค๋๊ฐ ๋จผ์ ํธ์ถ๋๊ณ , ๊ทธ ํ์ ์์ ์์์ ๋ฑ๋ก๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋๊ฐ ํธ์ถ๋ฉ๋๋ค. ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ๋ฑ๋กํ ๋, ์ธ ๋ฒ์งธ ์ธ์๋ก ์ด๋ฒคํธ ์ ํ ๋ฐฉ์์ ์ค์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์๋์ ๊ฐ์ ์ฝ๋์์ ์บก์ณ๋ง์ ์ฌ์ฉํ๋๋ก ์ค์ ํ ์ ์์ต๋๋ค. document.getElement..
๋น๋๊ธฐ API ์ฒ๋ฆฌ
๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ํด์ axios ๋ฅผ ์ฌ์ฉํ๋ค. ๊ทธ๋ ๋ค๋ฉด ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ ๋ฌด์์ธ๊ฐ? - ํน์ ์ฝ๋์ ์ฐ์ฐ์ด ๋๋ ๋๊น์ง ์ฝ๋์ ์คํ์ ๋ฉ์ถ์ง ์๊ณ , ๋ค์ ์ฝ๋๋ฅผ ๋จผ์ ์คํํ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ ๋ํ์ ์ธ ์๋ก, ๋ฌผ๊ฑด์ ์ฌ๋ฌ๊ฑด ๋ฐฐ์ก๋ณด๋ด๋ ๊ฒ์ ์๊ฐํ๋ฉด ์ฝ๋ค. ์์์ ์๊ด์์ด ์ฌ๋ฌ ๋ชฉ์ ์ง์ ๋ณด๋ด๋ ์์์ ๋ฐฐ์ก ํ๋ก์ธ์ค ๋ฐ๋ผ์ ๋ฌผํ ๋ฐฐ์ก์ด ๋ฉ์ถ์ง ์๊ณ ์งํ๋๋ค. axios๋ ๋ฌด์์ธ๊ฐ? - axios ๋ผ์ด๋ธ๋ฌ๋ฅด์์ ์ฌ์ฉํ๋ Promose ๊ฐ์ฒด์ ๋ํด์ ๋จผ์ ์ดํด๋ณด๋๋ก ํ์. - ๋น๋๊ธฐ ์์ ์ด ํ๊ฒ ๋๋ฉด ๊ฒฐ๊ณผ๊ฐ ์ด์จ๋ ์ฑ๊ณต์ด๊ฑฐ๋ ์คํจ ์๋๋ฉด ๋๋ ์๋ ์งํ์ค์ธ ์ํ๊ฐ ์์ ๊ฒ์ด๋ค. - ๊ทธ๋์ ๋ค์ 3๊ฐ์ง ๊ฒฐ๊ณผ์ ๋ํด์, ์ฑ๊ณต ํ์๋๋ ์ด๋ค ํ๋์ ํ๊ณ , - ์คํจ๋ฅผ ํ์๋์๋ ์ด๋ค ํ๋์ ํด์ผํ๋์ง๋ฅผ ์ ํด๋์๊ฒ ..
[webpack-dev-server] ์ฝ๋ ๋ณ๊ฒฝ์ฌํญ ๋ฐ๋ก ๋ฐ์(js)
๋๋์ด webpack.config.js ํ์ผ์ ์ฝ๋๋ฅผ ์ถ๊ฐํด์, ๋งค๋ฒ ๋น๋ํ์ง ์๊ณ ๋ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ์ ํฐ๋ํ๋ค. ์๋ก๊ณ ์นจํด๋ ๋ณ๊ฒฝ์ด ์๋์๋๋ฐ, ํ๋ฃจ ๊ณ ๋ฏผํ๊ณ ๋ฐฉ๋ฒ ํฐ๋ํ๋ค!! [webpack-dev-server] Hot Module Replacement enabled. log.js:1 [webpack-dev-server] Live Reloading enabled. log.js:1 [webpack-dev-server] App hot update... ์ฐธ๊ณ ๋ก ์ด๋ ๊ฒ ๋จ๋ฉด ์ฑ๊ณตํ๊ฑด๋ฐ, ๋งจ์ฒ์์ ์ฝ์์ฐฝ์, ์ด๋ ๊ฒ๋ง ๋จ๊ณ ํซ๋ฆฌ๋ก๋ฉ์ด ์๋๋ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํ๋๋ฐ, ์ค์ ๊ฐ์ ๋ณ๊ฒฝํด์ฃผ๋ฉด ๋๋ค. [webpack-dev-server] Hot Module Replacement enabled. log.js:1 [web..
[Node.js] express ์ cors ์ฌ์ฉํด์ API ๋ง๋ค๊ธฐ
npm ์ cors ์ express ๋ฅผ ์ค์นํด์, ๊ฐ๋จํ API๋ฅผ ๋ง๋ค์ด๋ดค์ต๋๋ค. cors ๋ ํ๋ก ํธ์์ ์๋ฒ์์ ์ ๊ณตํ API๋ก ์์ฒญ์ ๋ณด๋ผ ๋, ๋ฐ์ํ๋ ์๋ฌ์ ๋ํด์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด๋ค. Cross Origin Resource Sharing ์ด์ ๊ด๋ จ๋ ์์ธํ ์ค๋ช ์, ์๋ ๋งํฌ์ ์ฒจ๋ถ๋์ด ์์ผ๋ ํด๋น ๋ธ๋ก๊ทธ์ ์ ์ํด์ ์ฝ์ด๋ณด๋ฉด ํฐ ๋์์ด ๋ ๊ฒ์ด๋ค. https://bohyeon-n.github.io/deploy/web/cors.html CORS๋? CORS๋ฅผ ํด๊ฒฐํด๋ณด์ | ๊ตฌ๋ณดํ ๋ธ๋ก๊ทธ CORS๋? CORS๋ฅผ ํด๊ฒฐํด๋ณด์ 20200522 ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ํ๋ก ํธ์์ ์๋ฒ์์ ์ ๊ณตํ API๋ก ์์ฒญํ์, CORS ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. ์ง๊ธ๊น์ง CORS์๋ฌ๋ฅผ ํด๊ฒฐํ๊ธฐ๋ง ํ๊ณ ์ ํํ CORS๊ฐ ๋ฌด์์ด๊ณ ์ด๋ป๊ฒ..
์๋ฐ์คํฌ๋ฆฝํธ์์ ํ์ดํ๋ฅผ ์ฌ์ฉํ๋ ์ด์
๋ฐ์ดํฐ์ ์๊ฐ ๊ธธ์ด์ง๋ ๊ฒฝ์ฐ, find ๋ฅผ ํตํด์ ํน์ key ๊ฐ์์์ value ๋ฅผ ์ฐพ์๋ด์ผํ ๋๊ฐ ์กด์ฌํ๋ค. ๊ทธ๋, function ์ ์ฌ์ฉํ ๊ฒฝ์ฐ์ ํ์ดํ ํจ์๋ง ์ฌ์ฉํ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ๋ณด๋ฉด, ์ ํ์ดํ ํจ์๊ฐ ํธํ์ง ์ ๊ฒ์ด๋ค. const settingState = [ { "engname": "template_name", "korname": "ํฌํ๋ฆฟ ์ด๋ฆ", "value": "ํ ์คํธ ํ ํ๋ฆฟ 1" }, { "engname": "toffice_id", "korname": "Toffice ์์ด๋", "value": "22019" }, { "engname": "toffice_password", "korname": "Toffice ๋น๋ฐ๋ฒํธ", "value": "22019" }, { "en..
[์๋ฐ์คํฌ๋ฆฝํธ] Math ํจ์ ์ด์ฉํ์ฌ ๋ก๋ ๋ฒํธ ์์ฑํ๊ธฐ
๋๋ค ์ซ์๋ฅผ ์ด์ฉํ์ฌ, ๊ฐ๋ณ๊ฒ ๋ก๋ ๋ฒํธ๋ฅผ ๋ง๋๋ ค๊ณ ํ๋ค. ์กฐ๊ฑด์ 1. Math.random() ์ด์ฉํ๊ธฐ 2. ๋ฐ์ฌ๋ฆผ, ์ฌ๋ฆผ, ๋ด๋ฆผ์ ์ต์ 1๋ฒ ์ด์ ์ฌ์ฉํ๊ธฐ 3. switch ๋ฌธ 1๋ฒ ์ด์ ์ฌ์ฉํ๊ธฐ 4. ์ต๋, ์ต์๊ฐ์ ์ ๋ ฅ๊ฐ์ผ๋ก ๋ฐ๋ ํจ์ ์ฌ์ฉํ๊ธฐ 5. ํจ์๊ฐ์ ๊ฐ์ฒด ํ์ ์ผ๋ก ๋ฐํํ๊ธฐ 6. ๊ฒฐ๊ณผ๊ฐ์ ๋ฐฐ์ด๋ก ๋ณด์ด๊ธฐ 7. ์๋ฐ์คํฌ๋ฆฝํธ console ๋ก ๋ณด์ด๊ณ , html ์์ h1 ํ๊ทธ๋ก ํด๋น ๊ฐ๋ค์ ๋ณด์ด๊ธฐ ๋ฑ์ด๋ค. ์์์ผํ ๊ฐ๋ ์ผ๋ก๋ 1. ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ด๋ก ์ ํํ๋ ๋ฐฉ๋ฒ 2. html ์ js ๋ฐ์ดํฐ ๊ฐ ๋ณด์ด๋ ๋ฐฉ๋ฒ ๋ก๋ ๋ฒํธ์ ๊ฒฝ์ฐ 1๋ถํฐ 45๊น์ง ์์ผ๋ฉฐ, ์ค๋ณต์ ํ๋ฝํ์ง ์๋ ์กฐ๊ฑด์ด ์๋ค๋ ์ ์ ํ์ ์ฝ๋๋ฅผ ์์ฑํ๋๋ก ํ๋ค. ์ฝ๋๊ฐ ๊ธด๋ฐ, ์๊ฐ๋๋๋ฐ๋ก ํ๋ค๋ณด๋, ๋ฆฌํฉํ ๋ง์ด ํ์ํ ๋ถ๋ถ์ด ๋ณด์ด๊ธด..
[Vuetify] ๋๊ธฐ,๋น๋๊ธฐ,
๋๊ธฐ ๋ฐฉ์๊ณผ ๋น๋๊ธฐ ๋ฐฉ์ ๋๊ธฐ ๋ฐฉ์ ์์ฐจ์ ์ผ๋ก ์งํ์ด ๋์ด์ผ ํ๋ ๊ฒ์ผ๋ก ์๋ฒ์ ์์ฒญ์ ๋ณด๋ผ์ ์๋ต์ด ๋์์์ผ ๋ค์ ์์ ์ด ์ํ ๊ฐ๋ฅํจ ๋น๋๊ธฐ ๋ฐฉ์ ์์ฒญ์ ๋ณด๋ผ๋ ์๋ต ์ํ์ ๋ฌด๊ดํ๊ฒ ๋ค์ ๋์์ ์ํํ ์ ์์ผ๋ฉฐ ๊ฒฐ๊ณผ๊ฐ์ด ๋์ค๋ ๊ฒ๊ณผ ๋ณ๊ฐ๋ก ์๋์ ์ฝ๋๋ค์ด ์คํ๋๋ค ์๋ฅผ๋ค์ด, setTimeout() ๋ฉ์๋๋ฅผ ์๊ฐํด๋ณด๋ฉด, ๋น๋๊ธฐ APi ์ด๋ฉฐ, ์ฒซ๋ฒ์งธ ์ธ์๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ฌ์ฉํ๋ฉฐ, ๋๋ฒ์งธ ์ธ์๋ ์ง์ฐ์๊ฐ์ด๋ค ๋๋ฒ์งธ ์ธ์๊ฐ 0 ์ด๊ธฐ์ 1 -> 2 -> 3 ์ผ๋ก ์ถ๋ ฅ๋ ๊ฑฐ๋ผ ์๊ฐํ ์๋ ์๋ค console.log("1"); setTimeout( () => { console.log("2"); }, 0); console.log("3"); ํ์ง๋ง, ๋น๋๊ธฐ ๋ฉ์๋๋ ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ด ๋ด๋นํ๊ธฐ์, 1 -> ..
node ์ด์ฉํ json ์ฝ๋ฐฑ ํจ์
node.js ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์๋ฐ์คํฌ๋ฆฝํธ์ฝ๋๋ฅผ ์ฝ์ด์ ์ฒ๋ฆฌํด ์ฃผ๋ ๋ฐํ์ ๋ฐํ์์ ์ฝ๊ฒ ๋งํ๋ฉด ์คํ๊ธฐ์ด๋ฉฐ ๊ธฐ์กด HTML์ ์ข ์๋์ด HTML ์์ด๋ ์ฝ์ ์ ์์๋ javascript๊ฐ ๊ฐํด์ง ์ ์๋ ๊ณ๊ธฐ๋ javascript๋ฅผ ์คํํด์ฃผ๋ Node๊ฐ ์๊ธด ์ดํ๋ก ์๊ฐํ ์ ์์(์ค์) express ์ค์น๋ npm install express json ํํ์ api๋ฅผ ๋ง๋ค์ด์ฃผ๋ ์ฝ๋ node b.js ๋ก ์๋ฒ ์คํ์์ผ์ฃผ๊ธฐ /aaaa ๋ก api๋ฅผ ๋ง๋ค์ด์ค ๊ฒ ์์ ๊ฐ์ ๋ด์ฉ์ผ๋ก, callback ํจ์๋ฅผ ์ ์ํด์ค ์ ์๋ค 127.0.0.1์ ๋ฃจํ๋ฐฑ ip ์ด๋ค ใ
json ๋ฐ์ดํฐ vscode๋ก ๊น๋ํ๊ฒ ๋ณด๋ ๋ฐฉ๋ฒ(feat.์ ๋ ฌ)
ํ์ฅ์ : beautify ์ค์น ํ json ํ์ผ์ ์์ฑํด์, f1 ํค + beautify file ํด๋ฆญํ๋ฉด ์ ๋ ฌ๋์ง ์์๋ ํ ์คํธ๊ฐ ๋ค์๊ณผ ๊ฐ์ด ๊น๋ํ๊ฒ ์ ๋ ฌ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ before after
[AWS + Filezila] ์น์๋น์ค ๋ฐฐํฌ ์ํ ์์
๋ค๋ฅธ ๊ฒ๋ณด๋ค ์ํ ์์(์ฌ์ง)๊ณผ ์ฝ๋์ด๋ค ์ฝ๋ 1. app.py 2. index.html app.py from flask import Flask, render_template, request, jsonify app = Flask(__name__) # DB from pymongo import MongoClient client = MongoClient('mongodb+srv://test:test@cluster0.wpvuwzi.mongodb.net/Cluster0?retryWrites=true&w=majority') db = client.dbsparta @app.route('/') def home(): return render_template('index.html') @app.route("/homework",..