VUE3(三十一)html单页面使用VUE3

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 之前一直在VUE3的框架中使用VUE3。但是我们在做一个小页面的时候,没有必要独立创建一个VUE项目的时候,我们该如何使用VUE3呢?下边我这边直接放出一个示例,复制粘贴就能用

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

但是我们在做一个小页面的时候,没有必要独立创建一个VUE项目的时候,我们该如何使用VUE3呢?

下边我这边直接放出一个示例,复制粘贴就能用

这里我使用了VUE3+element-plus

xml

复制代码

<html>
<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>Moolsnet第三方对接数据加密示例</title>
    <link rel="stylesheet" href="https://unpkg.com/element-plus/dist/index.css">
    <script src="https://unpkg.com/vue@3.0.11/dist/vue.global.js"></script>
    <script src="https://unpkg.com/element-plus@1.0.2-beta.46/lib/index.full.js"></script>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script src="https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/qs/6.9.6/qs.min.js"
        type="application/javascript"></script>
    <!-- 引入加密文件(这个必须引入) -->
    <script src="https://www.mools.net/lims/web/common/js/crypto-js.js"></script>
</head>
<style>
    span{
        display: inline-block;
    }
    div {
        height: 30px;
        line-height: 30px;
    }
    .left{
        float: left;
    }
    .input-el{
        height: 50px;
        line-height: 50px;
    }
</style>
<body>
    <div style="width:100%;" id="app">
        <div style="width:80%;margin:0 auto;height:200px">
            <div>
                <h1>加密参数</h1>
            </div>
            <br>
            <div>
                <span>key(16位):</span><span><el-input v-model="key" placeholder="请输入加密key" style="width:1000px;"></el-input></span>
            </div>
            <div>
                <span>i&nbsp;&nbsp;&nbsp;v(16位):</span><span><el-input v-model="iv" placeholder="请输入加密iv" style="width:1000px;"></el-input></span>
            </div>
        </div>
        <div style="width:80%;margin:0 auto;">
            <!-- 前端加密 -->
            <div>
                <div>
                    <h1>前端加密,加密值必须是json</h1>
                </div>
                <br>
                <!-- textarea -->
                <div>
                    <el-input type="textarea" rows="10" placeholder="请输入要加密的json" size="medium" v-model="jia_json" maxlength="100000" style="width:500px;" >
                    </el-input>
                </div>
                <!-- 按钮 -->
                <div style="margin-left:15px;margin-right:15px;">
                    <el-button type="primary" @click="enCode">前端加密</el-button>
                </div>
                <!-- textarea -->
                <div>
                    <el-input type="textarea" rows="10" placeholder="请输入内容" size="medium" v-model="jia_value" maxlength="500000" style="width:500px;" >
                    </el-input>
                </div>
            </div>
            <br><br><br>
            <br><br><br><br><br><br>
            <!-- 后端 解密 -->
            <div>
                <div>
                    <h1>后端解密</h1>
                </div>
                <br>
                <!-- textarea -->
                <div>
                    <el-input type="textarea" rows="10" placeholder="请输入要解密的字符串" size="medium" v-model="jie_str" style="width:500px;" maxlength="500000" >
                    </el-input>
                </div>
                <!-- 按钮 -->
                <div style="margin-left:15px;margin-right:15px;">
                    <el-button type="primary" @click="deCode()">后端解密</el-button>
                </div>
                <!-- textarea -->
                <div>
                    <el-input type="textarea" rows="10" placeholder="请输入内容" size="medium" v-model="jie_value" style="width:500px;" maxlength="100000" >
                    </el-input>
                </div>
            </div>
        </div>
    </div>
</body>
</html>
<script>
    Object.assign(window, Vue);
    const vue3Composition = {
        setup() {
            const data = reactive({
                // 加密的json
                jia_json:"{'name':1,'class_id':2}",
                // 加密得到的字符串
                jia_value:'',
                // 解密字符串
                jie_str:'',
                // 解密得到的值
                jie_value: '',
                // 加密key
                key:'',
                // 加密iv
                iv:'',
            });
            /**
             * @name: 加密
             * @author: camellia
             * @email: guanchao_gc@qq.com
             * @date: 2021-08-19
             */
            const enCode = () => {
                // 加密所需的秘钥以及偏移字符串,后期我们会为您提供,以下两个字符串仅供测试使用,不可用于正式环境
                // const key = '1234567887654321';
                // const iv = '1234567887654321';
                if(data.key == '' || data.iv == '')
                {
                    ElementPlus.ElMessage({
                        showClose: true,
                        message: '请填写加密参数',
                        type: 'warning'
                    }); return;
                }
                // 调用加密方法
                data.jia_value = encryptCode(data.jia_json, data.key, data.iv);
            }
            /**
             * @name:crypto-js 加密
             * @author: camellia
             * @email: guanchao_gc@qq.com
             * @date: 2021-08-19
             * @param: param json 要加密的值(必须是json)
             * @param: key string 加密秘钥  16位字符串
             * @param: iv string 加密偏移量  16位字符串
             */
            const encryptCode = (param,key,iv) => {
                // json转json字符串
                var text = JSON.stringify(param);
                // 加载秘钥
                var key = CryptoJS.enc.Latin1.parse(key); 
                // 加载偏移量
                var iv = CryptoJS.enc.Latin1.parse(iv); 
                // 加密
                var encrypted = CryptoJS.AES.encrypt(text, key, {
                    iv: iv,
                    mode: CryptoJS.mode.CBC,
                    padding: CryptoJS.pad.ZeroPadding
                }).toString();
                return encrypted;
            };
            /**
             * @name: 后端解密
             * @author: camellia
             * @email: guanchao_gc@qq.com
             * @date: 2021-08-19 
             * @param: data type description
             * @return: data type description
             */
            const deCode = () => {
                if(data.key == '' || data.iv == '')
                {
                    ElementPlus.ElMessage({
                        showClose: true,
                        message: '请填写加密参数',
                        type: 'warning'
                    }); return;
                }
                var param = data.jie_str;
                var postData = Qs.stringify({
                    params: param,
                    key: data.key,
                    iv: data.iv
                });
                axios.post("https://dlut.mools.net/jiemi.php", postData )
                    .then(response => {
                        data.jie_value = response.data;
                    })
                    .catch(error => {
                        // console.log(error);
                    });
            }
            /**
             * @name: 将data绑定值dataRef
             * @author: camellia
             * @email: guanchao_gc@qq.com
             * @date: 2021-08-19
             */
            const dataRef = toRefs(data);
            return {
                deCode,
                enCode,
                ...dataRef
            }
        },
    }
    // ElementPlus.locale(ElementPlus.lang.zhCn);
    const app = createApp(vue3Composition).use(ElementPlus).mount("#app");
</script>

再赘述一次,上边的代码复制粘贴即可使用

有好的建议,请在下方输入你的评论。

目录
相关文章
|
16天前
|
存储 JavaScript 前端开发
vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
【10月更文挑战第21天】 vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
|
19天前
|
API
vue3知识点:provide 与 inject
vue3知识点:provide 与 inject
28 4
vue3知识点:provide 与 inject
|
19天前
|
API
vue3知识点:readonly 与 shallowReadonly
vue3知识点:readonly 与 shallowReadonly
24 1
vue3知识点:readonly 与 shallowReadonly
|
13天前
|
JavaScript 前端开发 开发者
Vue 3中的Proxy
【10月更文挑战第23天】Vue 3中的`Proxy`为响应式系统带来了更强大、更灵活的功能,解决了Vue 2中响应式系统的一些局限性,同时在性能方面也有一定的提升,为开发者提供了更好的开发体验和性能保障。
30 7
|
14天前
|
前端开发 数据库
芋道框架审批流如何实现(Cloud+Vue3)
芋道框架审批流如何实现(Cloud+Vue3)
36 3
|
13天前
|
JavaScript 数据管理 Java
在 Vue 3 中使用 Proxy 实现数据双向绑定的性能如何?
【10月更文挑战第23天】Vue 3中使用Proxy实现数据双向绑定在多个方面都带来了性能的提升,从更高效的响应式追踪、更好的初始化性能、对数组操作的优化到更优的内存管理等,使得Vue 3在处理复杂的应用场景和大量数据时能够更加高效和稳定地运行。
33 1
|
13天前
|
JavaScript 开发者
在 Vue 3 中使用 Proxy 实现数据的双向绑定
【10月更文挑战第23天】Vue 3利用 `Proxy` 实现了数据的双向绑定,无论是使用内置的指令如 `v-model`,还是通过自定义事件或自定义指令,都能够方便地实现数据与视图之间的双向交互,满足不同场景下的开发需求。
34 1
|
15天前
|
前端开发 JavaScript
简记 Vue3(一)—— setup、ref、reactive、toRefs、toRef
简记 Vue3(一)—— setup、ref、reactive、toRefs、toRef
|
16天前
Vue3 项目的 setup 函数
【10月更文挑战第23天】setup` 函数是 Vue3 中非常重要的一个概念,掌握它的使用方法对于开发高效、灵活的 Vue3 组件至关重要。通过不断的实践和探索,你将能够更好地利用 `setup` 函数来构建优秀的 Vue3 项目。
|
19天前
|
JavaScript Java API
vue3知识点:setup
vue3知识点:setup
27 5

热门文章

最新文章