# Vue出新世界
```html
<!doctype html>
<html lang="en" class="h-100" data-bs-theme="light">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Examples</title>
<!-- .CSS 樣式引入區域 -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
<style>
main>.container {
padding-top: 80px;
}
;
</style>
</head>
<body class="d-flex flex-column h-100">
<header>
<nav class="navbar navbar-expand-lg bg-body-tertiary fixed-top">
<div class="container-fluid">
<a class="navbar-brand" href="#">
Example
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
data-bs-target="#navbarTogglerDemo01" aria-controls="navbarTogglerDemo01" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarTogglerDemo01">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">首頁</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" aria-disabled="true">Disabled</a>
</li>
</ul>
<form class="d-flex" role="search">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</div>
</nav>
</header>
<main class="flex-shrink-0">
<div class="container">
<h1>Hello</h1>
</div>
</main>
<footer class="footer mt-auto py-3 bg-body-tertiary">
<div class="container">
<span>Example</span>
</div>
</footer>
<!-- .js 引入區域 -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"
integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz"
crossorigin="anonymous">
</script>
</body>
</html>
```
```html
<!DOCTYPE html>
<html>
<head>
<title>我的網頁</title>
</head>
<body>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<div id="app">{{ message }}</div>
<script>
const { createApp, ref } = Vue
createApp({
setup() {
const message = ref('Hello vue!')
return {
message
}
}
}).mount('#app')
</script>
</body>
</html>
```
```html
<!DOCTYPE html>
<html>
<head>
<title>我的網頁</title>
</head>
<body>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<div id="app">
<p> 總共金額 {{subtotal()}}</p>
<p> 總共金額 {{subtotal()}}</p>
<p> 總共金額 {{subtotal()}}</p>
</div>
<script>
const vm = Vue.createApp({
data(){
return{
price: 100,
quantity: 10
}
},
methods:{
subtotal:function(){
return this.price * this.quantity;
}
}
}).mount('#app');
</script>
</body>
</html>
```
```html
<!DOCTYPE html>
<html>
<head>
<title>我的網頁</title>
</head>
<body>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<div id="app">
<button :disabled="isBtnDisabled">click me!!</button>
<button :disabled="true">click me!!</button>
<button :disabled="false">click me!!</button>
</div>
<script>
const vm = Vue.createApp({
data(){
return{
isBtnDisabled: false
}
},
}).mount('#app');
</script>
</body>
</html>
```
```html
<!DOCTYPE html>
<html>
<head>
<title>我的網頁</title>
</head>
<body>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<div id="app">
<input v-model="message" placeholder="edit me">
<p>Message is: {{ message }}</p>
</div>
<script>
const { createApp, ref } = Vue
const vm = Vue.createApp({
data() {
return {
message: "Hello"
}
}
}).mount('#app')
</script>
</body>
</html>
```
```html
<!DOCTYPE html>
<html>
<head>
<title>我的網頁</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
<!-- Use cdn import VUE.JS -->
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<!-- Use cdn import Boostrap -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"
integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz"
crossorigin="anonymous"></script>
</head>
<body>
<div id="app">
<div class="container h-100">
<div class="row h-100 justify-content-center">
<div class="col-6 col-lg-4">
<!-- Card -->
<div class="card mt-5">
<div class="card-body">
<h3 class="card-title fw-bold text-center mb-4">登入</h3>
<button type="submit" class="btn border my-2 w-100">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor"
class="bi bi-facebook float-start" viewBox="0 0 16 16">
<path
d="M16 8.049c0-4.446-3.582-8.05-8-8.05C3.58 0-.002 3.603-.002 8.05c0 4.017 2.926 7.347 6.75 7.951v-5.625h-2.03V8.05H6.75V6.275c0-2.017 1.195-3.131 3.022-3.131.876 0 1.791.157 1.791.157v1.98h-1.009c-.993 0-1.303.621-1.303 1.258v1.51h2.218l-.354 2.326H9.25V16c3.824-.604 6.75-3.934 6.75-7.951" />
</svg>
使用FaceBook登入
</button>
<button type="submit" class="btn border my-2 w-100">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor"
class="bi bi-google float-start" viewBox="0 0 16 16">
<path
d="M15.545 6.558a9.4 9.4 0 0 1 .139 1.626c0 2.434-.87 4.492-2.384 5.885h.002C11.978 15.292 10.158 16 8 16A8 8 0 1 1 8 0a7.7 7.7 0 0 1 5.352 2.082l-2.284 2.284A4.35 4.35 0 0 0 8 3.166c-2.087 0-3.86 1.408-4.492 3.304a4.8 4.8 0 0 0 0 3.063h.003c.635 1.893 2.405 3.301 4.492 3.301 1.078 0 2.004-.276 2.722-.764h-.003a3.7 3.7 0 0 0 1.599-2.431H8v-3.08z" />
</svg>
使用Google登入
</button>
<button type="submit" class="btn border my-2 w-100">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor"
class="bi bi-apple float-start" viewBox="0 0 16 16">
<path
d="M11.182.008C11.148-.03 9.923.023 8.857 1.18c-1.066 1.156-.902 2.482-.878 2.516s1.52.087 2.475-1.258.762-2.391.728-2.43m3.314 11.733c-.048-.096-2.325-1.234-2.113-3.422s1.675-2.789 1.698-2.854-.597-.79-1.254-1.157a3.7 3.7 0 0 0-1.563-.434c-.108-.003-.483-.095-1.254.116-.508.139-1.653.589-1.968.607-.316.018-1.256-.522-2.267-.665-.647-.125-1.333.131-1.824.328-.49.196-1.422.754-2.074 2.237-.652 1.482-.311 3.83-.067 4.56s.625 1.924 1.273 2.796c.576.984 1.34 1.667 1.659 1.899s1.219.386 1.843.067c.502-.308 1.408-.485 1.766-.472.357.013 1.061.154 1.782.539.571.197 1.111.115 1.652-.105.541-.221 1.324-1.059 2.238-2.758q.52-1.185.473-1.282" />
<path
d="M11.182.008C11.148-.03 9.923.023 8.857 1.18c-1.066 1.156-.902 2.482-.878 2.516s1.52.087 2.475-1.258.762-2.391.728-2.43m3.314 11.733c-.048-.096-2.325-1.234-2.113-3.422s1.675-2.789 1.698-2.854-.597-.79-1.254-1.157a3.7 3.7 0 0 0-1.563-.434c-.108-.003-.483-.095-1.254.116-.508.139-1.653.589-1.968.607-.316.018-1.256-.522-2.267-.665-.647-.125-1.333.131-1.824.328-.49.196-1.422.754-2.074 2.237-.652 1.482-.311 3.83-.067 4.56s.625 1.924 1.273 2.796c.576.984 1.34 1.667 1.659 1.899s1.219.386 1.843.067c.502-.308 1.408-.485 1.766-.472.357.013 1.061.154 1.782.539.571.197 1.111.115 1.652-.105.541-.221 1.324-1.059 2.238-2.758q.52-1.185.473-1.282" />
</svg>
使用Apple登入
</button>
<hr class="dropdown-divider">
<form id="form" class="my-2">
<div class="form-group">
<label for="emailInput">電子郵件</label>
<input type="email" class="form-control" placeholder="電子郵件" v-model="InputEmail">
</div>
<div class="form-group">
<label for="passwordInput">密碼</label>
<input type="password" class="form-control" placeholder="密碼"
v-model="InputPassword">
</div>
<button type="submit" class="btn btn-primary mt-2 border w-100"
:disabled="checkInput">登入</button>
<div class="form-group form-check mt-2">
<input type="checkbox" class="form-check-input" id="rememberCheck">
<label class="form-check-label" for="rememberCheck">記住我的帳號</label>
<a class="float-end" href="">忘記密碼?</a>
</div>
</form>
</div>
</div>
<!-- End of Card -->
</div>
</div>
</div>
</div>
<script>
const vm = Vue.createApp({
data() {
return {
InputEmail: "",
InputPassword: "",
CorrectEmail: "123456@gmail.com",
CorrectPassword: "123456789"
}
},
computed: {
checkInput() {
if (this.InputEmail.trim() == "" || this.InputPassword.trim() === "") {
return true;
}
else {
return false;
}
}
},
methods: {
login(email, password) {
if (email === this.CorrectEmail && CorrectPassword === this.CorrectPassword) {
console.log('正確');
}
else {
console.log('錯誤');
}
}
}
}).mount('#app');
</script>
</body>
</html>
```
```html
<!DOCTYPE html>
<html>
<head>
<title>我的網頁</title>
</head>
<body>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<div id="app">
<p>Count: {{ count }}</p>
<button v-on:click="plus">Plus</button>
<!--V-on或@-->
</div>
<script>
const { createApp, ref } = Vue
const vm = Vue.createApp({
data() {
return {
count: 0
}
},
methods: {
plus () {
this.count++
}
}
}).mount('#app')
</script>
</body>
</html>
```
```html
<!DOCTYPE html>
<html>
<head>
<title>我的網頁</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
<!-- Use cdn import VUE.JS -->
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<!-- Use cdn import Boostrap -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"
integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz"
crossorigin="anonymous"></script>
</head>
<body>
<div id="app">
<div class="container h-100">
<div class="row h-100 justify-content-center">
<div class="col-6 col-lg-4">
<!-- Card -->
<div class="card mt-5">
<div class="card-body">
<h3 class="card-title fw-bold text-center mb-4">登入</h3>
<button type="submit" class="btn border my-2 w-100">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor"
class="bi bi-facebook float-start" viewBox="0 0 16 16">
<path
d="M16 8.049c0-4.446-3.582-8.05-8-8.05C3.58 0-.002 3.603-.002 8.05c0 4.017 2.926 7.347 6.75 7.951v-5.625h-2.03V8.05H6.75V6.275c0-2.017 1.195-3.131 3.022-3.131.876 0 1.791.157 1.791.157v1.98h-1.009c-.993 0-1.303.621-1.303 1.258v1.51h2.218l-.354 2.326H9.25V16c3.824-.604 6.75-3.934 6.75-7.951" />
</svg>
使用FaceBook登入
</button>
<button type="submit" class="btn border my-2 w-100">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor"
class="bi bi-google float-start" viewBox="0 0 16 16">
<path
d="M15.545 6.558a9.4 9.4 0 0 1 .139 1.626c0 2.434-.87 4.492-2.384 5.885h.002C11.978 15.292 10.158 16 8 16A8 8 0 1 1 8 0a7.7 7.7 0 0 1 5.352 2.082l-2.284 2.284A4.35 4.35 0 0 0 8 3.166c-2.087 0-3.86 1.408-4.492 3.304a4.8 4.8 0 0 0 0 3.063h.003c.635 1.893 2.405 3.301 4.492 3.301 1.078 0 2.004-.276 2.722-.764h-.003a3.7 3.7 0 0 0 1.599-2.431H8v-3.08z" />
</svg>
使用Google登入
</button>
<button type="submit" class="btn border my-2 w-100">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor"
class="bi bi-apple float-start" viewBox="0 0 16 16">
<path
d="M11.182.008C11.148-.03 9.923.023 8.857 1.18c-1.066 1.156-.902 2.482-.878 2.516s1.52.087 2.475-1.258.762-2.391.728-2.43m3.314 11.733c-.048-.096-2.325-1.234-2.113-3.422s1.675-2.789 1.698-2.854-.597-.79-1.254-1.157a3.7 3.7 0 0 0-1.563-.434c-.108-.003-.483-.095-1.254.116-.508.139-1.653.589-1.968.607-.316.018-1.256-.522-2.267-.665-.647-.125-1.333.131-1.824.328-.49.196-1.422.754-2.074 2.237-.652 1.482-.311 3.83-.067 4.56s.625 1.924 1.273 2.796c.576.984 1.34 1.667 1.659 1.899s1.219.386 1.843.067c.502-.308 1.408-.485 1.766-.472.357.013 1.061.154 1.782.539.571.197 1.111.115 1.652-.105.541-.221 1.324-1.059 2.238-2.758q.52-1.185.473-1.282" />
<path
d="M11.182.008C11.148-.03 9.923.023 8.857 1.18c-1.066 1.156-.902 2.482-.878 2.516s1.52.087 2.475-1.258.762-2.391.728-2.43m3.314 11.733c-.048-.096-2.325-1.234-2.113-3.422s1.675-2.789 1.698-2.854-.597-.79-1.254-1.157a3.7 3.7 0 0 0-1.563-.434c-.108-.003-.483-.095-1.254.116-.508.139-1.653.589-1.968.607-.316.018-1.256-.522-2.267-.665-.647-.125-1.333.131-1.824.328-.49.196-1.422.754-2.074 2.237-.652 1.482-.311 3.83-.067 4.56s.625 1.924 1.273 2.796c.576.984 1.34 1.667 1.659 1.899s1.219.386 1.843.067c.502-.308 1.408-.485 1.766-.472.357.013 1.061.154 1.782.539.571.197 1.111.115 1.652-.105.541-.221 1.324-1.059 2.238-2.758q.52-1.185.473-1.282" />
</svg>
使用Apple登入
</button>
<hr class="dropdown-divider">
<form id="form" class="my-2">
<div class="form-group">
<label for="emailInput">電子郵件</label>
<input type="email" class="form-control" placeholder="電子郵件" v-model="InputEmail">
</div>
<div class="form-group">
<label for="passwordInput">密碼</label>
<input type="password" class="form-control" placeholder="密碼"
v-model="InputPassword">
</div>
<button type="button" class="btn btn-primary mt-2 border w-100" :disabled="checkInput"
@click="login">登入</button>
<div class="form-group form-check mt-2">
<input type="checkbox" class="form-check-input" id="rememberCheck">
<label class="form-check-label" for="rememberCheck">記住我的帳號</label>
<a class="float-end" href="">忘記密碼?</a>
</div>
</form>
</div>
</div>
<!-- End of Card -->
</div>
</div>
</div>
</div>
<script>
const vm = Vue.createApp({
data() {
return {
InputEmail: "",
InputPassword: "",
CorrectEmail: "123456@gmail.com",
CorrectPassword: "123456789"
}
},
computed: {
checkInput() {
if (this.InputEmail.trim() == "" || this.InputPassword.trim() === "") {
return true;
}
else {
return false;
}
}
},
methods: {
login() {
console.log();
if (this.InputEmail === this.CorrectEmail && this.InputPassword === this.CorrectPassword) {
console.log('正確');
}
else {
console.log('錯誤');
}
}
}
}).mount('#app');
</script>
</body>
</html>
```