vue脚手架基础demo

简介: vue脚手架基础demo

created_demo1示例

image.png


<template>
    <div style="color: white;font-size: 3rem">
            {{ShowText}}
        </div>
</template>
<script>
export default {
    name:"demo1",
    data:function(){
        return {
                StrArray: ["北京第三区交通委提醒您:",
                    "道路千万条,",
                    "安全第一条,",
                    "行车不规范,",
                    "亲人两行泪。"
                ],
                index: 0,
                ShowText: ""
            }
    },
    created() {
                //复制自己,方便修改
                var _this = this;
                _this.ShodText = _this.StrArray[0];
                setInterval(() => {
                    _this.index++;
                    if (_this.index == 5) {
                        _this.index = 0;
                    }
                    _this.ShowText = this.StrArray[_this.index];
                }, 2000);
            }
}
</script>
    <style>
        #app {
            line-height: 200px;
            width: 600px;
            height: 200px;
            background-color: skyblue;
            border-radius: 20px;
            text-align: center;
            transition: 5s all;
        }
        #app:hover {
            transition: 5s all;
            background-color: pink;
            border-radius: 50%;
            border: 5px double red;
        }
    </style>


created_demo2示例


image.png

<template>
   <div style="color: white;font-size: 1.5rem">
            {{ShowText}}
        </div>
</template>
<script>
export default {
    name:"demo1",
    data:function(){
        return {
                ShowText: ""
            }
    },
    created() {
                //复制自己,方便修改
                setInterval(() => {
                    var times = "当前时间:";
                    var d = new Date();
                    var year = d.getFullYear();
                    var month = (d.getMonth() + 1).toString().padStart(2, '0');
                    var day = d.getDate().toString().padStart(2, '0');
                    var hour = d.getHours().toString().padStart(2, '0');
                    var min = d.getMinutes().toString().padStart(2, '0');
                    var se = d.getSeconds().toString().padStart(2, '0');
                    this.ShowText = times + year + "-" + month + "-" + day + " " + hour + ":" + min + ":" + se;
                }, 1000);
            }
}
</script>
    <style>
        #app {
            line-height: 200px;
            width: 600px;
            height: 200px;
            background-color: skyblue;
            border-radius: 20px;
            text-align: center;
            transition: 5s all;
        }
        #app:hover {
            transition: 5s all;
            background-color: pink;
            border-radius: 50%;
            border: 5px double red;
        }
    </style>


filters_demo3

image.png


<template>
        <div>
            <input type="text" v-model="InText" placeholder="请输入过滤词" />
            <p>{{InText | FilterInText}}</p>
        </div>
</template>
<script>
export default {
    name:"demo1",
    data:function(){
        return {
                InText: ""
            }
    },
    filters: {
                FilterInText: function(o) {
                    return o.replace('傻', '*');
                }
            }
}
</script>
    <style>
        #app {
            line-height: 200px;
            width: 600px;
            height: 200px;
            background-color: skyblue;
            border-radius: 20px;
            text-align: center;
            transition: 5s all;
        }
        #app:hover {
            transition: 5s all;
            background-color: pink;
            border-radius: 50%;
            border: 5px double red;
        }
    </style>


v-once v-text_demo4


image.png

<template>
        <div>
            <input type="text" v-model="Msg" />
            <p>{{Msg}}</p>
            <p v-once>{{Msg}}</p>
            <p v-text>{{Msg}}</p>
        </div>
</template>
<script>
export default {
    name:"demo1",
    data:function(){
        return {
                Msg: "远方的梦想"
            }
    }
}
</script>
    <style>
        #app {
            line-height: 200px;
            width: 600px;
            height: 200px;
            background-color: skyblue;
            border-radius: 20px;
            text-align: center;
            transition: 5s all;
        }
        #app:hover {
            transition: 5s all;
            background-color: pink;
            border-radius: 50%;
            border: 5px double red;
        }
    </style>


数据类型demo5

parseInt格式化整数类型


image.png


<template>
        <div>
        <fieldset>
            <legend>个人工资计算器</legend>
            <p>基本工资:<input type="text" v-model="a1" /></p>
            <p>岗位工资:<input type="text" v-model="a2" /></p>
            <p>月度奖金:<input type="text" v-model="a3" /></p>
            <p>综合补贴:<input type="text" v-model="a4" /></p>
            <p>扣款金额:<input type="text" v-model="a5" /></p>
            <p>应发工资:{{parseInt(a1)+parseInt(a2)+parseInt(a3)+parseInt(a4)-parseInt(a5)}}元</p>
        </fieldset>
        </div>
</template>
<script>
export default {
    name:"demo1",
    data:function(){
        return {
                a1: 0,
                a2: 0,
                a3: 0,
                a4: 0,
                a5: 0
            }
    }
}
</script>
    <style>
        #app:hover {
            transition: 5s all;
            background-color: pink;
            border-radius: 50%;
            border: 5px double red;
        }
    </style>


v-bind_demo6

“:” 是指令 “v-bind”的缩写

image.png


<template>
        <div>
            <img :src="img1" :style="sty1" />
        </div>
</template>
<script>
export default {
    name:"demo1",
    data:function(){
        return {
                img1: "https://ucc.alicdn.com/images/user-upload-01/2ef5964ce6c641da87db1a4419aa07d8.png",
                sty1: "width:250px;height:400px;border-radius:50%"
            }
    }
}
</script>
    <style>
        #app:hover {
            transition: 5s all;
            background-color: pink;
            border-radius: 50%;
            border: 5px double red;
        }
    </style>


:class_demo7

绑定样式

image.png

<template>
        <div>
        <input type="checkbox" v-model="state1" />文字颜色
        <input type="checkbox" v-model="state2" />背景颜色
        <input type="checkbox" v-model="state3" />文字大小
        <input type="checkbox" v-model="state4" />边框
        <input type="checkbox" v-model="state5" />边框圆角
        <input type="checkbox" v-model="state6" />居中
        <hr/>
        <p v-bind:class="{co:state1,bgc:state2,fs:state3,bor:state4,boru:state5,cen:state6}">风云·雄霸天下</p>
        </div>
</template>
<script>
export default {
    name:"demo1",
    data:function(){
        return {
                state1: false,
                state2: false,
                state3: true,
                state4: false,
                state5: false,
                state6: false
            }
    }
}
</script>
    <style>
        .co {
            color: red;
            transition: 2s all;
        }
        .bgc {
            background-color: pink;
            transition: 2s all;
        }
        .fs {
            font-size: 2rem;
            transition: 2s all;
        }
        .bor {
            border: 2px solid skyblue;
            transition: 2s all;
        }
        .boru {
            border-radius: 50px;
            transition: 2s all;
        }
        .cen {
            text-align: center;
            transition: 2s all;
        }
    </style>

图片轮播_demo8

图片会每2.5秒更换一张


<template>
        <div>
            <img :src="url" style="width:400px;height:400px;" />
        </div>
</template>
<script>
export default {
    name:"demo1",
    data:function(){
        return {
                UrlArray: [
                    "https://ucc.alicdn.com/images/user-upload-01/2ef5964ce6c641da87db1a4419aa07d8.png",
                    "https://gd-hbimg.huaban.com/62272f15b1e5688d34dbda4329aca2e87a3c4cb02755e-m4GyqS_fw240webp",
                    "https://gd-hbimg.huaban.com/da6369148e013233f191a9b0a0ce8b64c94d52871a9e8b-oA9BTm_fw240webp",
                    "https://gd-hbimg.huaban.com/38da95669436902fe92a34b5af6a67ca777d1a372d477-U83Ijg_fw240webp",
                    "https://gd-hbimg.huaban.com/eb68b53436241e3003fa350b4ca2fb8c55cf224145f3a8-UA4z33_fw240webp",
                    "https://gd-hbimg.huaban.com/a92746f0400e6af2aa863866343abc60e4fbd1cd24126-CCihy1_fw240webp",
                    "https://gd-hbimg.huaban.com/9830dc6dbba93ca8f2b3cf9a4acfa520d239948936cdb-L7wsf7_fw240webp",
                    "https://gd-hbimg.huaban.com/f8b0a09bddb0f0d2336297ef2d1dddacc348881e95d34-GVgBa3_fw240webp",
                    "https://gd-hbimg.huaban.com/c30cc07930dd1836ed5bb80f66594925c010aa3f12670-RcYPuu_fw240webp",
                    "https://gd-hbimg.huaban.com/19245080ce098c73b47ae37384263b8ff603d4c3df3394-N9O7Qs_fw240webp",
                    "https://gd-hbimg.huaban.com/11cc94621656f786002448c5007d259bb6397bf1d221-W9p8JJ_fw240webp",
                    "https://gd-hbimg.huaban.com/d60130b066cd98f81cb3fd852d2c3504d4ce5cd8388f8-oKCIke_fw240webp"
                ],
                index: 0,
                url: ""
            }
    },
            created() {
                //影分身之术
                var _this = this;
                _this.url = _this.UrlArray[0];
                //判断循环
                setInterval(() => {
                    _this.index++;
                    if (_this.index == _this.UrlArray.length) {
                        _this.index = 0;
                    }
                    _this.url = _this.UrlArray[_this.index];
                }, 2500);
            }
}
</script>


v-if v-else——demo9

image.png



<template>
        <div>
        <input type="checkbox" v-model="isf">登录/注册<br/>
        <hr/>
        <div v-if="isf">
            <p>
                账号:<input type="text" placeholder="请输入账号" />
            </p>
            <p>
                密码:<input type="text" placeholder="请输入密码" />
            </p>
            <p>
                二次密码:<input type="text" placeholder="请输入二次密码" />
            </p>
            <p><button>注册</button></p>
        </div>
        <div v-else>
            <p>
                账号:<input type="text" placeholder="请输入账号" />
            </p>
            <p>
                密码:<input type="text" placeholder="请输入密码" />
            </p>
            <p><button>登录</button></p>
        </div>
        </div>
</template>
<script>
export default {
    name:"demo1",
    data:function(){
        return {
                isf: false
            }
    }
}
</script>


按钮事件——demo10

image.png


<template>
        <div>
            <p v-on:click="test1">你是一个好人</p>
            <p v-on:click="test2">你是俩个好人</p>
        </div>
</template>
<script>
export default {
    name:"demo1",
    data:function(){
    },
                methods: {
                test1: function() {
                    alert("你确定是一个好人,但是咱们不合适。");
                },
                test2: function() {
                    alert("你确定是两个好人,但是咱们不合适。");
                }
            }
}
</script>

选项卡demo11

image.png

<template>
        <div id="show">
            <div class="divs">
                <!--选项卡一-->
                <div class="btn" v-on:click="choose(1)">选项卡一</div> &nbsp;
                <!--选项卡二-->
                <div class="btn" v-on:click="choose(2)">选项卡二</div>
            </div>
            <div style="clear:both"></div>
            <div id="one" style="color: red">我是选项卡一的内容</div>
            <div id="two" style="color: skyblue;display: none;">我是选项卡二的内容</div>
        </div>
</template>
<script>
export default {
    name:"demo1",
    data:function(){
    },
            created() {
                document.getElementById("two").style.display = "";
            },
            methods: {
                choose: function(o) {
                    if (o == "1") {
                        document.getElementById("one").style.display = "";
                        document.getElementById("two").style.display = "none";
                    } else {
                        document.getElementById("one").style.display = "none";
                        document.getElementById("two").style.display = "";
                    }
                }
            }
}
</script>
    <style>
    #show{
        width:80%;
        font-size: 1.2rem;
    }
        .divs div {
            float: left;
        }
        .btn{
            border:1px solid red;
            margin-left: 50px;
        }
        #one,#two{
            border:1px solid black;
            height: 200px;
        }
    </style>
相关文章
|
23天前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
159 2
|
4月前
|
人工智能 JavaScript 算法
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
605 0
|
4月前
|
JavaScript UED
用组件懒加载优化Vue应用性能
用组件懒加载优化Vue应用性能
|
3月前
|
JavaScript 安全
在 Vue 中,如何在回调函数中正确使用 this?
在 Vue 中,如何在回调函数中正确使用 this?
131 0
|
3月前
|
人工智能 JSON JavaScript
VTJ.PRO 首发 MasterGo 设计智能识别引擎,秒级生成 Vue 代码
VTJ.PRO发布「AI MasterGo设计稿识别引擎」,成为全球首个支持解析MasterGo原生JSON文件并自动生成Vue组件的AI工具。通过双引擎架构,实现设计到代码全流程自动化,效率提升300%,助力企业降本增效,引领“设计即生产”新时代。
272 1
|
4月前
|
JavaScript 前端开发 开发者
Vue 自定义进度条组件封装及使用方法详解
这是一篇关于自定义进度条组件的使用指南和开发文档。文章详细介绍了如何在Vue项目中引入、注册并使用该组件,包括基础与高级示例。组件支持分段配置(如颜色、文本)、动画效果及超出进度提示等功能。同时提供了完整的代码实现,支持全局注册,并提出了优化建议,如主题支持、响应式设计等,帮助开发者更灵活地集成和定制进度条组件。资源链接已提供,适合前端开发者参考学习。
388 17
|
4月前
|
JavaScript 前端开发 UED
Vue 表情包输入组件实现代码及详细开发流程解析
这是一篇关于 Vue 表情包输入组件的使用方法与封装指南的文章。通过安装依赖、全局注册和局部使用,可以快速集成表情包功能到 Vue 项目中。文章还详细介绍了组件的封装实现、高级配置(如自定义表情列表、主题定制、动画效果和懒加载)以及完整集成示例。开发者可根据需求扩展功能,例如 GIF 搜索或自定义表情上传,提升用户体验。资源链接提供进一步学习材料。
220 1
|
4月前
|
JavaScript API 开发者
Vue框架中常见指令的应用概述。
通过以上的详细解析,你应该已经初窥Vue.js的指令的威力了。它们是Vue声明式编程模型的核心之一,无论是构建简单的静态网站还是复杂的单页面应用,你都会经常用到。记住,尽管Vue提供了大量预定义的指令,你还可以创建自定义指令以满足特定的需求。为你的Vue应用程序加上这些功能增强器,让编码变得更轻松、更愉快吧!
75 1
|
4月前
|
存储 JavaScript 前端开发
如何高效实现 vue 文件批量下载及相关操作技巧
在Vue项目中,实现文件批量下载是常见需求。例如文档管理系统或图片库应用中,用户可能需要一次性下载多个文件。本文介绍了三种技术方案:1) 使用`file-saver`和`jszip`插件在前端打包文件为ZIP并下载;2) 借助后端接口完成文件压缩与传输;3) 使用`StreamSaver`解决大文件下载问题。同时,通过在线教育平台的实例详细说明了前后端的具体实现步骤,帮助开发者根据项目需求选择合适方案。
347 0
|
4月前
|
JavaScript 前端开发 UED
Vue 项目中如何自定义实用的进度条组件
本文介绍了如何使用Vue.js创建一个灵活多样的自定义进度条组件。该组件可接受进度段数据数组作为输入,动态渲染进度段,支持动画效果和内容展示。当进度超出总长时,超出部分将以红色填充。文章详细描述了组件的设计目标、实现步骤(包括props定义、宽度计算、模板渲染、动画处理及超出部分的显示),并提供了使用示例。通过此组件,开发者可根据项目需求灵活展示进度情况,优化用户体验。资源地址:[https://pan.quark.cn/s/35324205c62b](https://pan.quark.cn/s/35324205c62b)。
147 0