关键词:
因为业务需求的变更,做了很多模块化处理,为了便于记忆学习,给未来的自己提个醒,特来get此刻的感悟。
场景需求:
一开始父级下面可能有好几个小模块,但是有一个小模块做的很出色,远远的超出的其他模块。为了利益
最大化,那么就有请偶们把这个模块独立出来,且不能影响其他任何模块。
需求分析:
既然独立出来,首先要考虑的域名地址也要变换,比如以前该模块地址为:xxx.test1.com/module1/index.do
那么现在就变成了xxx.test2.com/index.do;这样,也就实现了域名的独立。对于域名的独立,每个框架的处理方式
不一样。比如laravel框架的路由中可以进行简单的配置一下,意思就是当域名为xxx.test2.com时候,下面的所以路由
就走这里的,这样我们就可以从视觉上实现了模块独立了。
1//模块的独立 2 Route::group(['domain' => 'xxx.test2.com','middleware' => [ 'api.auth']], function () { 3 //这里就是你自己的路由 4 });
当然如果你不想在框架配置也行,可以在服务器中进行配置,以配置Apache为例子
1 <VirtualHost *:80> 2 ServerName xxx.test1.com
3 ServerAlias xxx.test2.com
4 DocumentRoot "/var/www/html/xxx.test1.com/sites/b/" 5 <Directory "/var/www/html/xxx.test1.com/sites/b/"> 6 Alias /static/ "/var/www/html/xxx.test1.com/sites/static/" 7 Alias /conquer/ "/var/www/xxx.test2.com/sites/static/"
好吧,结束上面一堆配置的废话。下面开始讨论一下,如何进行逻辑的分离。恩,既然说到逻辑上的分离,就我目前的
个人经验来看,最简单粗暴的方法,就是在数据表中,建立多个所谓冗余字段,当入库的时间,区分一下添加字段所属
的模块;读库的时候也就是多了个where判断条件即可。如下图:
当然这样做前期是方便了,满足了当前需求,当时后期你会发现会越来越乱,越来越冗余,维护起来比较麻烦。第二种方法,
就是分表。对,就是分表。所谓的分表就是,以前的查询展示数据的方法一点都不变,不要去改动它。区别就是,数据入库
的时候新建一张原来一模一样的表,然后进行入库操作到新建的这张表中。把这些数据慢慢的挪到新的数据库中。恩,暂时
就是理解这么多吧。
个人小结
无论你构思的多么好,代码写的有多么优秀,代码实际环境的运行才是检验的唯一标准。我虽然走的很慢,但我从未放弃,
前进依然在继续,不积跬步无以至千里,不积小流无以成江海,依然fighting。。。
一些springboot的初步理解
...速、大道至简,缺点是真的太单一,不适于项目中的模块开发。如果是单一的应用,比如做接口转发、项目启动,SpringBoot很合适这些场景,如果是项目开发,建议还是使用SpringCloud。下面整理了一些理解SpringBoot和使用Spring 查看详情
requirejs的初步掌握
前一段时间,因为一些事吧这个习惯落下了,现在争取重新捡起来。最近开始自学requireJS,为了更好的掌握,所以写出一个自我理解的博客供参考。分割线------------------------- 首先,学习requireJS,要知道什么是requireJS.requireJS是... 查看详情
小白对于数据库的初步理解
电脑是几年前的电脑了,用起来不流畅,自己开发一个网站,涉及到数据库,一是不了解数据库,二是也不太想现在学,三就是电脑装上可能又卡了,于是就用txt文档当个简易的"数据库"了。想开发一个类似于博客的收藏夹个人... 查看详情
ajax的初步理解
...异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术。它使用:使用XHTML+CSS来标准化呈现;使用XML和XSLT进行数据交换及相关操作;使用XMLHttpRequest对象与Web服务器进行异步数据通信;使用Javascript操作DocumentObjectModel进 查看详情
es6函数模块-------初步学习
初步学习:1函数参数允许尾逗号functionclownsEverywhere(param1,param2,//param2后面有逗号){}2函数参数可以赋初值利用解构赋值默认值结合使用函数的length属性失真,是指没有赋初值的函数参数个数3name属性函数的name属性返回该函数名4箭... 查看详情
开发流程
...析员向用户初步了解需求,然后用相关的工具软件列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。2.系统分析员深入了解和... 查看详情
android项目模块化/组件化开发(非原创)
文章大纲一、项目模块化初步介绍二、项目模块化的两种模式与比较三、大型项目模块化的演进四、项目模块化总结五、参考文章 一、项目模块化初步介绍1.前言在Android开发中,随着项目的不断扩展,项目会变得越来越庞大... 查看详情
涂鸦模块初步测试(代码片段)
...联系信息手边的涂鸦模块来自于微信联系人“檎”提供的开发模块。模块型号:TYDE5-WBR3-MCU-1▲图1.1涂鸦模块的外形2、功能亮点WBR3包含低功耗的KM4MCU,WLANMAC,1T1RWLAN,最高主频100MHz,内置256KSRAM,芯片内置2... 查看详情
全返系统开发
全返系统开发有:消费全返系统开发、购物全返系统开发、全返系统商城开发、全返系统app开发,开发流程如下:全返系统开发需求调研分析 ∷全返模式系统分析员和用户初步了解需求,然后用WORD列出要开发的系统的大功... 查看详情
班级通讯录系统初步设计--表设计
...陆界面和主界面设计初步教学设计:一、 通讯录系统开发维护Ver0.11.开始维护现有程序,理解程序,用例图Ver1.0. 2.找bug,改bug,重构小部分代码,以满足用户的需求。在现有版本的基础上做增量开发1) &n... 查看详情
数据系统初步设计
...图: (2)系统架构 -一个成熟的产品是模块化的,是根据需求来通过配置中心,将需要的模块及数据在应用端透出,从而拥有强大的灵活性适应各个需求数据平台大体分为以下集合模块: 1, 查看详情
即时通讯(文字,图片,视频)包括坐席调度排队系统初步理解
...需要从技术到网络资源的一整套方案,所以果断放弃自己开发,开始寻找 查看详情
c#对委托的初步理解理解
作为新手对委托的学习:1.定义委托:委托实际上是一个类,在定义委托前就知道了方法的返回类型和方法的参数类型(可以把委托理解为只知道方法的返回类型和方法的参数类型,不知道方法体)public delegatestringTestDelegate(s... 查看详情
jndi的初步理解
...什么意思?答:JNDI是javanaminganddirectoryinterface的缩写,是j2ee开发中的一种重要的规范 2.JNDI有什么用?答:如果没有JNDI,那使用JAVA连接数据库的时候是这样的(如下),如果数据库名称,用户名,密码改变需要对JAVA源代码进行修改,... 查看详情
javascript设计前端模板初步理解
...ff09;,但本文要讲的却不是后端的概念,而是前端开发中所使用到的一种技术,也就是“前端模板”技术。 模板的工作原理可以简单地分成两个步骤:模板解析(翻译)和数据渲染。这两个步骤可分别... 查看详情
js数据类型的初步理解
1、js中的类型字符串、数字、布尔、数组、对象、Null、Undefined①基本数据类型null、undefined、boolean、number、stringconsole.log(typeof1);//numberconsole.log(typeof"a");//stringconsole.log(typeofnull);//objectconsole.log(typeofundefined 查看详情
lucenenumericrangequery的初步理解
...umericRangeQuery,首先需要理解Lucene是如何存储数值类型.文本初步探讨了Int和Float两种数值类型在Lucene中的存储实现,数值类型的分词原理, 最后给出NumericRangeQuery的简单理解.Lucene最初设计是实现全文检索功能,即只处理字符串.因此... 查看详情
call的初步理解
首先说下call的本质是一个函数模拟下:Function.prototype.call=function(context){ //this表示某函数,函数里面的this先被替换成context,然后再执行 this.bind(context); this();}然后理解这个Function.prototype.call.call(context);//相当于this.bind(context 查看详情