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

简介: 之前一直在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>

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

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

目录
相关文章
|
2月前
|
JavaScript 前端开发 安全
Vue 3
Vue 3以组合式API、Proxy响应式系统和全面TypeScript支持,重构前端开发范式。性能优化与生态协同并进,兼顾易用性与工程化,引领Web开发迈向高效、可维护的新纪元。(238字)
520 139
|
7月前
|
JavaScript 前端开发 开发者
Vue 动态添加 HTML 元素组件封装使用方法及长尾关键词优化指南
本文详细介绍了Vue中动态添加HTML元素的使用方法与组件封装技巧。内容涵盖条件渲染(v-if/v-show)、列表渲染(v-for)、动态组件(:is)、手动操作DOM及动态创建组件实例等核心方法。同时,通过动态表单、弹窗组件和动态加载组件的封装示例,展示如何提升代码复用性和可维护性。最后,总结性能优化策略与注意事项,如批量更新DOM、懒加载大型组件及避免直接操作DOM等,帮助开发者在实际项目中灵活应用Vue动态元素管理功能。
204 15
|
2月前
|
缓存 JavaScript 算法
Vue 3性能优化
Vue 3 通过 Proxy 和编译优化提升性能,但仍需遵循最佳实践。合理使用 v-if、key、computed,避免深度监听,利用懒加载与虚拟列表,结合打包优化,方可充分发挥其性能优势。(239字)
235 1
|
7月前
|
缓存 JavaScript PHP
斩获开发者口碑!SnowAdmin:基于 Vue3 的高颜值后台管理系统,3 步极速上手!
SnowAdmin 是一款基于 Vue3/TypeScript/Arco Design 的开源后台管理框架,以“清新优雅、开箱即用”为核心设计理念。提供角色权限精细化管理、多主题与暗黑模式切换、动态路由与页面缓存等功能,支持代码规范自动化校验及丰富组件库。通过模块化设计与前沿技术栈(Vite5/Pinia),显著提升开发效率,适合团队协作与长期维护。项目地址:[GitHub](https://github.com/WANG-Fan0912/SnowAdmin)。
994 5
|
3月前
|
开发工具 iOS开发 MacOS
基于Vite7.1+Vue3+Pinia3+ArcoDesign网页版webos后台模板
最新版研发vite7+vue3.5+pinia3+arco-design仿macos/windows风格网页版OS系统Vite-Vue3-WebOS。
400 11
|
2月前
|
JavaScript 安全
vue3使用ts传参教程
Vue 3结合TypeScript实现组件传参,提升类型安全与开发效率。涵盖Props、Emits、v-model双向绑定及useAttrs透传属性,建议明确声明类型,保障代码质量。
270 0
|
4月前
|
缓存 前端开发 大数据
虚拟列表在Vue3中的具体应用场景有哪些?
虚拟列表在 Vue3 中通过仅渲染可视区域内容,显著提升大数据列表性能,适用于 ERP 表格、聊天界面、社交媒体、阅读器、日历及树形结构等场景,结合 `vue-virtual-scroller` 等工具可实现高效滚动与交互体验。
451 1
|
4月前
|
缓存 JavaScript UED
除了循环引用,Vue3还有哪些常见的性能优化技巧?
除了循环引用,Vue3还有哪些常见的性能优化技巧?
265 0
|
5月前
|
JavaScript
vue3循环引用自已实现
当渲染大量数据列表时,使用虚拟列表只渲染可视区域的内容,显著减少 DOM 节点数量。
137 0
|
7月前
|
JavaScript 前端开发 开发者
Vue 动态添加 HTML 元素组件封装使用方法及长尾关键词优化指南
本文详细介绍了Vue中动态添加HTML元素的多种方法与组件封装技巧,涵盖条件渲染(v-if/v-show)、列表渲染(v-for)、动态组件(:is)、手动DOM操作及动态创建组件实例等内容。同时提供了性能优化建议,如批量更新DOM、使用v-show代替v-if以及懒加载大型组件等。通过合理封装组件,可提高代码复用性和维护性。文中还附有具体示例代码,帮助开发者更好地理解和应用相关技术。适用于前端开发人员学习和实践Vue动态元素处理与组件设计。
175 19