VUE3(三十一)html單頁面使用VUE3

之前一直在VUE3的框架中使用VUE3。

但是我們在做一個小頁面的時候,沒有必要獨立創建一個VUE項目的時候,我們該如何使用VUE3呢?

下邊我這邊直接放出一個示例,復制粘貼就能用

這里我使用了VUE3+element-plus

<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>導出真實實驗數據</title>
    <link rel="stylesheet" >
    <script src="http://unpkg.com/vue@3.0.11/dist/vue.global.js"></script>
    <script src="http://unpkg.com/element-plus@1.0.2-beta.46/lib/index.full.js"></script>
</head>
<style>
    div {
        height: 30px;
        line-height: 30px;
    }
</style>
 
<body>
    <br><br><br><br><br><br><br>
    <div style="width:100%;" id="app">
        <div style="width:400px;margin:0 auto;">
            <h2>導出真實實驗數據</h2>
            <p>
            <div>虛擬實驗id(必填)</div>
            <el-input v-model="exp_id" placeholder="請輸入虛擬實驗id"></el-input>
            </p>
 
            <p>
            <div>學校id(非必填)</div>
            <el-input v-model="school_id" placeholder="請輸入學校id"></el-input>
            </p>
 
            <p>
            <div>60-100分人數比例(非必填) </div>
            <el-input v-model="upRatio" placeholder="0-100之間的數字"></el-input>
            </p>
 
            <p>
            <div>選擇日期(非必填)</div>
            <el-date-picker v-model="dateTime" type="daterange" range-separator="至" start-placeholder="開始日期"
                end-placeholder="結束日期"></el-date-picker>
            </p>
 
            <p>
            <div>生成隨機虛擬分數(非必填)</div>
            <el-radio v-model="randomScore" label="true">是</el-radio>
            <el-radio v-model="randomScore" label="false">否</el-radio>
            </p>
 
            <p>
                <el-button type="primary" @click="exportExcel">導出數據</el-button>
            </p>
        </div>
    </div>
</body>
 
</html>
<script>
    Object.assign(window, Vue);
    const vue3Composition = {
        setup() {
            const data = reactive({
                // 虛擬實驗id
                exp_id: '',
                // 生成隨機虛擬分數(true/false)
                randomScore: false,
                // 日期時間
                dateTime: [],
                // 60-100分人數比例
                upRatio: '',
                // 學校id
                school_id:'',
            });
            /**
             * @name: 導出excel
             * @author: camellia
             * @email: guanchao_gc@qq.com
             * @date: 2021-01-10 
             */
            const exportExcel = () => {
                var startTime = '';
                var endTime = '';
                var url = "https://dev.mools.net";
                if(!data.exp_id)
                {
                    Message.warning("請填寫虛擬實驗id");return;
                }
                if(data.dateTime.length > 0)
                {
                    startTime = format(data.dateTime[0], "yyyy-MM-dd") + " 00:00:00";
                    endTime = format(data.dateTime[1], "yyyy-MM-dd") + " 23:59:59";
                    // data.dateTime[0].valueOf();  => date日期變時間戳
                }
                if((data.upRatio != '' && data.upRatio > 100) || (data.upRatio != '' && data.upRatio < 0))
                {
                    Message.warning("不能大于100且不能小于0"); return;
                }
                var lastUrl = url + '?exp_id='+ data.exp_id + '&startTime='+ startTime+'&endTime='+endTime+'&upRatio='+ data.upRatio+'&randomScore='+ data.randomScore+'&school_id='+ data.school_id;
 
                window.open(lastUrl);
            }
            /**
             * @name: js日期Date格式化為字符串
             * @author: camellia
             * @email: guanchao_gc@qq.com
             * @date: 2021-07-05 
             * @param:  date    obj js日期對象
             * @param:  fmt string  日期格式(yyyy-MM-dd hh:mm:s)
             * @return: 字符串格式:2020-10-13 12:00:01
             */
            const format = (date, fmt) => {
                var o = {
                    "M+": date.getMonth() + 1, //月份
                    "d+": date.getDate(), //日
                    "h+": date.getHours(), //小時
                    "m+": date.getMinutes(), //分
                    "s+": date.getSeconds(), //秒
                    "q+": Math.floor((date.getMonth() + 3) / 3), //季度
                    "S": date.getMilliseconds() //毫秒
                };
                if (/(y+)/.test(fmt)) {
                    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
                }
                for (var k in o) {
                    if (new RegExp("(" + k + ")").test(fmt)) {
                        fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ?
                            (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
                    }
                }
                return fmt;
            }
            /**
             * @name: 將data綁定值dataRef
             * @author: camellia
             * @email: guanchao_gc@qq.com
             * @date: 2021-01-10 
             */
            const dataRef = toRefs(data);
            return {
                exportExcel,
                ...dataRef
            }
        },
    }
    // ElementPlus.locale(ElementPlus.lang.zhCn);
    const app = createApp(vue3Composition).use(ElementPlus).mount("#app");
</script>

再贅述一次,上邊的代碼復制粘貼即可使用

有好的建議,請在下方輸入你的評論。

歡迎訪問個人博客
https://guanchao.site

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容