您的位置:首页 > Web前端 > JavaScript

应用级 - JS的简单分层

2016-06-27 15:36 429 查看
基础级 / 进阶级已经无法概括这篇文章的气质,上图:



  咳咳,言归正传,这几日忙于写JS小游戏,大量而繁杂的JS变量、接口,以及HTML5环境下,JS的重要性,这两者令我有写出这篇文章的想法。

  首先声明,JS作为脚本式语言,肯定是无法和完全OOP的语言相媲美1,本文也无意去做这样的用功。我们希望通过设计模式的一些浅显思想,来完成JS模块的初步优化

架构

  没有学过架构,也没用看过关于架构的书,却来妄谈架构,在大牛眼里一定是非常狂妄的,但毫无疑问,一个连简单分层都没有实现的JS代码簇,是相当紊乱的。

  MVC显然是一个拿来急用的好东西。将JS简单分为三部分:控制层、模型层和视图层——显得不伦不类,那我就二次修改吧。控制层依然负责调用,模型层则写入大量的数据处理的原型,视图层取消掉,取而代之的是数据层

  

  数据层介于M与C之间,是控制器接受请求之后,传入模型层的数据集,这样的规划可以最大程度保障模型层代码的功用。

  

  个人拙见,将任何核心功能代码写死,都是相当糟糕的设计。一个核心功能,应该能在相当程度上保证自己的健壮性。

具体设计

  本人这款小游戏简单的将JS代码分为功能(function)与控制(controller),数据不算多,集成在
controller.js


  首先是功能,在0.11v中,我加入了税收,当时设定了三种税务,并且基本上都写死了具体内容。后来,游戏内容开始横向拓展,税收需要一种更有弹性的设计方式——税收品种增多。

// 工/商/人头 税
var tax = (function() {
var pollTax = function() {
var taxValue = get('population') * 0.03;
purseSub(-taxValue);
var message01 = '<div>您收到人头税金,合计:' + parseInt(taxValue) + '</div>';
message.plus(message01);
message.output();
};

var commerceTax = function() {
var taxValue = get('market') * 0.19;
purseSub(-taxValue);
var message01 = '<div>税金到帐:共' + parseInt(taxValue) + '铜币</div>';
message.plus(message01);
message.output();
};

var industryTax = function() {
var taxValue = get('plant') * 0.15;
purseSub(-taxValue);
var message01 = '<div>''税金收取完毕,合计:' + parseInt(taxValue) + '铜币</div>';
message.plus(message01);
message.output();
};

return {
pollTax : pollTax,
commerceTax : commerceTax,
industryTax : industryTax
};
})();

// 税,改变后版本
var tax = (function() {
var Tax = function(taxName, taxKey, taxPoint) {
var taxValue = get(taxKey) * parseInt(taxPoint);
purseSub(-taxValue);
var message1 = '<div>' + taxName + '税金到帐:共' + parseInt(taxValue) + '铜币</div>';
message.plus(message1);
message.output();
};

return {
Tax : Tax
};
})();


  如此优化之后,不但代码本身少了很多,而且接触了写死的绑定,正交增强。接下来,无论是拓展个性化的收税提示,还是增多税种,都只是业务层面的问题了,Core已经完成。

  相信到这里,分层的好处已经清晰体现了。

结语

  上述的分层是相当粗略为简单的,肯定有更好更优秀的分层方式(譬如MVVC——尽管相当多的后端大牛吐槽MVVC是半成品,但不能否认这是前端的进步),希望大家也能在自己的编程经历中,总结出一套适用于自己的分层方式。

  最近接触了一些HTML5的讯息,JS、Canvas、前端框架,才会愈发感触到“应用型Web”的意义与好处,尽管无法预料编程本身是否都向着应用去发展,可一个漂亮而简单的划分,可以让编程者的心情好很多。
肯定会有大牛对我的看法不屑一顾,但对目前的我而言,显然是无法将JS运用自如的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JavaScript 模块思想