外外贸网站推广方案化妆品电子商务网站开发流程描述

张小明 2025/12/26 23:07:01
外外贸网站推广方案,化妆品电子商务网站开发流程描述,怎样建网站视频教程,淘宝代运营公司哪家好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进行投诉反馈,一经查实,立即删除!

个体户 网站建设学做淘宝网站是骗子吗

终极解决方案:3步快速修复NVIDIA Profile Inspector配置保存失败问题 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 你是否在使用NVIDIA Profile Inspector这款强大的驱动配置工具时&#…

张小明 2025/12/24 9:33:17 网站建设

专业做汽车零部件平台的网站家具网站首页模板

终极简单作品集模板:快速打造专业个人网站 【免费下载链接】simplefolio ⚡️ A minimal portfolio template for Developers 项目地址: https://gitcode.com/gh_mirrors/si/simplefolio Simplefolio是一款专为开发者设计的极简主义个人作品集模板&#xff0…

张小明 2025/12/24 9:33:15 网站建设

双公示 网站专栏建设交通局网站模板

深蓝词库转换:打通输入法壁垒的智能解决方案 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 在数字化时代,输入法已经成为我们与计算机交互的…

张小明 2025/12/24 9:33:13 网站建设

网站快速排名推荐c# 开发网站开发

【LetMeFly】3606.优惠券校验器:分类 排序 力扣题目链接:https://leetcode.cn/problems/coupon-code-validator/ 给你三个长度为 n 的数组,分别描述 n 个优惠券的属性:code、businessLine 和 isActive。其中,第 i 个…

张小明 2025/12/24 11:41:00 网站建设

查找网站备案信息二合一收款码免费制作网站

如何通过Kotaemon实现用户行为数据分析? 在智能客服系统日益普及的今天,企业不再满足于“能回答问题”这一基础能力。越来越多的团队开始关注:用户到底在问什么?他们为什么会这样问?哪些问题反复出现?哪些服…

张小明 2025/12/24 11:40:58 网站建设

嘉兴制作手机网站wordpress自己弄博客

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持java、ThinkPHP、Node.js、Spring B…

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