Initial Vue.js project skeleton.

This commit is contained in:
Jonathan Bernard
2019-02-24 06:56:06 -07:00
parent 066e70b4bf
commit 1b91926d3a
41 changed files with 16147 additions and 2 deletions

11
web/src/App.vue Normal file
View File

@ -0,0 +1,11 @@
<template>
<div id="app">
<div id="nav">
<router-link to="/">Home</router-link> |
<router-link to="/about">About</router-link>
</div>
<router-view/>
</div>
</template>
<script lang="ts" src="./app.ts"></script>
<style lang="scss" src="./app.scss"></style>

18
web/src/app.scss Normal file
View File

@ -0,0 +1,18 @@
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
}
#nav {
padding: 30px;
a {
font-weight: bold;
color: #2c3e50;
&.router-link-exact-active {
color: #42b983;
}
}
}

9
web/src/app.ts Normal file
View File

@ -0,0 +1,9 @@
import { Component, Vue } from 'vue-property-decorator';
import NavBar from '@/views/NavBar.vue';
@Component({
components: {
NavBar
}
})
export default class App extends Vue {}

BIN
web/src/assets/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

13
web/src/main.ts Normal file
View File

@ -0,0 +1,13 @@
import Vue from 'vue';
import App from './App.vue';
import router from './router';
import store from './store';
import './registerServiceWorker';
Vue.config.productionTip = false;
new Vue({
router,
store,
render: (h) => h(App)
}).$mount('#app');

View File

@ -0,0 +1,32 @@
/* tslint:disable:no-console */
import { register } from 'register-service-worker';
if (process.env.NODE_ENV === 'production') {
register(`${process.env.BASE_URL}service-worker.js`, {
ready() {
console.log(
'App is being served from cache by a service worker.\n' +
'For more details, visit https://goo.gl/AFskqB'
);
},
registered() {
console.log('Service worker has been registered.');
},
cached() {
console.log('Content has been cached for offline use.');
},
updatefound() {
console.log('New content is downloading.');
},
updated() {
console.log('New content is available; please refresh.');
},
offline() {
console.log('No internet connection found. App is running in offline mode.');
},
error(error) {
console.error('Error during service worker registration:', error);
}
});
}

25
web/src/router.ts Normal file
View File

@ -0,0 +1,25 @@
import Vue from 'vue';
import Router from 'vue-router';
import Home from './views/Home.vue';
Vue.use(Router);
export default new Router({
mode: 'history',
base: process.env.BASE_URL,
routes: [
{
path: '/',
name: 'home',
component: Home
},
{
path: '/about',
name: 'about',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import(/* webpackChunkName: "about" */ './views/About.vue')
}
]
});

13
web/src/shims-tsx.d.ts vendored Normal file
View File

@ -0,0 +1,13 @@
import Vue, { VNode } from 'vue';
declare global {
namespace JSX {
// tslint:disable no-empty-interface
interface Element extends VNode {}
// tslint:disable no-empty-interface
interface ElementClass extends Vue {}
interface IntrinsicElements {
[elem: string]: any;
}
}
}

4
web/src/shims-vue.d.ts vendored Normal file
View File

@ -0,0 +1,4 @@
declare module '*.vue' {
import Vue from 'vue';
export default Vue;
}

16
web/src/store.ts Normal file
View File

@ -0,0 +1,16 @@
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
export default new Vuex.Store({
state: {
},
mutations: {
},
actions: {
}
});

5
web/src/views/About.vue Normal file
View File

@ -0,0 +1,5 @@
<template>
<div class="about">
<h1>This is an about page</h1>
</div>
</template>

6
web/src/views/Home.vue Normal file
View File

@ -0,0 +1,6 @@
<template>
<div class="home">
</div>
</template>
<script lang="ts" src="./home.ts"></script>

6
web/src/views/home.ts Normal file
View File

@ -0,0 +1,6 @@
import { Component, Vue } from 'vue-property-decorator';
@Component({
components: { }
})
export default class Home extends Vue {}