标签: modular-design

在Javascript中使用带有DOM选择的模块化设计模式

我一直在关注模块化设计模式已经有一段时间了,发现它非常有用,因为它有助于维护代码并将块分离到模块中.

经常使用模块结构jQuery导致我的大多数应用程序/代码遵循以下结构:

(function() {
    var chat = {
        websocket: new WebSocket("ws://echo.websocket.org/"),
        that: this,
        init: function() {
            this.scrollToBottom();
            this.bindEvents();
            this.webSocketHandlers();
        },
        bindEvents: function() {
            this.toggleChat();
            this.filterPeople();
            this.compose();
        },
        elements: {
            indicator: $(".indicator"),
            statusText: $(".status-text"),
            chatHeadNames: $(".people li .name"),
            filterInput: $("#filter-input"),
            msgInput: $("#msg-input"),
            sendBtn: $(".send")
        },
        ...
        ...
        ...
        filterPeople: function() {
          var that = this;
          this.elements.chatHeadNames.each(function() {
              $(this).attr('data-search-term', $(this).text().toLowerCase());
          });
        },
        ...
        ...
        };

        chat.init();
})();
Run Code Online (Sandbox Code Playgroud)

我想知道的是,jQuery作为单个变量的一部分引用所有元素是否chat.elements是一个好习惯

我的一部分告诉我,确实是一次引用所有选择器并将它们缓存在变量中的好方法,这样可以使用缓存变量(而不是多个DOM选择)完成相同元素的多次使用.

我的另一部分告诉我这可能是一个反模式,应该选择特定元素并在需要时在本地缓存. …

javascript jquery design-patterns modular-design

15
推荐指数
1
解决办法
1023
查看次数

使用Laravel/PHP创建基于插件的系统,如Wordpress

这个问题一直困扰着我很长一段时间,我想创建一个cms,一个更具体的学校管理系统,对我来说最重要的是,以管理员可以下载的方式制作这个系统插件并通过他们的管理面板安装插件,就像wordpress一样.

现在我已经阅读了关于wordpress Hooks,ActionsFilters的内容,而且说实话,我可以说我只是熟悉它们的功能,但是将相同的功能应用Laravel应用程序 ......,这有点难以理解出来,至少对我而言.

我也搜索了这个问题并发现几乎每个人都在推荐软件包,但是虽然软件包对于想要使用软件包功能的其他开发人员来说非常有用,但是不熟悉任何软件包的用户都无法轻松安装软件包.编程语言,这正是我在我的应用程序中想要的.

到目前为止,我在脑海中的想法,如在Wordpress操作过滤器中,几乎所有想要在Wordpress主题文件中使用的东西(为了使这段代码灵活地添加插件功能)应该被称为函数,并调用它Wordpress do_action()的功能是一种必须采取的路径,当然这是有道理的.

这样插件开发人员就可以在他们的文件中调用add_action()/ add_filter()并将他们的插件放入应用程序的流程中.所以...

基本上我在这里问的是:

  • 如何将这些功能应用于laravel应用程序?
  • 有没有比通过do_action()这样的函数调用所有内容更简单的方法?
  • 我应该编写某种文件管理模块来下载和更新插件吗?

我必须再次说我对wordpress方法不太熟悉以实现这种功能,所以我对上面提到的一些描述可能是错的,但是,如果可以的话,我感谢你对这个主题的任何澄清.

提前感谢您的任何见解.

*PS我试图尽可能清楚地解决这个问题,而且我并没有为我正在开发的系统寻找任何特定的方法.我想要的是知道实现这种功能的Common/Best方法(如果有最好的方法),最好是在Laravel中,但仍然非常感谢一般算法.

我知道很多人都有同样的问题并且正在处理同样的问题,所以如果你甚至只提供一篇有用文章的链接,那就太棒了.*

plugins laravel modular-design

8
推荐指数
1
解决办法
4009
查看次数

角项目结构最佳实践

有人可以给我一些有关我的项目结构的建议吗?

-app
  -layout
     -home-layout
         -header
         -menu
         -content
            -detail-page
               -left-side
                  -left-side.component.html
                  -left-side.component.ts
               -right-side
             -detail-page.component.html
             -detail-page.component.ts
         -footer
     -pipes
     -widget-features
  -material-module
  -services
  -models
Run Code Online (Sandbox Code Playgroud)

凭借实际的结构,站点地图的组织非常精明,我可以轻松地找到不同页面的内容。但是要获得模块化架构,我想重新组织结构。你能给我一些建议吗?

谢谢。

typescript modular-design angular

8
推荐指数
5
解决办法
1万
查看次数

如何将数据验证与我的简单域对象(PO​​CO)分开?

这个问题与语言无关,但我是C#家伙所以我使用术语POCO来表示一个只能预先形成数据存储的对象,通常使用getter和setter字段.

我只是将我的领域模型重新设计成超级PCOO,并且对于如何确保属性值在域中有意义而留下了一些问题.

例如,服务的EndDate不应超过服务所在合同的EndDate.但是,将检查放入Service.EndDate设置器似乎违反了SOLID,更不用说随着需要完成的验证数量增加,我的POCO类将变得混乱.

我有一些解决方案(将在答案中发布),但它们有其缺点,我想知道解决这一难题的最佳方法是什么?

language-agnostic separation-of-concerns solid-principles modular-design

7
推荐指数
1
解决办法
1806
查看次数

如何为Delphi创建模块化插件

使用Delphi 2010,我需要编写一个程序来支持模块或插件.虽然有点做作,但假设我有一个转换数据文件/文本文件的应用程序.它将支持30种输入格式和30种格式作为输出.第一个版本可能只实现其中的一些格式.我的挑战是我想要一个数据驱动的流程.

例如,假设我有一个PARSE_FILE例程.如果我的输入数据文件格式是'Format_A',那么当我调用PARSE_FILE时,它应该知道使用PARSE_FILE_Format_A,而不是PARSE_FILE例程的其他29个不同版本.

PARSE_FILE只是一个例子.我可能会有60个不同的常用函数,LOAD_FILE,GET_DELIMITER,PARSE_FILE等,但这些函数中的每一个对于30种不同格式中的每一种都会有所不同.我可以使用什么技术,以便在我使用FORMAT_A加载文件时,这60个不同的常用例程中的每一个都使用这60个例程的正确"版本"?

请记住,我只是从5种输入格式开始,稍后会添加其他格式,所以我需要一种集中定义这种"映射"的方法,所以无论在我的代码中使用这些例程,正常的例程版本都会即使我称之为通用版本,也可以使用.

architecture delphi plugins modular-design

6
推荐指数
1
解决办法
1290
查看次数

Sinatra的Modular是什么意思?

我想知道是否有人可以简化Modular在Sinatra应用程序中的解释.我看到sinatra中有经典的设置和模块化设置,但是从阅读文档中我无法理解Modular正在做什么.

如果可能的话,我真的想要在其基本级别进行解释,为什么将其放入profile.rb会改变应用程序的设置(如果是这种情况).请记住,我是新手,所以简单而彻底的解释是最好的!

require 'rubygems'
require 'sinatra'

class Profile < Sinatra::Base

get '/' do
 erb :index
end


end
Run Code Online (Sandbox Code Playgroud)

ruby sinatra modular-design

5
推荐指数
1
解决办法
1467
查看次数

参数类型"Y"不能赋值参数类型"Y"

我有一个webstorm IDE的问题.似乎webstorm总是在IDE中显示无效参数的错误,但是typescript编译器没有显示这样的错误; 我开始相信这个问题与IDE有关.

我有以下存储库:https://github.com/danielmahadi/modular-typescript

有4个打字稿文件:

  • customerModel.ts =>客户模型文件

    export class User{
        constructor(public id: string, public name: string){}
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • converter.ts =>将json数据转换为客户模型

    import model = require('./customerModel')
    
    export function convertToUser(data: any) : model.User {
        return new model.User(data.id, data.name);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • printer.ts =>将客户模型打印到控制台

    import model = require('./customerModel')
    
    export function print(data : model.User) : void {
        console.log('PRINTING...');
        console.log(data);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • app.js =>应用程序的入口点.

    import converter = require('./converter');
    import printer = require('./printer');
    
    var d = {
        id: '123', name: 'Test'
    }
    
    var user = converter.convertToUser(d);
    printer.print(user);
    
    Run Code Online (Sandbox Code Playgroud)

环境: …

node.js webstorm typescript modular-design

5
推荐指数
1
解决办法
5711
查看次数

什么是模块

我无法理解模块的概念.他们是翻译单位吗?他们喜欢.ccp文件和.h文件吗?

在我的教科书中,它被描述为"模块化设计由一组模块组成,这些模块是分开开发和测试的.模块化编程实现了模块化设计,并受到过程语言和面向对象语言的支持.C编程语言支持模块化设计通过由函数组成的库模块.stdio模块提供输入和输出支持,同时隐藏其实现细节;通常,scanf()和printf()的实现以编译器的二进制形式提供.stdio.h头文件提供接口,这是我们完成源代码所需的全部内容.本章介绍如何使用C++以面向对象的语言创建模块,如何分别编译每个模块的源代码以及如何将编译后的代码链接到单个可执行二进制文件.本章最后给出了一个模块单元测试的例子.

模块

精心设计的模块是一个高度凝聚力的单元,可以松散地连接到其他模块.该模块解决了编程解决方案的一个方面,并隐藏了尽可能多的细节.编译器将模块的源代码独立于其他模块的源代码转换为自己的二进制代码单元."

c++ module modular-design

5
推荐指数
1
解决办法
295
查看次数

如何实现ASP.NET MVC中关注点的分离?

自2007年预览1(12月)以来,我一直在研究,使用和使用ASP.NET MVC.自2008年以来,我一直是它的粉丝,我一直支持它.

然而,我一直听到并阅读"ASP.NET MVC强制严格分离关注点",包括由Rob Conery,Scott Hanselman,Phil Haack和Scott Guthrie在Professional ASP.NET MVC 1.0中阅读.

我不明白的是执法.如果我用除了之外的动作定义我的控制器怎么办?

return View();
Run Code Online (Sandbox Code Playgroud)

在视图(aspx视图引擎)中我做的一切?(数据获取,业务逻辑,决策制定,渲染等)

它是如何(ASP.NET MVC)ENFORCE我分开的关注?

我认为这是一种公然的夸大其词,应该是"建议分离关注点".

你能说服我强制执行吗?

asp.net-mvc view separation-of-concerns modular-design

3
推荐指数
1
解决办法
272
查看次数

用Symfony形式分离关注点

我最近一直在尝试使用Symfony 2表单,这对于简单表单非常有用.

但是 - 在选择框或类似的东西中使用 - 我经常需要表单中的关联实体列表.在几篇博文和Symfony文档中,他们提出了类似这样的内容......

//BlogPostType implements FormTypeInterface
public function buildForm(FormBuilderInterface $builder, array $options)
{
  $builder
  ->add('category', null, array(
    'property' => 'name',
    'query_builder' => function(EntityRepository $er) use($options) {
      return $er->createQueryBuilder('category')->orderBy('category.name', 'ASC');
    }
  );
}
Run Code Online (Sandbox Code Playgroud)

由于我非常关注域驱动设计,特别是关注点的分离,我发现很难相信将关联实体绑定到Symfony中的自定义表单类型的唯一选择是通过在自定义中查询它表格类型.

在我看来,这违反了SoC,因为表格不应该是查询.这样,表单总是采用相同的实体,但不是应该选择显示哪些实体的表单...

要求表单构建器构建表单的控制器应该将关联的对象注入自定义表单类型构造函数中......

//BlogPostType implements FormTypeInterface
public function __construct(array $categories) {
  $this->categories = $categories;
}

public function buildForm(FormBuilderInterface $builder, array $options)
{
  $builder
    ->add('category', null, array(
      'property' => 'name',
      'choices' => $this->categories
    );
}
Run Code Online (Sandbox Code Playgroud)

有谁知道如何实现这一目标?

php oop domain-driven-design symfony modular-design

3
推荐指数
1
解决办法
351
查看次数

存储用户配置设置的最佳位置是什么

我正在尝试使用asp.net mvc 4开发模块化web aap.我的问题是什么是存储用户设置,配置和用户访问的最佳位置.是否可以将其存储在db中,或者将其存储在xml文件中.

asp.net-mvc-4 modular-design

2
推荐指数
1
解决办法
167
查看次数

为什么Orchard没有模型视图控制器?

我正在和果园一起工作.写这样一个项目是我的梦想!所以我开始研究一个回合.关于果园感兴趣的是,果园是mvc项目,但为什么它的网络层解决方案中没有任何模型,视图控制器?它使用 CleanArchitecture或某些特定的架构像这样

我试图在果园文件中了解这个案例,但我没有找到任何关于它的描述.

asp.net-mvc plugin-architecture orchardcms modular-design clean-architecture

1
推荐指数
1
解决办法
125
查看次数

无法导入 com.vaadin.data.Binder

我想导入: import com.vaadin.data.Binder;

但是无法导入。它显示错误The import com.vaadin.data.Binder cannot be resolved。我正在使用 Vaadin 7。它是一个 Vaadin 示例项目名称客户。

错误信息

Java文件代码如下:

package com.example.tutorial;

import com.vaadin.data.Binder;
import com.vaadin.event.ShortcutAction.KeyCode;
import com.vaadin.ui.Button;
import com.vaadin.ui.DateField;
import com.vaadin.ui.FormLayout;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.NativeSelect;
import com.vaadin.ui.TextField;
import com.vaadin.ui.themes.ValoTheme;

public class CustomerForm extends FormLayout {

    private TextField firstName = new TextField("First name");
    private TextField lastName = new TextField("Last name");
    private TextField email = new TextField("Email");
    private NativeSelect<CustomerStatus> status = new NativeSelect<>("Status");
    private DateField birthdate = new DateField("Birthday");
    private Button save = new …
Run Code Online (Sandbox Code Playgroud)

java vaadin web vaadin7 modular-design

-3
推荐指数
1
解决办法
44
查看次数