22
loading...
This website collects cookies to deliver better user experience
laravel new laravue3-ts
yarn global add typescript
yarn add vue@next vue-loader@next @vue/compiler-sfc
yarn add ts-loader typescript --dev
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
// this enables stricter inference for data properties on `this`
"strict": true,
"jsx": "preserve",
"moduleResolution": "node"
}
}
declare module '*.vue' {
import type { DefineComponent } from 'vue'
const component: DefineComponent<{}, {}, any>
export default component
}
const mix = require("laravel-mix");
mix.ts("resources/js/app.ts", "public/js").vue({ version: 3 });
<template>
Hello {{ name }} welcome to my app.
<hr />
<counter></counter>
</template>
<script lang="ts">
import { defineComponent, ref } from "vue";
import Counter from "./Counter.vue";
export default defineComponent({
components: {
Counter,
},
setup() {
const name = ref<string>("Bijaya");
return {
name,
};
},
});
</script>
<template>
<button @click.prevent="decrement">-</button>
{{ count }}
<button @click.prevent="increment">+</button>
</template>
<script lang="ts">
import { defineComponent, ref } from "vue";
export default defineComponent({
name: "counter",
setup() {
const count = ref<number>(0);
const increment = ():number => {
return count.value++;
};
const decrement = ():number => {
return count.value--;
};
return {
count,
increment,
decrement,
};
},
});
</script>
import { createApp } from "vue";
import Welcome from "./components/Welcome.vue";
const app = createApp({
components: {
Welcome,
},
}).mount("#app");
<body>
<div id="app"></div>
<script src="{{ asset('js/app.js') }}"></script>
</body>
yarn dev
npm run dev
php artisan serve