热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MVC学习使用及总结

模块化什么是模块化?就是把一个东西分成几个块(模块),块与块之间互相独立。在台式机时代,很多人都自己主装过电脑

模块化

什么是模块化?就是把一个东西分成几个块(模块),块与块之间互相独立。

在台式机时代,很多人都自己主装过电脑,选购自己喜欢的显示器,鼠标,键盘,主机,配备性能强劲的cpu、显卡、内存等主成最强配置,这些单个物体都是模块,互相独立,可以根据自己的爱好选择。

模块化主要解决合作问题

  1. 自己与自己合作
  2. 自己与以前的自己合作
  3. 自己与别人合作

MVC

MVC 是一种代码组织形式,他不是任何一种框架,也不是任何一种技术,它就是一种组织代码的思想,我们要做到事情就是把 M 和 V 传给 C,C 负责初始化 M,然后对 V 进行操作。
画成图就是这样:
mvc图片

MVC具体是什么呢?阮一峰老师给了我们很好的解答:

1)最上面的一层,是直接面向最终用户的"视图层"(View)。它是提供给用户的操作界面,是程序的外壳。

2)最底下的一层,是核心的"数据层"(Model),也就是程序需要操作的数据或信息。

3)中间的一层,就是"控制层"(Controller),它负责根据用户从"视图层"输入的指令,选取"数据层"中的数据,然后对其进行相应的操作,产生最终结果。

这三层之间紧密联系,又互相独立,每层内部的变化不影响其他层。

用 MVC 做简历

学习了 MVC 思想后,用 MVC 思想做了简历的留言板。

我没有自己买服务器,用了线上免费的服务器——leancloud,具体的使用方法可以看它的使用文档,这里就不在赘述了。

先上图,静态页面是仿造网易云音乐做的,做完下来发现有点丑。

我做这个大概要实现的功能是:

  1. 用户可以留言,必须要输入用户名和留言内容(留言区左边方框本来是头像,我把它做成输用户名的地方)
  2. 点击发表后,留言会立马出现在留言墙上
  3. 评论条数实时更新
  4. 显示日期
  5. 点赞功能
  6. 回复功能

本想全部用原生 JS 做的,无奈自己水平太次,有些地方使用的 jQuery。

目前做好的功能是1、2、3,剩余三个做了一部分,其中点赞功能在我实践下来,貌似实现不了,数据传送到后台,不能累计,所以只做了静态的更新,一刷新就没了。

显示日期功能,自己对原生 JS 掌握的不好,没有做成我们常用的日期格式。

回复功能,今天来不及做了,因为还需要做两套样式,一套是回复时的输入框,以及上墙后的样式(这点最后再来做吧)。

今天花时间比较多的地方是动态创建 DOM 元素,还没有效果,用原生 JS 真的好难实现,我刚开始全部用createElement创建标签,然后在一个个appendChild到页面中,长长的写了一坨,还不能复用,突然就想到自己能不能实现jQueryhtml方法,果然很傻很天真,jQuery源代码看了半天没看懂。算了,果断放弃,还是老老实实使用它吧。

框架

MVC 的 V,页面可视区域document.querySelector('.messages'),所有操作都是在它内部。

MVD 的 M,操作服务器,获取和保存数据,只负责操作服务器,至于返回数据的操作统一由 C 完成

  1. 初始化 AV 对象 initAV
  2. 请求数据 fetch
  3. 保存数据 save

2 和 3 都是返回 Promise 对象,可以直接在后面进行then操作。

MVC 的 C,负责监听 V、调用 M;M 和 V 都在初始化的时候传递给 C,C 内部不直接操作 M 和 V。

  1. 常用的变量
  2. init:初始化变量和各操作
  3. 绑定事件:目前只做了留言功能
  4. 进入页面后,加载留言
  5. 留言后发送服务器,并上墙

用 MVC 思想的,每个模块里面也都是各个独立的,每个方法只做该部分该做的事情,这次我做的不是很好,还是有很多混在了一起。

C 部分除了上面讲的的 DOM 操作外,还有两个比较费时的地方。

第一个是,我需要的数据是用户名,留言内容和时间,这三个数据放在了两个属性里面,如果我要自己实现动态创建 DOM 的话,这数据很难拿到,需要反复的遍历后台返回的对象,这就会造成新能很差。后来想到了一种方法——把他们以对象的形式分别push到数组,出现了一个问题,数组的下标全是偶数,并不是0,1,2,3,4 这样排列的,这两个卡在了一起,后来用了 jQuery 之后配合 ES6 语法,很轻松就搞定了(偷懒了)。

第二个是留言上墙时,留言总数实时更新,数据拿到之后,怎么弄都不能加1,老当成字符串解析,但用 typeof 检测返回的又是 number ,搞的头都晕,试到最后才想起parseInt,我艹,好了,我的天。typeof 果然是个大坑。

总之今天收货挺大的,发现自己有好多问题,主要两点:代码思路不清晰,出错了会卡很久;做之前没考虑全,做到最后才发现最关键的数据拿不到,白白浪费时间。



推荐阅读
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • vue使用
    关键词: ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • HTML5网页模板怎么加百度统计?
    本文介绍了如何在HTML5网页模板中加入百度统计,并对模板文件、css样式表、js插件库等内容进行了说明。同时还解答了关于HTML5网页模板的使用方法、表单提交、域名和空间的问题,并介绍了如何使用Visual Studio 2010创建HTML5模板。此外,还提到了使用Jquery编写美好的HTML5前端框架模板的方法,以及制作企业HTML5网站模板和支持HTML5的CMS。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
author-avatar
撒哈拉2011的马甲_978
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有