HTML中直接使用vue 打造个人工具,高效开发

对于程序员,日常开发过程中,总会有一些“体力活”需要做,本着一种“懒人”思想,那就必须要将一切自动化起来,为了早点下班回家不是嘛?
因此,需要打造自己趁手的工具,无疑,用html的方式是最简洁的,直接在浏览器中运行,html 修改性极强。

保持持续更新。

index.html内容如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>tools</title>
    <link rel="stylesheet" href="https://cdn.staticfile.net/element-plus/2.5.1/index.css" />
    <!-- Import Vue 3 -->
    <script src="https://cdn.staticfile.net/vue/3.3.4/vue.global.js"></script>
    <!-- Import component library -->
    <script src='https://cdn.staticfile.net/element-plus/2.5.1/index.full.min.js'></script>
    <!-- Import component library -->
    <script src='https://cdn.staticfile.net/axios/1.6.5/axios.min.js'></script>
    <script src='https://cdn.staticfile.net/element-plus-icons-vue/2.3.1/global.iife.min.js'></script>
    <script src='https://cdn.staticfile.net/jquery/3.7.1/jquery.min.js'></script>
    <script src="https://unpkg.com/http-vue-loader"></script>

</head>

<body>
    <div id="app">
        <el-row class="mb-4">
            <el-button icon="edit" type="primary" @click="handle">提示</el-button>
        </el-row>
        <!-- 按钮 -->
        <el-row class="mb-4">
            <el-button>Default</el-button>
            <el-button type="primary">Primary</el-button>
            <el-button type="success">Success</el-button>
            <el-button type="info">Info</el-button>
            <el-button type="warning">Warning</el-button>
            <el-button type="danger">Danger</el-button>
        </el-row>

        <!-- 表格 -->
        <div>
            <!-- stripe斑马条纹不起作用,我也不知道为啥 -->
            <el-table border stripe="true" :data="userList" style="width: 100%">
                <!-- 不要忘记末尾标签 </el-table-column>,否则会显示出错-->
                <el-table-column type="selection" width="55"></el-table-column>
                <el-table-column type="index" label="" width="50"></el-table-column>
                <el-table-column prop="name" label="姓名" width="180"></el-table-column>
                <el-table-column prop="age" label="年龄" width="180"></el-table-column>
                <el-table-column prop="email" label="邮箱"></el-table-column>
                <el-table-column prop="createTime" label="创建时间"></el-table-column>
                <el-table-column prop="updateTime" label="更改时间"></el-table-column>
            </el-table>
        </div>


        <el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" :ellipsis="false"
            @select="handleSelect">
            <el-menu-item index="0">清风徐来</el-menu-item>
            <div class="flex-grow"></div>
            <el-menu-item index="1">Processing Center</el-menu-item>
            <el-sub-menu index="2">
                <template #title>Workspace</template>
                <el-menu-item index="2-1">item one</el-menu-item>
                <el-menu-item index="2-2">item two</el-menu-item>
                <el-menu-item index="2-3">item three</el-menu-item>
                <el-sub-menu index="2-4">
                    <template #title>item four</template>
                    <el-menu-item index="2-4-1">item one</el-menu-item>
                    <el-menu-item index="2-4-2">item two</el-menu-item>
                    <el-menu-item index="2-4-3">item three</el-menu-item>
                </el-sub-menu>
            </el-sub-menu>
        </el-menu>


        <el-button @click="show">我是 show</el-button>
        <el-button @click="open2">我是 open2</el-button>

        <el-date-picker v-model="value1" type="datetime" placeholder="请选择日期"
            format="YYYY/MM/DD HH:mm:ss"></el-date-picker>

            <com-a></com-a>
        <com-b></com-b>

    </div>

</body>
<script>
    const { createApp, ref } = Vue
    const vue = Vue
    const { defineAsyncComponent } = Vue

    const el = ElementPlus
    const ElMessage = el.ElMessage

    const APP = createApp({
        setup() {
            const handle = () => {
                ElementPlus.ElMessage({
                    message: '点击!',
                    type: 'success',
                })
                
                // load json file.
                // $.getJSON("test.json", function(data) {
                //     $.each(data.data, function(i, val){
                //         console.log(i + "--" + val);
                //     });
                // });
                
      fetch('test.json')   
      .then((res) => {return res.json(); })  
      .then((data) => {
            console.log(JSON.stringify(data));
      })

            }
            const userList = ref([])

            const open2 = () => {
                ElMessage({
                    message: 'Congrats, this is a success message.',
                    type: 'success',
                })
            }
            const show = () => {
                ElMessage({
                    message: 'Im show.',
                    type: 'success',
                })
            }
            const value1 = ref('')

            const activeIndex = ref('1')
            const handleSelect = (key, keyPath) => {
                console.log(key, keyPath)
            }

            return {
                handle,
                userList,
                show,
                open2,

                activeIndex,
                handleSelect,

                value1
            }
        },
        created() {
            // this.showUserList()
        },
        methods: {
            showUserList() {
                //使用axios自定义配置,访问指定地址
                const request = axios.create({
                    baseURL: 'http://localhost:9000'
                })

                request
                    .get('/user/allUsers')
                    .then((response) => {
                        console.log('数据获取成功', response.data)
                        this.userList = response.data
                    })
                    .catch((error) => {
                        console.log('数据获取失败', error)
                    })

            }
        }

    })

    APP.component('edit', ElementPlusIconsVue.Edit)
    APP.component('com-a', defineAsyncComponent(httpVueLoader('./tpl1.vue')));
    APP.component('com-b', defineAsyncComponent(httpVueLoader('./tpl2.vue')));
    APP.use(ElementPlus).mount('#app')
</script>

</html>

tpl1.vue 内容如下

<template>
    <div class="test">
        <p>{{name}}</p>
        <p>{{state}}</p>
    </div>
</template>
 
<script>
    module.exports = {
        name:'test',
        data(){
            return{
                name:222
            }
        },
        props:{
            state:{
                type:String
            }
        }
    }
</script>
 
<style>
</style>

tpl2内容如下

<template>
    <h2>组件B</h2>
</template>

<script>
module.exports = {

}
</script>

<style scoped>

</style>

test.json内容如下:

{
    "data":"bbbb"
}

posted on 2024-03-23 10:08  jfunny  阅读(20)  评论(0)    收藏  举报

导航