vue学习第17天,渲染 JSX 插件

Vue渲染函数深入解析
本文详细介绍了Vue.js中渲染函数的使用技巧,包括如何利用渲染函数替代模板语法,实现更灵活的DOM操作。涵盖使用if-else语句、map方法、自定义v-model行为等内容,并解释了如何通过渲染函数处理事件及作用域插槽。

1,每个虚拟DOM VNode 都是唯一的 可以多次使用工厂函数创建多个组件的实例

2,在渲染函数中 有些语法可以使用 javascript 不用 再使用 vue 的 API 

3,在渲染函数中 使用 if else 而不是 v-if

4,在渲染函数中 使用 map  而不是 v-for

5,在渲染函数中 重写 v-model

6,提供了在渲染函数中 被 on 的时候 事件和按键的修饰符的前缀

7,在渲染函数中 通过 this.$slots() 获取VNode 中的静态内容

8,在渲染函数中 通过 this.$scopedSlots() 获取作用域插槽 可以往里面传数据

9,在渲染函数中 可以通过设置 scopeSlots 来设置 作用域插槽

10,通过 JSX 语法 babel 插件 来简化代码 h 是 createElement 的别名

11,children 能得到所有的子元素 slots().default 得到的是没有具名的插槽的子元素 需要通过插槽的 name 来获取具名插槽的元素

12,Vue 模板被编译成了 渲染函数 render 函数

13,插件会添加全局范围的功能 全局的资源 组件选项 vue实例方法等 或者是一些功能集成的一个库

14,Vue.use 会阻止多次注册同一个插件 官方的插件大多都会调用这个方法 自己写的插件 要记得也调用这个方法

学习 Vue 是一个循序渐进的过程,建议从基础开始,逐步掌握其核心概念和高级特性。以下是学习 Vue 的分步指南: --- ### 第一步:了解 Vue 的基本概念 Vue 是一个用于构建用户界面的渐进式 JavaScript 框架。它的核心只关注视图层,易于上手,并且可以与其他库或项目集成。 #### 学习内容: - 什么是 Vue? - Vue 的特点:响应式数据绑定、组件化、指令、模板语法等。 - Vue 的生态系统(如 Vue Router、Vuex、Vue CLI 等)。 --- ### 第二步:搭建开发环境 1. 安装 Node.js 和 npm(Node.js 自带 npm)。 2. 使用 Vue CLI 创建项目: ```bash npm install -g @vue/cli vue create my-project cd my-project npm run serve ``` --- ### 第三步:掌握 Vue 基础语法 #### 1. 模板语法:插值、指令、事件绑定等。 ```vue <template> <div> <h1>{{ message }}</h1> <button @click="changeMessage">Change Message</button> </div> </template> <script> export default { data() { return { message: 'Hello Vue!' } }, methods: { changeMessage() { this.message = 'Message changed!'; } } } </script> ``` #### 2. 条件渲染与列表渲染: ```vue <template> <div> <p v-if="isVisible">This is visible</p> <ul> <li v-for="item in items" :key="item.id">{{ item.name }}</li> </ul> </div> </template> <script> export default { data() { return { isVisible: true, items: [ { id: 1, name: 'Apple' }, { id: 2, name: 'Banana' }, { id: 3, name: 'Orange' } ] } } } </script> ``` --- ### 第四步:理解 Vue 组件系统 组件是 Vue 的核心概念之一,它允许你将 UI 拆分为独立、可复用的部分。 #### 示例:父子组件通信 ```vue <!-- ParentComponent.vue --> <template> <div> <ChildComponent :message="parentMessage" @child-event="handleChildEvent" /> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, data() { return { parentMessage: 'Hello from parent' }; }, methods: { handleChildEvent(payload) { console.log('Received from child:', payload); } } } </script> ``` ```vue <!-- ChildComponent.vue --> <template> <div> <p>{{ message }}</p> <button @click="sendToParent">Send to Parent</button> </div> </template> <script> export default { props: ['message'], methods: { sendToParent() { this.$emit('child-event', 'Hello parent!'); } } } </script> ``` --- ### 第五步:学习 Vue 的响应式系统(Vue 3 Composition API) 在 Vue 3 中,推荐使用 Composition API 来组织逻辑。 ```vue <template> <div> <p>Count: {{ count }}</p> <button @click="increment">Increment</button> </div> </template> <script setup> import { ref } from 'vue'; const count = ref(0); function increment() { count.value++; } </script> ``` --- ### 第六步:使用 Vue Router 实现单页应用导航 安装 Vue Router: ```bash npm install vue-router@4 ``` ```js // router/index.js import { createRouter, createWebHistory } from 'vue-router'; import Home from '../views/Home.vue'; import About from '../views/About.vue'; const routes = [ { path: '/', component: Home }, { path: '/about', component: About } ]; const router = createRouter({ history: createWebHistory(), routes }); export default router; ``` ```js // main.js import { createApp } from 'vue'; import App from './App.vue'; import router from './router'; createApp(App).use(router).mount('#app'); ``` ```vue <!-- App.vue --> <template> <nav> <router-link to="/">Home</router-link> <router-link to="/about">About</router-link> </nav> <router-view /> </template> ``` --- ### 第七步:使用 Vuex 进行状态管理 Vuex 是 Vue 的状态管理模式和库,用于管理全局状态。 ```bash npm install vuex@next ``` ```js // store/index.js import { createStore } from 'vuex'; export default createStore({ state: { count: 0 }, mutations: { increment(state) { state.count++; } }, actions: { increment({ commit }) { commit('increment'); } }, getters: { count: state => state.count } }); ``` ```js // main.js import store from './store'; createApp(App).use(store).mount('#app'); ``` ```vue <!-- Component.vue --> <template> <div> <p>Count: {{ $store.state.count }}</p> <button @click="$store.dispatch('increment')">Increment</button> </div> </template> ``` --- ### 第八步:使用 Vue CLI 或 Vite 构建项目 - Vue CLI 是 Vue 官方的项目脚手架工具。 - Vite 是一个更快的现代前端构建工具,推荐用于 Vue 3 项目。 --- ### 第九步:部署你的 Vue 应用 构建生产版本: ```bash npm run build ``` 将生成的 `dist/` 文件夹上传到服务器即可部署。 --- ### 第十步:深入学习 Vue 高级特性 - 自定义指令 - 插件开发 - 渲染函数与 JSX - 异步组件 - 单元测试(使用 Jest / Vue Test Utils) - 性能优化技巧 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值