手机网站图片做多大谷歌优化技术

张小明 2025/12/26 14:12:06
手机网站图片做多大,谷歌优化技术,做泵阀到哪个网站好,做网站需要什么权限Vue中选项式和组合式API的学习 组合式 API (Composition API)选项式 API (Options API)export default 的作用datacreatedmethods 两种风格对比在其他 Vue 组件中导入和使用 export default 定义的组件 有几种方式基本导入和使用调用子组件的方法完整的父子组件通信示例关键点总…Vue中选项式和组合式API的学习组合式 API (Composition API)选项式 API (Options API)export default 的作用datacreatedmethods两种风格对比在其他 Vue 组件中导入和使用 export default 定义的组件 有几种方式基本导入和使用调用子组件的方法完整的父子组件通信示例关键点总结Vue 的组件可以按两种不同的风格书写 组合式 API和选项式 API 。组合式 API (Composition API)通过组合式 API可以使用导入的 API 函数来描述组件逻辑。在单文件组件中组合式 API 通常会与script setupimport{ref,onMounted}fromvue// 响应式状态constcountref(0)// 用来修改状态、触发更新的函数functionincrement(){count.value}// 生命周期钩子onMounted((){console.log(The initial count is${count.value}.)})/scripttemplatebutton clickincrementCount is:{{count}}/button/template选项式 API (Options API)使用选项式 API可以用包含多个选项的对象来描述组件的逻辑例如data、methods和mounted。选项所定义的属性都会暴露在函数内部的this上它会指向当前的组件实例。scriptexportdefault{name:,//name 属性标识组件名称components:{//使用 components 选项注册子组件}// data() 返回的属性将会成为响应式的状态// 并且暴露在 this 上data(){return{// 所有响应式数据在这里定义count:0};},// methods 是一些用来更改状态与触发更新的函数// 它们可以在模板中作为事件处理器绑定methods:{// 所有组件方法在这里定义},// 生命周期钩子会在组件生命周期的各个不同阶段被调用created(){/* 实例创建后 */},mounted(){/* DOM挂载后 */},updated(){/* 数据更新后 */},destroyed(){/* 实例销毁前 */},// 组件注册components:{// 子组件注册}}scriptexport default 的作用export default是 ES6 模块系统的语法用于导出模块的默认内容。在 Vue 中它用于导出一个 Vue 组件配置对象exportdefault{// 组件配置选项}当在另一个文件中使用import时导入的就是这个默认导出的对象。data作用定义组件的响应式数据必须是函数返回一个包含数据的对象为什么是函数确保每个组件实例都有独立的数据副本避免数据共享问题data(){return{newUser:{name:,email:},// 创建新用户时的表单数据users:[],// 存储从API获取的用户列表editingUser:null// 当前正在编辑的用户};}created生命周期钩子在组件实例创建完成后立即调用执行时机数据观测已建立但DOM还未挂载常见用途初始化数据、调用APIcreated(){this.fetchUsers();// 组件创建时自动获取用户列表}methods作用定义组件的方法特点这些方法可以直接在模板中调用methods:{// 异步获取用户列表asyncfetchUsers(){try{constresponseawaitaxios.get(https://api.example.com/users);this.usersresponse.data;// 更新响应式数据}catch(error){console.error(获取用户列表失败:,error);}}}两种风格对比组合式 API 的核心思想是直接在函数作用域内定义响应式状态变量并将从多个函数中得到的状态组合起来处理复杂问题。这种形式更加自由也需要对 Vue 的响应式系统有更深的理解才能高效使用。相应的它的灵活性也使得组织和重用逻辑的模式变得更加强大。选项式 API 是在组合式 API 的基础上实现的。选项式 API 以“组件实例”的概念为中心 (即上述例子中的this)基于面向对象概念实现。同时它将响应性相关的细节抽象出来并强制按照选项来组织代码。以下是官方给出的建议在学习的过程中推荐采用更易于理解的风格。大部分的核心概念在这两种风格之间都是通用的。熟悉了一种风格以后也能够很快地理解另一种风格。在生产项目中当不需要使用构建工具或者打算主要在低复杂度的场景中使用 Vue例如渐进增强的应用场景推荐采用选项式 API。当你打算用 Vue 构建完整的单页应用推荐采用组合式 API 单文件组件。在其他 Vue 组件中导入和使用export default定义的组件 有几种方式基本导入和使用导入组件template div !-- 使用导入的组件 -- ArticleList / /div /template // 选项式 script // 导入组件 import ArticleList from /components/ArticleList.vue export default { name: ParentComponent, components: { // 注册导入的组件 ArticleList } } /script调用子组件的方法方法一使用 ref 引用template div button clickrefreshArticles刷新文章/button button clickcreateNewArticle创建文章/button !-- 给组件添加 ref 属性 -- ArticleList refarticleListRef / /div /template script import ArticleList from /components/ArticleList.vue export default { name: ParentComponent, components: { ArticleList }, methods: { refreshArticles() { // 调用子组件的 fetchArticles 方法 this.$refs.articleListRef.fetchArticles() }, createNewArticle() { // 调用子组件的 handleCreateArticle 方法 this.$refs.articleListRef.handleCreateArticle() } } } /script方法二通过 props 传递回调函数父组件template div ArticleList :onRefreshhandleRefresh :onCreatehandleCreate / /div /template script import ArticleList from /components/ArticleList.vue export default { components: { ArticleList }, methods: { handleRefresh() { console.log(父组件处理刷新逻辑) }, handleCreate(articleData) { console.log(父组件处理创建逻辑, articleData) } } } /script子组件 (ArticleList.vue)script export default { name: ArticleList, props: { onRefresh: Function, onCreate: Function }, methods: { fetchArticles() { // 原有的获取文章逻辑 fetch(http://localhost:8000/posts) .then(r r.json()) .then(data { this.articles data // 如果有传递回调函数则调用 if (this.onRefresh) { this.onRefresh(data) } }) }, handleCreateArticle() { // 原有的创建逻辑... // 如果有传递回调函数则调用 if (this.onCreate) { this.onCreate(this.newArticle) } } } } /script完整的父子组件通信示例父组件template div classparent h1博客管理/h1 div classcontrols button clicktriggerRefresh :disabledisLoading {{ isLoading ? 加载中... : 刷新文章 }} /button button clickshowCreateForm true新建文章/button /div !-- 使用子组件 -- ArticleList refarticleList :externalCreateDatacreateFormData articles-loadedonArticlesLoaded article-createdonArticleCreated / !-- 父组件的创建表单 -- div v-ifshowCreateForm classmodal h3创建新文章/h3 input v-modelcreateFormData.title placeholder标题 textarea v-modelcreateFormData.content placeholder内容/textarea button clicksubmitCreateForm提交/button button clickcancelCreate取消/button /div /div /template script import ArticleList from /components/ArticleList.vue export default { name: BlogManagement, components: { ArticleList }, data() { return { isLoading: false, showCreateForm: false, createFormData: { title: , content: } } }, methods: { // 触发子组件的刷新方法 triggerRefresh() { this.isLoading true this.$refs.articleList.fetchArticles() }, // 触发子组件的创建方法 submitCreateForm() { this.$refs.articleList.handleCreateArticle(this.createFormData) this.showCreateForm false }, cancelCreate() { this.showCreateForm false this.createFormData { title: , content: } }, // 监听子组件的事件 onArticlesLoaded(articles) { this.isLoading false console.log(文章加载完成:, articles) }, onArticleCreated(newArticle) { console.log(新文章创建:, newArticle) this.createFormData { title: , content: } } } } /script子组件 (ArticleList.vue)template div classarticle-list div v-ifarticles.length 0 classempty暂无文章/div ArticleCard v-forarticle in articles :keyarticle.id :articlearticle / /div /template script import ArticleCard from ./ArticleCard.vue export default { name: ArticleList, components: { ArticleCard }, props: { // 从父组件接收创建数据 externalCreateData: { type: Object, default: () ({ title: , content: }) } }, data() { return { articles: [], newArticle: { title: , content: , author: 左越 } } }, watch: { // 监听外部创建数据的变化 externalCreateData: { handler(newData) { if (newData.title || newData.content) { this.newArticle { ...newData, author: 左越 } this.handleCreateArticle() } }, deep: true } }, created() { this.fetchArticles() }, methods: { async fetchArticles() { try { const response await fetch(http://localhost:8000/posts) const data await response.json() this.articles data // 触发事件通知父组件 this.$emit(articles-loaded, data) } catch (err) { console.log(error, err) this.$emit(articles-loaded, []) } }, async handleCreateArticle(externalData null) { const articleData externalData || this.newArticle if (!articleData.title.trim() || !articleData.content.trim()) { alert(请填写所有字段) return } try { const response await fetch(http://localhost:8000/posts, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify(articleData) }) const newArticle await response.json() this.articles.unshift(newArticle) // 触发事件通知父组件 this.$emit(article-created, newArticle) // 重置表单 this.resetForm() } catch (err) { console.error(error: , err) } }, resetForm() { this.newArticle { title: , content: , author: 左越 } } } } /script关键点总结导入组件使用import ComponentName from path/to/component注册组件在components选项中注册使用 ref通过this.$refs.refName.methodName()调用子组件方法事件通信子组件使用this.$emit(event-name, data)父组件使用event-namehandlerProps 传递父组件通过 props 向子组件传递数据和方法选择哪种方式取决于具体需求简单的调用使用ref复杂的通信使用props和events状态管理考虑使用 Vuex对于大型应用这种结构让 Vue 能够自动处理数据与视图的同步大大简化了前端开发的复杂度。愿你我都能在各自的领域里不断成长勇敢追求梦想同时也保持对世界的好奇与善意!
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

富阳做网站沈阳男科私立医院

《元能力系统:重塑你的内在架构》 第二模块:【架构篇】—— 绘制你的内在生态地图 第9/21篇 专栏引言 这不只是一套关于效率的方法论,更是一场系统性的心智觉醒之旅。我们将从“被动反应”的生存模式,跃迁至“主动建构”的生命创造模式。 本文是【架构篇】的收官之作。…

张小明 2025/12/26 14:12:05 网站建设

叫人做网站后不提供源码个人做网站如何赚钱

3分钟掌握VS Code语法神器:Grammarly插件终极配置指南 【免费下载链接】grammarly Grammarly for VS Code 项目地址: https://gitcode.com/gh_mirrors/gr/grammarly 在编程与文档写作的交叉领域,Grammarly for VS Code插件为开发者提供了专业级的…

张小明 2025/12/26 14:11:31 网站建设

网站中文域名好不好国际重大新闻事件2023

富文本编辑器配置难题:wangEditor v5 的优雅解决方案 【免费下载链接】wangEditor-v5 项目地址: https://gitcode.com/gh_mirrors/wa/wangEditor-v5 还在为富文本编辑器的复杂配置头疼吗?每次引入新的编辑器都要经历依赖冲突、样式错乱、功能冗余…

张小明 2025/12/26 14:10:57 网站建设

做企业网站项目的心得长春排查出阳性患者

深入实战:MOSFET半桥驱动电路设计全解析你有没有遇到过这样的情况——明明选了低导通电阻的MOSFET,系统效率却始终上不去?或者电机控制器一启动,上管就发热严重,甚至烧毁?更诡异的是,示波器上看…

张小明 2025/12/26 14:10:23 网站建设

桂林网站建设哪家好郑州400建站网站建设

第一章:智谱Open-AutoGLM论文技术内幕(20年专家视角):揭开国产大模型自动化推理的神秘面纱AutoGLM的核心设计理念 AutoGLM作为智谱AI在自动化推理领域的前沿探索,其核心在于将任务分解、工具调用与自我反思机制深度融合…

张小明 2025/12/26 14:09:49 网站建设

国外 外贸 网站 源码重庆云阳网站建设公司

站在 2025 年的岁末,回望这一年科技圈最激烈的风暴眼,无疑是 AI 大模型的开源浪潮。从 DeepSeek 开源其对标世界顶尖水平的大模型,到阿里巴巴将“通义千问”家族全面开放……开源在 2025 年已经从一种“选择”,变成了一种“标配”…

张小明 2025/12/26 14:09:15 网站建设