├── README.md
├── frontend
├── babel.config.js
├── public
│ ├── favicon.ico
│ └── index.html
├── src
│ ├── assets
│ │ ├── logo.png
│ │ └── logo.svg
│ ├── plugins
│ │ └── vuetify.js
│ ├── App.vue
│ ├── store
│ │ └── index.js
│ ├── components
│ │ └── lecture
│ │ │ ├── componentTest
│ │ │ ├── LocalComponent.vue
│ │ │ └── GlobalComponent.vue
│ │ │ ├── axiosTest
│ │ │ └── AxiosTestForm.vue
│ │ │ └── emitTest
│ │ │ ├── TableComponent.vue
│ │ │ ├── TrComponent.vue
│ │ │ └── TdComponent.vue
│ ├── .eslintrc.js
│ ├── main.js
│ ├── views
│ │ ├── lecture
│ │ │ ├── clickEvent
│ │ │ │ └── ClickEventTest.vue
│ │ │ ├── bind
│ │ │ │ └── BindTest.vue
│ │ │ ├── axiosTest
│ │ │ │ └── axiosTestPage.vue
│ │ │ ├── componentTest
│ │ │ │ └── ComponentTest.vue
│ │ │ └── emitTest
│ │ │ │ └── EmitTestBoardGame.vue
│ │ └── HomeView.vue
│ └── router
│ │ └── index.js
├── vue.config.js
├── .gitignore
├── jsconfig.json
├── README.md
└── package.json
├── .gitignore
└── LICENSE
/README.md:
--------------------------------------------------------------------------------
1 | # Vue-Basics
2 | Vue Basics
3 |
--------------------------------------------------------------------------------
/frontend/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/frontend/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EDDI-RobotAcademy/Vue-Basics/HEAD/frontend/public/favicon.ico
--------------------------------------------------------------------------------
/frontend/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EDDI-RobotAcademy/Vue-Basics/HEAD/frontend/src/assets/logo.png
--------------------------------------------------------------------------------
/frontend/src/plugins/vuetify.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import Vuetify from 'vuetify/lib/framework';
3 |
4 | Vue.use(Vuetify);
5 |
6 | export default new Vuetify({
7 | });
8 |
--------------------------------------------------------------------------------
/frontend/vue.config.js:
--------------------------------------------------------------------------------
1 | const { defineConfig } = require('@vue/cli-service')
2 | module.exports = defineConfig({
3 | lintOnSave: false,
4 | transpileDependencies: [
5 | 'vuetify'
6 | ]
7 | })
8 |
--------------------------------------------------------------------------------
/frontend/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
19 |
--------------------------------------------------------------------------------
/frontend/src/store/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Vuex from 'vuex'
3 |
4 | Vue.use(Vuex)
5 |
6 | export default new Vuex.Store({
7 | state: {
8 | },
9 | getters: {
10 | },
11 | mutations: {
12 | },
13 | actions: {
14 | },
15 | modules: {
16 | }
17 | })
18 |
--------------------------------------------------------------------------------
/frontend/src/components/lecture/componentTest/LocalComponent.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{ initialValue }}
4 |
5 |
6 |
7 |
17 |
18 |
--------------------------------------------------------------------------------
/frontend/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 |
6 | # local env files
7 | .env.local
8 | .env.*.local
9 |
10 | # Log files
11 | npm-debug.log*
12 | yarn-debug.log*
13 | yarn-error.log*
14 | pnpm-debug.log*
15 |
16 | # Editor directories and files
17 | .idea
18 | .vscode
19 | *.suo
20 | *.ntvs*
21 | *.njsproj
22 | *.sln
23 | *.sw?
24 |
--------------------------------------------------------------------------------
/frontend/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "module": "esnext",
5 | "baseUrl": "./",
6 | "moduleResolution": "node",
7 | "paths": {
8 | "@/*": [
9 | "src/*"
10 | ]
11 | },
12 | "lib": [
13 | "esnext",
14 | "dom",
15 | "dom.iterable",
16 | "scripthost"
17 | ]
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Compiled class file
2 | *.class
3 |
4 | # Log file
5 | *.log
6 |
7 | # BlueJ files
8 | *.ctxt
9 |
10 | # Mobile Tools for Java (J2ME)
11 | .mtj.tmp/
12 |
13 | # Package Files #
14 | *.jar
15 | *.war
16 | *.nar
17 | *.ear
18 | *.zip
19 | *.tar.gz
20 | *.rar
21 |
22 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
23 | hs_err_pid*
24 |
--------------------------------------------------------------------------------
/frontend/README.md:
--------------------------------------------------------------------------------
1 | # frontend
2 |
3 | ## Project setup
4 | ```
5 | npm install
6 | ```
7 |
8 | ### Compiles and hot-reloads for development
9 | ```
10 | npm run serve
11 | ```
12 |
13 | ### Compiles and minifies for production
14 | ```
15 | npm run build
16 | ```
17 |
18 | ### Lints and fixes files
19 | ```
20 | npm run lint
21 | ```
22 |
23 | ### Customize configuration
24 | See [Configuration Reference](https://cli.vuejs.org/config/).
25 |
--------------------------------------------------------------------------------
/frontend/src/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | env: {
3 | browser: true,
4 | es2021: true
5 | },
6 | extends: [
7 | 'plugin:vue/essential',
8 | 'standard'
9 | ],
10 | parserOptions: {
11 | ecmaVersion: 12,
12 | sourceType: 'module'
13 | },
14 | plugins: [
15 | 'vue'
16 | ],
17 | rules: {
18 | 'vue/multi-word-component-names': ['error', {
19 | ignores: ['Home']
20 | }],
21 | 'eslint-disable-next-line': "off",
22 | 'eslint-disable': "off"
23 | }
24 | }
--------------------------------------------------------------------------------
/frontend/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './App.vue'
3 | import router from './router'
4 | import store from './store'
5 | import vuetify from './plugins/vuetify'
6 |
7 | import GlobalComponent from "@/components/lecture/componentTest/GlobalComponent.vue"
8 |
9 | Vue.config.productionTip = false
10 |
11 | // global-component 커스텀 태그 등록
12 | Vue.component(GlobalComponent.name, GlobalComponent)
13 |
14 | new Vue({
15 | router,
16 | store,
17 | vuetify,
18 | render: h => h(App)
19 | }).$mount('#app')
20 |
--------------------------------------------------------------------------------
/frontend/src/views/lecture/clickEvent/ClickEventTest.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
{{ count }} 번 클릭했습니다!
5 |
카운트하기
6 |
7 |
8 |
9 |
10 |
27 |
--------------------------------------------------------------------------------
/frontend/src/assets/logo.svg:
--------------------------------------------------------------------------------
1 | Artboard 46
2 |
--------------------------------------------------------------------------------
/frontend/src/views/lecture/bind/BindTest.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
Hello {{ message }}
5 |
{{ msg }}
6 |
{{ list[number] }}
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/frontend/src/components/lecture/componentTest/GlobalComponent.vue:
--------------------------------------------------------------------------------
1 |
2 | {{ counterValue }}
3 |
4 |
5 |
26 |
27 |
--------------------------------------------------------------------------------
/frontend/src/views/HomeView.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Home |
6 | BindTest |
7 | 클릭 테스트 |
8 | 컴포넌트 테스트 |
9 | emit 테스트(보드 게임) |
10 | Vue에서 Spring으로 데이터 전송하기 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
27 |
--------------------------------------------------------------------------------
/frontend/src/views/lecture/axiosTest/axiosTestPage.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | Vue에서 Spring으로 데이터 전송하기
4 |
5 |
6 |
7 |
8 |
35 |
36 |
--------------------------------------------------------------------------------
/frontend/src/components/lecture/axiosTest/AxiosTestForm.vue:
--------------------------------------------------------------------------------
1 |
2 |
23 |
24 |
25 |
44 |
45 |
--------------------------------------------------------------------------------
/frontend/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | <%= htmlWebpackPlugin.options.title %>
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 EDDI-RobotAcademy
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/frontend/src/views/lecture/componentTest/ComponentTest.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | 클릭해봐!
17 |
18 |
19 |
20 |
48 |
49 |
--------------------------------------------------------------------------------
/frontend/src/router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 | import HomeView from '../views/HomeView.vue'
4 |
5 | import BindTest from "@/views/lecture/bind/BindTest.vue"
6 | import ClickEventTest from "@/views/lecture/clickEvent/ClickEventTest.vue"
7 | import ComponentTest from "@/views/lecture/componentTest/ComponentTest.vue"
8 |
9 | import EmitTestBoardGame from "@/views/lecture/emitTest/EmitTestBoardGame.vue"
10 |
11 | import AxiosTestPage from "@/views/lecture/axiosTest/AxiosTestPage.vue"
12 |
13 | Vue.use(VueRouter)
14 |
15 | const routes = [
16 | {
17 | path: '/',
18 | name: 'home',
19 | component: HomeView
20 | },
21 | {
22 | path: '/bind-test',
23 | name: 'BindTest',
24 | component: BindTest
25 | },
26 | {
27 | path: '/click-test',
28 | name: 'ClickEventTest',
29 | component: ClickEventTest
30 | },
31 | {
32 | path: '/component-test',
33 | name: 'ComponentTest',
34 | component: ComponentTest
35 | },
36 | {
37 | path: '/emit-test-board-game',
38 | name: 'EmitTestBoardGame',
39 | component: EmitTestBoardGame
40 | },
41 | {
42 | path: '/axios-test-page',
43 | name: 'AxiosTestPage',
44 | component: AxiosTestPage
45 | },
46 |
47 | ]
48 |
49 | const router = new VueRouter({
50 | mode: 'history',
51 | base: process.env.BASE_URL,
52 | routes
53 | })
54 |
55 | export default router
56 |
--------------------------------------------------------------------------------
/frontend/src/components/lecture/emitTest/TableComponent.vue:
--------------------------------------------------------------------------------
1 |
2 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/frontend/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "frontend",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "vue-cli-service serve",
7 | "build": "vue-cli-service build",
8 | "lint": "vue-cli-service lint"
9 | },
10 | "dependencies": {
11 | "core-js": "^3.8.3",
12 | "vue": "^2.6.14",
13 | "vue-router": "^3.5.1",
14 | "vuetify": "^2.6.0",
15 | "vuex": "^3.6.2"
16 | },
17 | "devDependencies": {
18 | "@babel/core": "^7.12.16",
19 | "@babel/eslint-parser": "^7.12.16",
20 | "@vue/cli-plugin-babel": "~5.0.0",
21 | "@vue/cli-plugin-eslint": "~5.0.0",
22 | "@vue/cli-plugin-router": "~5.0.0",
23 | "@vue/cli-plugin-vuex": "~5.0.0",
24 | "@vue/cli-service": "~5.0.0",
25 | "axios": "^1.3.4",
26 | "eslint": "^7.32.0",
27 | "eslint-plugin-vue": "^8.0.3",
28 | "sass": "~1.32.0",
29 | "sass-loader": "^10.0.0",
30 | "vue-cli-plugin-vuetify": "~2.5.8",
31 | "vue-template-compiler": "^2.6.14",
32 | "vuetify-loader": "^1.7.0"
33 | },
34 | "eslintConfig": {
35 | "root": true,
36 | "env": {
37 | "node": true
38 | },
39 | "extends": [
40 | "plugin:vue/essential",
41 | "eslint:recommended"
42 | ],
43 | "parserOptions": {
44 | "parser": "@babel/eslint-parser"
45 | },
46 | "rules": {
47 | "no-unused-vars": "off"
48 | }
49 | },
50 | "browserslist": [
51 | "> 1%",
52 | "last 2 versions",
53 | "not dead"
54 | ]
55 | }
56 |
--------------------------------------------------------------------------------
/frontend/src/components/lecture/emitTest/TrComponent.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
13 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/frontend/src/views/lecture/emitTest/EmitTestBoardGame.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{ currentTurnShape }} 님의 턴입니다.
4 |
10 | {{ winner }} 님의 승리!
11 |
12 |
13 |
14 |
64 |
65 |
--------------------------------------------------------------------------------
/frontend/src/components/lecture/emitTest/TdComponent.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{ cellData }}
4 |
5 |
6 |
7 |
113 |
114 |
--------------------------------------------------------------------------------