title: Vue渲染函数与JSX指南

date: 2024/6/3 下午6:43:53

updated: 2024/6/3 下午6:43:53

categories:

  • 前端开发

    tags:
  • Vue渲染
  • JSX基础
  • 性能优化
  • 组件对比
  • React JSX
  • 大项目
  • 测试策略

第1章:Vue.js入门

Vue.js的历史和背景

Vue.js是一个用于构建用户界面的JavaScript框架,旨在提供简单但功能强大的方法来构建动态Web应用程序。Vue.js最初于2014年由尤雨溪(Evan

You)发布,后来在GitHub上获得了大量关注和支持。Vue.js的设计灵感来自Angular和React,但Vue.js的核心目标是易于学习和使用。

安装和配置Vue开发环境

要开始使用Vue.js,首先需要安装Vue.js的开发环境。可以从Vue.js的官方网站下载和安装最新版本的Vue.js。

在安装Vue.js后,可以通过以下方式在HTML文件中使用Vue.js:

  1. 在HTML文件的<head>部分引入Vue.js:
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>

  1. 在HTML文件的<body>部分创建一个<div>元素,用于挂载Vue.js实例:
<div id="app">
{{ message }}
</div>
  1. 在HTML文件的<script>部分创建一个Vue.js实例,并将其挂载到<div>元素上:
<script>
const app = new Vue({
el: '#app',
data: {
message: 'Hello Vue.js!'
}
})
</script>

Vue组件的基本概念

Vue.js的核心是组件化编程。组件是可重用的、可组合的、自包含的Vue.js实例。组件可以包含自己的数据、计算属性、方法、生命周期钩子函数以及模板。

在Vue.js中,可以使用<template>标签来定义组件的模板。组件的数据可以通过data选项来定义,计算属性可以通过computed

选项来定义,方法可以通过methods选项来定义。

组件可以通过props选项来接收外部数据。props选项是一个数组或对象,包含了组件可以接收的数据项。

Vue实例的生命周期

Vue.js实例和组件在被创建和销毁时会经过一系列的生命周期阶段。这些生命周期阶段可以通过生命周期钩子函数来监听和操作。

在Vue.js中,可以通过以下生命周期钩子函数来监听生命周期事件:

  • beforeCreate:在数据观测和初始化事件或 watches 时调用。
  • created:在实例创建完成后立即调用。
  • beforeMount:在挂载开始之前被调用。
  • mounted:在实例被挂载后调用。
  • beforeUpdate:在数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。
  • updated:在由于数据更改导致的虚拟 DOM 重新渲染和打补丁之后调用。
  • beforeDestroy:在实例销毁之前调用。
  • destroyed:在实例销毁后调用。

第2章:模板语法

插值表达式

插值表达式用于将文本与数据绑定在一起。在Vue.js中,使用双花括号{{ }}包裹的表达式会被当作 JavaScript 表达式进行插值。例如:

<div>{{ message }}</div>

这里的message是Vue实例的一个数据属性。当message的值发生变化时,插值表达式所在的内容也会相应更新。

指令

Vue.js提供了多种指令,用于执行不同的任务。指令是以v-开头的行为动词。

  • v-bind:用于动态绑定一个或多个属性值到表达式。
  • v-model:用于在表单输入和应用状态之间建立双向绑定。
  • v-for:用于基于一个数组渲染一个列表。
  • v-ifv-else-ifv-else:用于条件渲染。
  • v-on:用于监听DOM事件。

例如,使用v-bind指令绑定一个类名:

<div v-bind:class="{ active: isActive, 'text-danger': hasError }"></div>

条件渲染

条件渲染用于根据条件显示或隐藏元素。

  • v-if:条件为真时渲染元素,为假时跳过。
  • v-else-if:当v-if的条件为假,且v-else-if的条件为真时渲染元素。
  • v-else:当v-ifv-else-if的条件都为假时渲染元素。

例如,根据一个布尔值渲染不同的内容:

<p v-if="isTrue">这是真的</p>
<p v-else-if="isFalse">这是假的</p>
<p v-else>条件未知</p>

列表渲染

列表渲染用于遍历数组或对象,并生成列表。

<ul>
<li v-for="(item, index) in items" :key="index">
{{ item.text }}
</li>
</ul>

在这个例子中,v-for指令遍历items数组,为每个元素生成一个li元素。:key是一个特殊的属性,它帮助Vue追踪每个节点的身份,从而重用和重新排序现有元素。

事件处理

事件处理指令用于监听DOM事件,并执行相应的JavaScript代码。

<button v-on:click="handleClick">点击我</button>

在这个例子中,当按钮被点击时,handleClick方法会被调用。Vue.js还提供了其他事件修饰符,如.stop.prevent.capture

.self,用于控制事件冒泡、阻止默认行为等。

第3章:渲染函数简介

什么是渲染函数

渲染函数是一个用于生成 VNode(虚拟 DOM 节点)的函数。它是 Vue.js 中一种底层的 API,用于渲染视图。

渲染函数的作用

渲染函数的主要作用是让我们可以更加灵活地控制 Vue.js 的渲染过程。在某些情况下,使用渲染函数可以更好地优化性能,或者更好地实现复杂的

UI 结构。

如何在 Vue 中使用渲染函数

在 Vue 中使用渲染函数需要使用render函数属性。render函数接收一个createElement函数作为参数,用于创建 VNode。

例如,创建一个简单的渲染函数:

<template>
<div>
<h1>{{ message }}</h1>
</div>
</template> <script>
export default {
data() {
return {
message: 'Hello World!'
}
},
render(createElement) {
return createElement('h1', this.message)
}
}
</script>

在这个例子中,我们使用render函数代替了模板。createElement函数接收三个参数:标签名、数据对象和子节点。在这个例子中,我们只使用了标签名和数据对象。

数据对象可以包含以下属性:

  • class:用于设置元素的类名。
  • style:用于设置元素的内联样式。
  • props:用于设置元素的属性。
  • domProps:用于设置原生 DOM 属性。
  • on:用于设置事件监听器。

第4章:创建渲染函数

基本渲染函数的实现

在 Vue 中,你可以通过定义render函数来自定义组件的渲染行为。以下是一个基本渲染函数的例子:

<template>
<div>
<h1>{{ message }}</h1>
<p>{{ count }}</p>
<button @click="increment">Increment</button>
</div>
</template> <script>
export default {
data() {
return {
message: 'Hello Vue!',
count: 0
}
},
methods: {
increment() {
this.count += 1
}
},
render(createElement) {
return createElement('div', [
createElement('h1', this.message),
createElement('p', this.count),
createElement('button', {
on: { click: this.increment }
}, 'Increment')
])
}
}
</script>

在这个例子中,render函数使用createElement方法来创建 DOM 元素。createElement接受三个参数:标签名、属性对象和一个子节点数组。

使用渲染函数优化性能

渲染函数允许你直接操作虚拟

DOM,因此你可以利用它来优化性能。例如,通过避免不必要的渲染来提高性能。你可以使用shouldComponentUpdate生命周期钩子来控制组件是否应该更新:

export default {
data() {
return {
message: 'Hello Vue!',
count: 0
}
},
methods: {
increment() {
this.count += 1
}
},
render(createElement) {
return createElement('div', [
createElement('h1', this.message),
createElement('p', this.count)
])
},
shouldComponentUpdate(nextProps, nextState) {
// 只有当 message 或 count 发生变化时才更新组件
return nextProps.message !== this.message || nextState.count !== this.count
}
}

函数式渲染与普通渲染的比较

函数式渲染与普通渲染(使用模板)的主要区别在于灵活性和控制能力。函数式渲染提供了更多的控制权,允许你手动管理组件的更新,从而在某些情况下可以实现更高的性能优化。

普通渲染(模板)更加直观和易用,大多数情况下可以满足开发需求。它提供了数据绑定和组件化的便利,使得开发更加快速。

函数式渲染(render函数)适合于:

  • 需要深度定制渲染逻辑的情况。
  • 需要手动优化渲染性能的情况。
  • 需要从底层的虚拟 DOM 操作中获益的情况。

普通渲染(模板)适合于:

  • 大多数标准的组件开发。
  • 当渲染逻辑相对简单时。
  • 当性能不是主要考虑因素时。

在选择函数式渲染还是普通渲染时,需要根据具体的需求和场景来决定。

第5章:渲染函数与组件

如何在组件中使用渲染函数

在 Vue 组件中使用渲染函数,你需要在组件的选项中定义一个render函数。这个函数将替代模板,直接返回虚拟 DOM

结构。以下是如何在组件中使用渲染函数的示例:

export default {
data() {
return {
message: 'Hello Vue!',
count: 0
}
},
methods: {
increment() {
this.count += 1
}
},
render(createElement) {
return createElement('div', [
createElement('h1', this.message),
createElement('p', this.count),
createElement('button', {
on: { click: this.increment }
}, 'Increment')
])
}
}

在这个例子中,render函数接收一个createElement方法作为参数,这个方法用于创建虚拟 DOM 元素。createElement

方法的第一个参数是标签名,第二个参数是属性对象,第三个参数是子元素数组。

组件内的渲染函数

组件内的渲染函数允许你完全控制组件的渲染逻辑。你可以根据组件的状态和属性来动态生成虚拟 DOM。这种方式提供了极高的灵活性,但同时也要求开发者对

Vue 的虚拟 DOM 系统有深入的理解。

渲染函数与虚拟DOM

渲染函数与虚拟 DOM 紧密相关。在 Vue 中,渲染函数返回的是虚拟 DOM 节点,这些节点是由createElement方法创建的。虚拟 DOM

是一种编程概念,它允许你在内存中以 JavaScript 对象的形式表示 DOM 结构,而不是直接操作真实的 DOM。

使用虚拟 DOM 的好处包括:

  1. 性能优化:通过比较新旧虚拟 DOM 树的差异,Vue 可以最小化实际 DOM 操作,从而提高性能。
  2. 跨平台能力:虚拟 DOM 可以被渲染到不同的环境中,如浏览器、移动端或桌面应用,甚至可以用于服务器端渲染。
  3. 开发效率:虚拟 DOM 允许开发者以声明式的方式编写应用,而不是直接操作 DOM,这通常使得代码更易于理解和维护。

在渲染函数中,你可以直接操作这些虚拟 DOM 节点,创建、修改或删除它们,而不必担心直接操作真实 DOM 带来的性能开销。

第6章:JSX基础

JSX的介绍

JSX 是 JavaScript 的一种语法扩展,它允许在 JavaScript 代码中编写 HTML 样式的标记。JSX 的主要目的是使组件的开发更加简单和直观。

JSX 的基本语法如下:

const element = <h1>Hello, world!</h1>;

上面的代码创建了一个h1标签,并将其渲染为一个 React 元素。

JSX与HTML的比较

JSX 与 HTML 在语法上有一些区别,以下是它们之间的主要差异:

  1. 标签名:JSX 标签名使用驼峰命名法,例如<div>在 JSX 中写作<Div>
  2. 属性:JSX 属性使用驼峰命名法,例如class在 JSX 中写作className
  3. 自闭合标签:JSX 中的所有标签都必须有一个闭合标签,即使它们在 HTML 中可以省略闭合标签,例如<br>在 JSX

    中写作<br />
  4. 子元素:JSX 中的子元素可以是任意类型的 JavaScript 表达式,包括数组、函数、变量等。

第7章:JSX语法

JSX标签与属性

JSX 标签在语法上类似于 HTML 标签,但它们是 React 组件的语法糖。在 JSX 中,你可以使用表达式来创建动态内容,这些表达式会在渲染时求值。

示例:

const message = 'Hello, world!';

function getGreeting() {
return 'Hello';
} const element = (
<h1>
{getGreeting()}, {message}
</h1>
);

在这个例子中,getGreeting()是一个函数调用,message是一个变量,它们都包含在{}内,这表示它们将在渲染时求值。

JSX表达式

JSX 表达式可以是任何有效的 JavaScript 表达式。它们可以包含运算符、函数调用、变量等。JSX 表达式会在组件渲染时求值。

示例:

const count = 42;
const element = <h1>The answer to life, the universe, and everything is {count}</h1>;

在这个例子中,count是一个变量,它的值将会在渲染时插入到h1标签中。

JSX与Vue数据绑定

Vue 中的数据绑定是通过v-modelv-bindv-ifv-for等指令实现的。在 JSX 中,你可以使用类似的语法来实现相同的功能。

示例:

const App = {
data() {
return {
message: 'Hello, world!'
};
},
render(h) {
return (
<div>
<h1>{this.message}</h1>
<input type="text" value={this.message} onInput={(event) => { this.message = event.target.value; }} />
</div>
);
}
};

在这个 Vue JSX 示例中,我们使用了this.message来访问 Vue 实例的数据。value={this.message}相当于 Vue 中的v-model

,它建立了输入框和数据之间的双向绑定。onInput属性是一个事件处理器,它监听输入框的输入事件,并更新this.message的值。

AD:漫画首页

需要注意的是,在 Vue 中使用 JSX 时,你需要确保render函数接收到了h函数作为参数,因为h函数是创建虚拟 DOM 元素的关键。同时,Vue

的数据绑定和事件处理在 JSX 中遵循 React 的语法习惯,但背后的机制是由 Vue 的响应式系统支持的。

第8章:在组件中使用JSX

JSX组件定义

在 JSX 中,你可以使用函数或类来定义组件。这些组件可以接收参数(称为 props),并可以渲染 JSX 元素。

示例:

function Welcome(props) {
return <h1>Hello, {props.name}!</h1>;
} const element = <Welcome name="Sara" />;

在这个例子中,我们定义了一个名为Welcome的函数组件,它接收一个名为props的参数,并渲染一个带有文本的h1标签。Welcome

组件的使用方式类似于 HTML 标签,我们可以使用<Welcome name="Sara" />来渲染该组件。

JSX与组件状态

在 JSX 中,你可以使用类中的state来管理组件的状态。state是一个对象,它包含了组件的数据。你可以在构造函数中初始化state

,并在其他地方修改它。

示例:

class Timer extends React.Component {
constructor(props) {
super(props);
this.state = { seconds: 0 };
} tick() {
this.setState(state => ({
seconds: state.seconds + 1
}));
} componentDidMount() {
this.interval = setInterval(() => this.tick(), 1000);
} componentWillUnmount() {
clearInterval(this.interval);
} render() {
return <div>Seconds: {this.state.seconds}</div>;
}
} const element = <Timer />;

在这个例子中,我们定义了一个名为Timer的类组件。Timer组件有一个名为seconds的状态,它是一个计数器,每秒递增

1。componentDidMount生命周期方法用于设置计时器,componentWillUnmount生命周期方法用于清除计时器。render方法用于渲染当前计数器的值。

JSX与事件处理

在 JSX 中,你可以使用类中的onEvent属性来处理事件。这些属性可以接收一个函数,当事件发生时,该函数将会被调用。

示例:

class Toggle extends React.Component {
constructor(props) {
super(props);
this.state = { isToggleOn: true };
} handleClick() {
this.setState(state => ({
isToggleOn: !state.isToggleOn
}));
} render() {
return (
<button onClick={() => this.handleClick()}>
{this.state.isToggleOn ? 'ON' : 'OFF'}
</button>
);
}
} const element = <Toggle />;

在这个例子中,我们定义了一个名为Toggle的类组件。Toggle组件有一个名为isToggleOn

的状态,它是一个布尔值,表示按钮是否处于激活状态。handleClick方法用于切换isToggleOn的值。render

方法用于渲染一个按钮,该按钮的文本取决于isToggleOn的值。当按钮被点击时,handleClick方法将会被调用。

AD:专业搜索引擎

第9章:自定义渲染函数与JSX

创建自定义渲染函数

在 React 中,除了使用类来定义组件,还可以使用函数来替代,这种函数被称为渲染函数。它接收 props 和 state 作为参数,并返回一个

React 元素。函数组件没有生命周期方法,但可以使用useRefuseState等 hooks 来实现更复杂的功能。

function CustomComponent({ name }) {
return (
<div>
<h1>Hello, {name}!</h1>
<p>This is a custom component.</p>
</div>
);
} const customElement = <CustomComponent name="John" />;

使用JSX进行复杂渲染

JSX 可以嵌套和包含复杂的结构,可以用来渲染列表、条件渲染、循环等。例如,渲染一个包含多个元素的列表:

function UserList(users) {
return (
<ul>
{users.map(user => (
<li key={user.id}>
{user.name} - {user.email}
</li>
))}
</ul>
);
} const userList = <UserList users={[
{ id: 1, name: 'John', email: 'john@example.com' },
{ id: 2, name: 'Jane', email: 'jane@example.com' }
]} />;

渲染函数与JSX的组合使用

在函数组件中,你可以直接写 JSX 代码,也可以在函数内部返回 JSX。这两种方式可以混合使用,以实现更灵活的组件设计。

function DisplayData(data) {
return (
<div>
{data && (
<div>
Name: {data.name}, Age: {data.age}
{data.items && (
<ul>
{data.items.map(item => <li key={item.id}>{item.name}</li>)}
</ul>
)}
</div>
)}
</div>
);
} const displayElement = <DisplayData data={{ name: 'Alice', age: 30, items: [{ id: 1, name: 'Item1' }] }} />;

在这个例子中,DisplayData是一个函数组件,它接收一个dataprop。根据data

是否存在及其结构,它动态地渲染不同的内容,包括姓名、年龄以及可能的子项列表。AD:首页 | 一个覆盖广泛主题工具的高效在线平台

第10章:性能优化

渲染函数与JSX的性能考量

当使用渲染函数和JSX时,性能优化是一个重要的考虑因素。React 组件的性能主要受到以下因素的影响:

  1. 组件的复杂性:组件层次越深,渲染和更新时的工作量越大。
  2. 组件的大小:大组件会占用更多内存,影响渲染速度。
  3. 渲染频率:频繁渲染会占用CPU资源,影响性能。
  4. DOM操作:减少DOM操作可以提高性能。

优化技巧与策略

为了提高渲染函数和JSX的性能,可以采取以下优化措施:

  1. 使用懒加载:对于不立即需要的组件,可以使用动态导入(Dynamic Imports)或懒加载(Lazy Loading)技术。
  2. 复用组件:创建可复用的组件可以减少代码量和重复渲染的工作。
  3. 优化组件结构:减少不必要的组件层级,简化组件结构。
  4. 使用虚拟化:对于长列表等大量元素,使用虚拟滚动(Virtual Scroll)可以大幅提升性能。
  5. 剔除不可见内容:使用React.PureComponentReact.memo来避免不必要的渲染,或者使用useCallbackuseMemo

    来优化函数和变量的传递。
  6. 合理使用 state 和 props:避免在渲染函数中直接修改 state 或 props,而是在组件内部使用setState或状态提升。
  7. 优化事件处理:减少事件监听器的数量,使用useEvent等钩子来优化事件处理。
  8. 使用生产版本的库文件:开发时使用的是库的开发版本,它包含了警告和完整的错误检查。在生产环境中,应该使用压缩和优化过的库版本。

性能工具的使用

为了诊断和优化性能,React 提供了一些内置的工具和外部库:

  1. React DevTools:React 的官方调试工具,可以帮助你监控组件的渲染和状态变化。
  2. performanceAPI:浏览器提供的API,可以用来分析和获取页面性能信息。
  3. React Profiler:React 提供的性能分析工具,可以查看组件的渲染时间和内存占用。
  4. Craco(Config React App Configuration):一个配置工具,可以帮助你定制 Create React App 的配置,包括性能配置。
  5. Webpack Bundle Analyzer:一个可视化工具,可以帮助你分析打包后的文件大小和依赖关系。

第11章:实战案例

构建一个使用渲染函数与JSX的待办事项应用

项目概述

我们将构建一个简单的待办事项应用,用户可以添加、删除和标记待办事项为完成。这个应用将展示如何使用渲染函数和JSX来创建动态和交互式的用户界面。

技术栈

  • React
  • React Hooks(如 useState, useEffect)
  • CSS 或 styled-components 用于样式

步骤

  1. 设置项目

    • 使用 Create React App 创建一个新的 React 项目。
    • 安装必要的依赖,如 styled-components(如果选择使用)。
  2. 创建组件

    • 创建一个TodoList组件,用于显示所有的待办事项。
    • 创建一个TodoItem组件,用于显示单个待办事项的详细信息。
    • 创建一个AddTodo组件,用于添加新的待办事项。
  3. 实现功能

    • TodoList组件中,使用useState来管理待办事项的状态。
    • TodoItem组件中,使用props来接收待办事项的数据,并实现删除和标记完成的功能。
    • AddTodo组件中,使用表单和事件处理来添加新的待办事项。
  4. 样式设计

    • 使用 CSS 或 styled-components 来设计应用的外观和感觉。
  5. 测试和优化

    • 测试应用的各个功能,确保没有错误。
    • 优化性能,例如通过使用React.memo来避免不必要的渲染。

代码示例

import React, { useState } from 'react';

function TodoList() {
const [todos, setTodos] = useState([]); const addTodo = (text) => {
setTodos([...todos, { text, completed: false }]);
}; const toggleTodo = (index) => {
const newTodos = [...todos];
newTodos[index].completed = !newTodos[index].completed;
setTodos(newTodos);
}; const removeTodo = (index) => {
const newTodos = [...todos];
newTodos.splice(index, 1);
setTodos(newTodos);
}; return (
<div>
<AddTodo onAdd={addTodo} />
{todos.map((todo, index) => (
<TodoItem
key={index}
text={todo.text}
completed={todo.completed}
onToggle={() => toggleTodo(index)}
onRemove={() => removeTodo(index)}
/>
))}
</div>
);
} function TodoItem({ text, completed, onToggle, onRemove }) {
return (
<div>
<input type="checkbox" checked={completed} onChange={onToggle} />
<span style={{ textDecoration: completed ? 'line-through' : 'none' }}>{text}</span>
<button onClick={onRemove}>删除</button>
</div>
);
} function AddTodo({ onAdd }) {
const [text, setText] = useState(''); const handleSubmit = (event) => {
event.preventDefault();
if (text.trim()) {
onAdd(text);
setText('');
}
}; return (
<form onSubmit={handleSubmit}>
<input type="text" value={text} onChange={(e) => setText(e.target.value)} />
<button type="submit">添加</button>
</form>
);
} export default TodoList;

渲染函数与JSX在大型项目中的应用

在大型项目中,渲染函数和JSX的应用更为复杂,需要考虑以下几个方面:

  1. 组件拆分:将大型组件拆分为更小的、可复用的组件,以提高代码的可维护性和可读性。
  2. 状态管理:使用 Redux 或 Context API 等状态管理工具来管理应用的状态,确保状态的一致性和可预测性。
  3. 性能优化:使用React.memo,useCallback,useMemo等优化技术来减少不必要的渲染。
  4. 代码分割:使用动态导入(Dynamic Imports)和 React 的懒加载(Lazy Loading)功能来优化应用的加载时间。
  5. 测试:编写单元测试和集成测试来确保代码的质量和稳定性。

Vue渲染函数与JSX指南的更多相关文章

  1. Vue.js 渲染函数, JSX(未掌握,未学完)

    渲染函数 , JSX(没完成学习) 基础: 实例属性:vm.$slots default 属性包括了所有没有被包含在具名插槽中的节点. 渲染函数: render: function(createEle ...

  2. Vue躬行记(7)——渲染函数和JSX

    除了可通过模板创建HTML之外,Vue还提供了渲染函数和JSX,前者的编码自由度很高,后者对于开发过React的人来说会很熟悉.注意,Vue的模板最终都会被编译成渲染函数. 一.渲染函数 虽然在大部分 ...

  3. Vue渲染函数

    前面的话 Vue 推荐在绝大多数情况下使用 template 来创建HTML.然而在一些场景中,真的需要 JavaScript 的完全编程的能力,这就是 render 函数,它比 template 更 ...

  4. 从虚拟dom了解vue渲染函数

    vue渲染函数就是render函数,他会返回一个VNode,VNode是一个js对象,是dom的映射 vue在介绍渲染函数那个章节看的不是很懂,所以想要彻底的理解渲染函数,首先需要了解vue的虚拟do ...

  5. vue 渲染函数&jsx

    前端更新状态,更新视图,所以性能问题主要由Dom操作引起的,而js解析编译dom渲染就要快得多,  所把要js和html混写. vue 的动态js操作 html  方法:reader函数: vue  ...

  6. vue渲染函数&JSX

    Vue推荐在绝大多数情况下使用template来创建你的HTML.然而在一些场景中,你真的需要JavaScript的完全编程能力,这时你可以使用render函数,它比template跟接近编译器. 虚 ...

  7. Render渲染函数和JSX

    1.Render函数:render是用来替换temlate的,需要更灵活的模板的写法的时候,用render. 官网API地址:https://cn.vuejs.org/v2/guide/render- ...

  8. Vue 渲染函数

    Vue 推荐在绝大多数情况下使用模板来创建你的 HTML.然而在一些场景中,你真的需要 JavaScript 的完全编程的能力.这时你可以用渲染函数,它比模板更接近编译器. 一 项目结构 二 App组 ...

  9. vue render函数使用jsx语法 可以使用v-model语法 vuex实现数据持久化

    render函数使用jsx语法: 安装插件  transform-vue-jsx 可以使用v-model语法安装插件 jsx-v-model .babelrc文件配置: vuex实现数据持久化 安装插 ...

  10. Vue之render渲染函数和JSX的应用

    一.模板缺陷 模板的最大特点是扩展难度大,不易扩展.可能会造成逻辑冗余 <Level :type="1">哈哈</Level> <Level :typ ...

随机推荐

  1. springboot 整合webservice 相关说明

    1.环境依赖 jdk8, springboot 2.3.12.release,cxf版本需要根据springboot版本修改,方法:查看springboot版本的发布日期,然后根据日期找相近的两个版本 ...

  2. ST语言

    CODESYS平台的ST语言笔记 前言: 基于汇川plc软件,底层是CODESYS平台.这回ST语言正儿八经要用 所以要学,做笔记是为了梳理加深基础要点印象,顺便分享交流学习.codesys平台包括汇 ...

  3. Oracle sql 月份的加减以及差值

    Oracle sql 月份的加减以及差值 差值 使用months_between,输出的是两个日期的差值 select months_between(TO_DATE('2022-05-31','yyy ...

  4. 力扣904(Java)-水果成篮(中等)

    题目: 你正在探访一家农场,农场从左到右种植了一排果树.这些树用一个整数数组 fruits 表示,其中 fruits[i] 是第 i 棵树上的水果 种类 . 你想要尽可能多地收集水果.然而,农场的主人 ...

  5. 讲座回顾丨基于 OpenYurt 和 EdgeX 的云边端协同新可能

    简介: 为帮助参赛选手更好地了解并运用相关技术,本次大赛将在 7 月至 9 月持续开展 3 轮技术培训,涵盖初.中.高不同层级,帮助开发者系统学习智能边缘系统知识.我们邀请到来自英特尔.VMware. ...

  6. Snowflake核心技术解读系列——架构设计

    ​简介:Snowflake取得了巨大的商业成功,技术是如何支撑起它的千亿美元市值呢?它技术强在哪?本文为大家倾情解读Snowflake的核心技术原理. 背景:2020年9月16日,Snowflake成 ...

  7. 探究 Java 应用的启动速度优化

    简介: Java 的执行效率非常高,约为最快的C语言的一半.这在主流的编程语言中,仅次于C.Rust 和 C++.但在高性能的背后,Java 的启动性能差也令人印象深刻,大家印象中的 Java 笨重缓 ...

  8. [FE] Quasar 性能优化: 减小 vendor.js 尺寸

    默认情况下,出于性能和缓存的原因,Quasar 所有来自 node_modules 的东西都会被注入到 vendor 中. 但是,如果希望从这个 vendor.js 中添加或删除某些内容,可以如下这样 ...

  9. RT-Thread线程管理

    一.概述 这是我学习RT-Thread线程管理过程中记录的笔记,方便自己查看,仅供参考,有什么不对的地方忘各位大佬指出.想要了解更详细的内容,请浏览官方文档"线程管理" 如下图所示 ...

  10. 原生js写悬浮广告效果

    网上抄的,改成vue写法失败,下一篇是自己写的vue版本的 <html> <head> <meta http-equiv="Content-Type" ...