[JavaScript]MVC浅析
2021-06-23 09:07
标签:messages creat 相互 log 维护 防止 NPU const 用户 MVC或多或少都有听说过,我知道如果要作为一个前端的话,MVC应该是一个显示技术水平的槛,是绕不过去的,所以我乖乖来写这篇文章,对MVC进行一些粗浅的分析和归纳,以加深对MVC的理解。 MVC是一种代码组织形式,他把代码依据功能的不同划分成三个部分,分别是Model、Controller、View。 View代表视图,Model代表对数据的操作(存储和获取等),Controller代表了View和Model两者之间的交互逻辑以及其他。 他们之间的相互作用是这样的:用户对View视图做出了操作,监听着View视图的controller接收到了View的变化通知,然后按需求去调用Model,Model向server发出请求;server返回响应给Model,Model返回数据给Controller,Controller根据接收到的数据更新View视图。 用一张图来表示就是: 接下来改写一下之前使用leanCloud添加数据库创建留言功能的代码: View代表视图,因为我们只对这个提交表单和展示列表进行操作,所以View就是: Model代表对数据的操作(存储和获取等)。 所以Model应该只负责保存提交上来的留言到leanCloud,和从leanCloud获取留言以及数据库初始化的工作(给服务器发送请求,接收服务器响应),返回数据给Controller: Controller代表了View和Model两者之间的交互逻辑以及其他。 所以,他会负责监听View的事件通知,对Model的调用;从Model获取返回数据,更新View视图。 MVC只能使用Controller通过Model操作自身的View,功能划分合理,所以对其他的文件和View来说是解耦的。利于维护和编写。 Controller中this的使用,箭头函数不会改变this的指向。 [JavaScript]MVC浅析 标签:messages creat 相互 log 维护 防止 NPU const 用户 原文地址:https://www.cnblogs.com/No-harm/p/9674101.htmlMVC浅析
//message.js
!function(){
// 初始化
var APP_ID = ‘xxxxxxxxxxxxxxxxxxxxxxxxxx‘;
var APP_KEY = ‘xxxxxxxxxxxxxxxxxxxxxx‘;
AV.init({
appId: APP_ID,
appKey: APP_KEY
});
// 拉取历史留言
var query = new AV.Query(‘Message‘);
query.find().then(function (messages) {
messages.forEach(function (item) {
let li = $(‘
View
var view = $(‘section.messages‘)
Model
var model = {
// 初始化
init : function(){
var APP_ID = ‘xxxxxxxxxxxxxxxxx‘
var APP_KEY = ‘xxxxxxxxxxxxxxxxxxxxxxxx‘
AV.init({appId: APP_ID,appKey: APP_KEY})
},
//获取数据
fetch:function(){
var query = new AV.Query(‘Message‘);
return query.find() //Promise对象
},
// 保存数据
save:function(name,content){
var Message = AV.Object.extend(‘Message‘)
var messages = new Message();
return messages.save({
"name":name,
"content":content ,
})
},
}
Controller
var controller = {
view : null,
model: null,
init : function(view,model){
this.model = model
this.view = view
this.myForm = document.querySelector(‘#postMessage‘)
this.model.init()
this.loadMessages()
this.bindEvents()
},
//加载留言数据
loadMessages : function () {
this.model.fetch().then((messages) => {
messages.forEach((item) => {
let span = $(‘‘).text(‘发布于:‘+ this.parseTime(item.createdAt))[0]
let li = $(‘
整体MVC
!function(){
var view = $(‘section.messages‘)
var model = {
init : function(){
var APP_ID = ‘xxxxxxxxxxxxxxxxxxxxxxx‘
var APP_KEY = ‘xxxxxxxxxxxxxxxxxxxxxxxxxx‘
AV.init({appId: APP_ID,appKey: APP_KEY})
},
//获取数据
fetch:function(){
var query = new AV.Query(‘Message‘);
return query.find() //Promise对象
},
// 保存数据
save:function(name,content){
var Message = AV.Object.extend(‘Message‘)
var messages = new Message();
return messages.save({
"name":name,
"content":content ,
})
},
}
var controller = {
view : null,
model: null,
init : function(view,model){
this.model = model
this.view = view
this.myForm = document.querySelector(‘#postMessage‘)
this.model.init()
this.loadMessages()
this.bindEvents()
},
loadMessages : function () {
this.model.fetch().then((messages) => {
messages.forEach((item) => {
let span = $(‘‘).text(‘发布于:‘+ this.parseTime(item.createdAt))[0]
let li = $(‘
注意事项
上一篇:javaEE项目部署方式