Vue | Vue.js 基础 模版语法(一)

简介: Vue | Vue.js 基础 模版语法(一)

一、Mustache语法

模版语法

React的开发模式:


React使用jsx 所以对应的代码都是编写类似于js的一种语法;


之后通过Babel将jsx编译成React.creatElement函数调用


Vue也支持jsx的开发模式


大多情况下,使用基于HTML的模版语法;


在模版中 允许开发者以声明式的方式将DOM和底层组件实例的数据 绑定在一起


在底层的实现中,Vue将模版编译成虚拟DOM渲染函数,

二、Mustache双大括号语法(掌握)

如果我们希望把数据显示到模版中,使用最多的语法是"Mustache语法(双大括号)的文本插值"


data返回的对象 是有添加到Vue的响应式系统中


当data中的数据发生变化时 对应的内容也会发生更新


当然 Mustache中不仅仅可以是data中的属性 也可以是一个 JavaScript的表达式

JavaScript
<div id="app">
    <!-- 1 基本使用 -->
    <h2>{{message}}</h2>
    <h2>当前计数:{{counter}}</h2>
    <!-- 2 表达式 -->
    <h2>计数双倍:{{ counter * 2 }}</h2>
    <h2>展示信息:{{ infos.split(" ") }}</h2>
    <!-- 3 三元运算符 -->
    <h2>{{ age>=18? "成年人":"未成年人" }}</h2>
    <!-- 4 调用methods中的函数 -->
    <h2>{{ formateDate(time) }}</h2>
    <!-- 5 注意:这里不能定义语句! if语句也不支持 -->
</div>
<script src="../lib/vue.js"></script>
<script>
    // 创建app
    const app = Vue.createApp({
        data: function () {
            return {
                message: "Hello Vue!",
                counter: 100,
                infos: "my name is xiong",
                age: 22,
                time: 123
            }
        },
        methods: {
            formateDate(data) {
                return "2020-10-10 " + data
            }
        }
    })
    // 挂载app
    app.mount('#app')

三、常见的基本指令

v-once指令(了解)

v-once用于指定元素或组件只能渲染一次


当数据发生变化时 元素或组件以及其所有子元素将视为静态内容 并且跳过


该指令可以用于性能优化

HTML
<div id="app">
        <!-- 指令:v-once =>只渲染一次 -->
        <h2 v-once>{{ message }}
            <span>数字:{{counter}}</span>
        </h2>
        <h1>{{ message }}</h1>
        <button @click="changeMessage">改变message</button>
    </div>
JavaScript
<script src="../lib/vue.js"></script>
    <script>
        // 创建app
        const app = Vue.createApp({
            data: function () {
                return {
                    message: "Hello Vue!",
                    counter: 100
                }
            },
            methods: {
                changeMessage() {
                    this.message = "你好,Vue!"
                    this.counter += 100
                    console.log(this.message, this.counter)
                }
            }
        })
        // 挂载app
        app.mount('#app')

v-text指令

用于更新元素textContent:

JavaScript

 <h2 v-text="message">aaaa</h2> //此时拿到message 会把'aaaa'覆盖掉


V-html指令

默认情况下,展示的内容本身是html的,那么vue不会对他进行特殊的解析


如果我们希望这个内容被Vue解析出来,可以使用v-html来展示

HTML
<div id="app">
        <h2>{{content}}</h2>
        <h2 v-html="content"></h2>
    </div>
JavaScript
<script src="../lib/vue.js"></script>
    <script>
        // 创建app
        const app = Vue.createApp({
            data: function () {
                return {
                    content: '<span style="color:red;font-size:30px;">哈哈哈哈</span>'
                }
            },
        })
        // 挂载app
        app.mount('#app')
    </script>

V-pre指令

v-pre用于跳过元素和它的子元素的编译过程,显示原始的Mustache标签:


跳过不需要编译的节点,加快编 译的速度

HTML
<div id="app">
        <h2>{{message}}</h2>
        <p>当前计数{{counter}}</p>
        <!-- 当加了v-pre之后  将不会编译 -->
        <p v-pre>{{}}</p>
    </div>
JavaScript
<script>
        // 创建app
        const app = Vue.createApp({
            data: function () {
                return {
                    message: "Hello Vue!",
                    counter: 0
                }
            },
        })
        // 挂载app
        app.mount('#app')
    </script>

v-cloak  cloak=>斗篷的意思

这个指令保持在元素上直到关联组件实例结束编译


它必须和css一起使用,这个指令可以隐藏未编译的Mustache标签直到组件实例准备完毕

CSS
<style>
        [v-cloak] {
            display: none;
        }
    </style>
HTML
<div id="app">
        <h2 v-cloak>{{message}}</h2>
    </div>
JavaScript
<script src="../lib/vue.js"></script>
<script>
    setTimeout(() => {
        // 创建app
        const app = Vue.createApp({
            data: function () {
                return {
                    message: "Hello Vue!"
                }
            },
        })
        // 挂载app
        app.mount('#app')
    }, 3000);
</script>

v-memo(新)

指定数据发生改变,才改变其他数据,其他数据发生改变,不会改变

HTML
<div id="app">
        <div v-memo="[name]">
            <h2>姓名:{{name}}</h2>
            <h2>年龄:{{age}}</h2>
            <h2>身高:{{height}}</h2>
            <!-- 需求 只有name发生改变 其他东西才改变  -->
        </div>
        <button @click="updataInfo">改变信息</button>
    </div>
JavaScript
<script src="../lib/vue.js"></script>
    <script>
        // 创建app
        const app = Vue.createApp({
            data: function () {
                return {
                    name: "xiong",
                    age: 18,
                    height: 1.88
                }
            },
            methods: {
                updataInfo() {
                    this.name = "kobe"
                    // this.age = 20
                }
            }
        })
        // 挂载app
        app.mount('#app')


相关文章
|
4天前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
58 1
|
1月前
|
JavaScript 前端开发 开发者
JavaScript中的箭头函数:简洁的语法与this绑定
JavaScript中的箭头函数:简洁的语法与this绑定
305 184
|
3月前
|
人工智能 JavaScript 算法
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
516 0
|
3月前
|
JavaScript UED
用组件懒加载优化Vue应用性能
用组件懒加载优化Vue应用性能
|
2月前
|
JavaScript 安全
在 Vue 中,如何在回调函数中正确使用 this?
在 Vue 中,如何在回调函数中正确使用 this?
96 0
|
2月前
|
人工智能 JSON JavaScript
VTJ.PRO 首发 MasterGo 设计智能识别引擎,秒级生成 Vue 代码
VTJ.PRO发布「AI MasterGo设计稿识别引擎」,成为全球首个支持解析MasterGo原生JSON文件并自动生成Vue组件的AI工具。通过双引擎架构,实现设计到代码全流程自动化,效率提升300%,助力企业降本增效,引领“设计即生产”新时代。
221 1
|
3月前
|
JavaScript 前端开发 开发者
Vue 自定义进度条组件封装及使用方法详解
这是一篇关于自定义进度条组件的使用指南和开发文档。文章详细介绍了如何在Vue项目中引入、注册并使用该组件,包括基础与高级示例。组件支持分段配置(如颜色、文本)、动画效果及超出进度提示等功能。同时提供了完整的代码实现,支持全局注册,并提出了优化建议,如主题支持、响应式设计等,帮助开发者更灵活地集成和定制进度条组件。资源链接已提供,适合前端开发者参考学习。
357 17
|
3月前
|
JavaScript 前端开发 UED
Vue 表情包输入组件实现代码及详细开发流程解析
这是一篇关于 Vue 表情包输入组件的使用方法与封装指南的文章。通过安装依赖、全局注册和局部使用,可以快速集成表情包功能到 Vue 项目中。文章还详细介绍了组件的封装实现、高级配置(如自定义表情列表、主题定制、动画效果和懒加载)以及完整集成示例。开发者可根据需求扩展功能,例如 GIF 搜索或自定义表情上传,提升用户体验。资源链接提供进一步学习材料。
198 1
|
3月前
|
存储 JavaScript 前端开发
如何高效实现 vue 文件批量下载及相关操作技巧
在Vue项目中,实现文件批量下载是常见需求。例如文档管理系统或图片库应用中,用户可能需要一次性下载多个文件。本文介绍了三种技术方案:1) 使用`file-saver`和`jszip`插件在前端打包文件为ZIP并下载;2) 借助后端接口完成文件压缩与传输;3) 使用`StreamSaver`解决大文件下载问题。同时,通过在线教育平台的实例详细说明了前后端的具体实现步骤,帮助开发者根据项目需求选择合适方案。
271 0
|
3月前
|
JavaScript 前端开发 UED
Vue 项目中如何自定义实用的进度条组件
本文介绍了如何使用Vue.js创建一个灵活多样的自定义进度条组件。该组件可接受进度段数据数组作为输入,动态渲染进度段,支持动画效果和内容展示。当进度超出总长时,超出部分将以红色填充。文章详细描述了组件的设计目标、实现步骤(包括props定义、宽度计算、模板渲染、动画处理及超出部分的显示),并提供了使用示例。通过此组件,开发者可根据项目需求灵活展示进度情况,优化用户体验。资源地址:[https://pan.quark.cn/s/35324205c62b](https://pan.quark.cn/s/35324205c62b)。
125 0