当前位置: 首页 > news >正文

被墙的网站有哪些怎么制作图片和视频一起的小视频

被墙的网站有哪些,怎么制作图片和视频一起的小视频,呼市做开发网站的公司,深圳公司排行榜MVVM(Model-View-ViewModel)、MVC(Model-View-Controller)和MVP(Model-View-Presenter)是三种常见的软件架构模式,它们在客户端应用开发中被广泛使用。每种模式都有其特定的设计理念和应用场景&…

MVVM(Model-View-ViewModel)、MVC(Model-View-Controller)和MVP(Model-View-Presenter)是三种常见的软件架构模式,它们在客户端应用开发中被广泛使用。每种模式都有其特定的设计理念和应用场景,下面将详细介绍这三种模式的区别,并通过示例来说明。

1. MVC (Model-View-Controller)

核心思想

  • Model:负责数据的存储和业务逻辑。
  • View:负责展示数据,用户界面。
  • Controller:负责处理用户输入,更新模型和视图。

工作流程

  1. 用户与视图进行交互。
  2. 视图将用户的输入传递给控制器。
  3. 控制器根据输入调用模型的方法,更新模型的状态。
  4. 控制器通知视图更新以反映模型的变化。

优点

  • 分离关注点,使得代码结构清晰。
  • 便于维护和扩展。

缺点

  • 对于复杂的UI,控制器可能会变得臃肿。
  • 视图和控制器之间的耦合较高。

示例: 假设我们有一个简单的待办事项应用:

// Model
class TodoModel {constructor() {this.todos = [];}addTodo(todo) {this.todos.push(todo);}removeTodo(index) {this.todos.splice(index, 1);}
}// View
class TodoView {constructor(model, controller) {this.model = model;this.controller = controller;this.init();}init() {const addButton = document.getElementById('addButton');addButton.addEventListener('click', () => {const input = document.getElementById('todoInput');this.controller.addTodo(input.value);input.value = '';});const list = document.getElementById('todoList');this.model.todos.forEach((todo, index) => {const li = document.createElement('li');li.textContent = todo;const removeButton = document.createElement('button');removeButton.textContent = '删除';removeButton.addEventListener('click', () => {this.controller.removeTodo(index);});li.appendChild(removeButton);list.appendChild(li);});}update() {const list = document.getElementById('todoList');list.innerHTML = '';this.model.todos.forEach((todo, index) => {const li = document.createElement('li');li.textContent = todo;const removeButton = document.createElement('button');removeButton.textContent = '删除';removeButton.addEventListener('click', () => {this.controller.removeTodo(index);});li.appendChild(removeButton);list.appendChild(li);});}
}// Controller
class TodoController {constructor(model, view) {this.model = model;this.view = view;}addTodo(todo) {this.model.addTodo(todo);this.view.update();}removeTodo(index) {this.model.removeTodo(index);this.view.update();}
}const model = new TodoModel();
const view = new TodoView(model);
const controller = new TodoController(model, view);

2. MVP (Model-View-Presenter)

核心思想

  • Model:负责数据的存储和业务逻辑。
  • View:负责展示数据,用户界面。
  • Presenter:作为中间层,处理用户输入,更新模型,并控制视图的显示。

工作流程

  1. 用户与视图进行交互。
  2. 视图将用户的输入传递给Presenter。
  3. Presenter根据输入调用模型的方法,更新模型的状态。
  4. Presenter更新视图以反映模型的变化。

优点

  • 分离了视图和业务逻辑。
  • 测试更加容易。

缺点

  • Presenter可能变得复杂。
  • 视图和Presenter之间的接口需要仔细设计。

示例: 继续上面的待办事项应用,但这次使用MVP模式:

// Model
class TodoModel {constructor() {this.todos = [];}addTodo(todo) {this.todos.push(todo);}removeTodo(index) {this.todos.splice(index, 1);}getTodos() {return this.todos;}
}// View
class TodoView {constructor(presenter) {this.presenter = presenter;this.init();}init() {const addButton = document.getElementById('addButton');addButton.addEventListener('click', () => {const input = document.getElementById('todoInput');this.presenter.addTodo(input.value);input.value = '';});const list = document.getElementById('todoList');this.renderTodos(this.presenter.getTodos());}renderTodos(todos) {const list = document.getElementById('todoList');list.innerHTML = '';todos.forEach((todo, index) => {const li = document.createElement('li');li.textContent = todo;const removeButton = document.createElement('button');removeButton.textContent = '删除';removeButton.addEventListener('click', () => {this.presenter.removeTodo(index);});li.appendChild(removeButton);list.appendChild(li);});}
}// Presenter
class TodoPresenter {constructor(view, model) {this.view = view;this.model = model;}addTodo(todo) {this.model.addTodo(todo);this.view.renderTodos(this.model.getTodos());}removeTodo(index) {this.model.removeTodo(index);this.view.renderTodos(this.model.getTodos());}getTodos() {return this.model.getTodos();}
}const model = new TodoModel();
const view = new TodoView();
const presenter = new TodoPresenter(view, model);
view.presenter = presenter;

3. MVVM (Model-View-ViewModel)

核心思想

  • Model:负责数据的存储和业务逻辑。
  • View:负责展示数据,用户界面。
  • ViewModel:作为中介者,负责数据绑定、命令处理和状态管理。

工作流程

  1. 用户与视图进行交互。
  2. ViewModel监听视图的变化,并更新模型。
  3. ViewModel监听模型的变化,并更新视图。

优点

  • 数据绑定机制简化了视图和模型之间的同步。
  • 降低了视图和模型之间的耦合。

缺点

  • 可能会增加内存开销。
  • 复杂的数据绑定逻辑可能难以调试。

示例: 继续上面的待办事项应用,但这次使用MVVM模式(使用Vue.js实现):

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Vue MVVM示例</title><script src="https://cdn.jsdelivr.net/npm/vue@next"></script>
</head>
<body><div id="app"><h1>待办事项</h1><input v-model="newTodo" placeholder="添加新事项" @keyup.enter="addTodo"><ul><li v-for="(todo, index) in todos" :key="index">{{ todo }}<button @click="removeTodo(index)">删除</button></li></ul></div><script>const app = Vue.createApp({data() {return {newTodo: '',todos: []};},methods: {addTodo() {if (this.newTodo.trim()) {this.todos.push(this.newTodo);this.newTodo = '';}},removeTodo(index) {this.todos.splice(index, 1);}}});app.mount('#app');</script>
</body>
</html>

总结

  • MVC:适用于传统的Web应用,尤其是服务器端渲染的应用。它通过控制器协调模型和视图之间的交互。
  • MVP:适用于需要高度测试性的应用,特别是移动应用。它通过Presenter来分离视图和业务逻辑。
  • MVVM:适用于现代的单页应用(SPA),特别是使用JavaScript框架如Vue、Angular或React构建的应用。它通过数据绑定简化了视图和模型之间的同步。

选择哪种模式取决于具体的应用场景和需求。MVVM由于其简洁的数据绑定机制,在现代前端开发中非常流行。

http://www.yayakq.cn/news/479478/

相关文章:

  • 网站的流量检测怎么做wordpress制作模板
  • 百度云加速 网站关键词wordpress4.7源码下载
  • 互联网网站建设一条龙服务开什么店投资小利润高
  • 上海市建设工程安全质量监督总站网站广元网站建设广元
  • 杭州装饰网站建设方案中国最新军事新闻最新消息2023
  • 广州行业门户网站建设知名网站建设代理
  • python一句做网站wordpress 使用ip访问不了
  • 网站导航自适应wordpress 仿站 菜单
  • 降龙网络专业做网站国家城乡和建设厅特殊工种网站
  • 网站升级建设中wordpress运维托管
  • 网站空间怎么备份wordpress主题加速插件
  • 建站网站多少钱装饰网站的业务员都是怎么做的
  • 进入网站后台ftp空间后怎样上传重庆网站建设在哪里
  • 域名只做邮箱没网站要备案吗深圳国外网站建设
  • 怎么查看自己网站是否被收录附近的教育培训机构有哪些
  • 移动应用还是网站开发做外贸必须有网站吗
  • 广西建设局网站数据库与网站
  • 山东省建设工程管理局网站南通哪里学网站建设
  • 阿里云clouder网站建设做汽配的外贸网站
  • 网站全局变量网站开发 简单
  • php+mysql 网站建设凡科建站视频教程
  • 宁波高质量品牌网站设计厂家html网页制作练习
  • 酷黑网站怎么在微信上做网站
  • 资源网站网络规划设计师视频
  • 网站开发中的网页上传和网站发布库存管理软件哪个好
  • 无锡网站建设818gxphp站点搭建
  • 浙江融兴建设有限公司网站怎样辨别网站
  • 游戏网站建设策划方案模板服务器维护中
  • 网站建设平台皆往乐云践新专家wordpress vip解析插件
  • 杭州响应式网站案例seo对网店的作用有哪些