标签: decouple

实体类与LINQ to SQL提供程序分离,用于实现Repository模式.怎么样?

我已经查看了Repository模式,并且我认识到我过去使用过的一些让我感觉良好的想法.

但是现在我想编写一个使用这种模式的应用程序,但是我想要从存储库提供程序中解密出来的实体类.

我会创建几个程序集:

  1. 一个"接口"程序集,它将托管包括IRepository接口在内的通用接口
  2. 一个"实体"程序集,它将托管实体类,如产品,用户,订单等.这个程序集将由"接口"程序集引用,因为某些方法会返回它们的类型或数组.它也将被主应用程序组件引用(例如Web应用程序)
  3. 一个或多个存储库提供程序程序集/程序集.每个都包含(至少)一个实现IRepository接口的类,它可以与某个Data Store一起使用.数据存储可以包括SQL Server,Oracle服务器,MySQL,XML文件,Web/WCF服务等.

在我发现生成的类和CustomDataContext类之间的深度依赖性之前,研究LINQ to SQL看起来非常有效,在实现所有这些方面所花费的时间.

如何在这种情况下使用LINQ to SQL?

provider design-patterns decouple repository-pattern linq-to-sql

9
推荐指数
2
解决办法
2991
查看次数

如何使用MVVMCross构造视图模型

我正在迈出MvvmCross框架的第一步,我正在尝试在项目和类结构方面决定最佳方法.我现在最关心的是决定如何组织我的视图模型以便在它们之间共享数据,同时遵循mvvm指南.

我有一个关于视图和相应视图模型(主要和配置)的简单示例.主视图具有绑定到viewmodel中的属性的一些控件.配置视图使用户能够更改文本颜色,列表中的项目数等...当用户更改配置时,这应该反映在主视图中.

我的第一种方法是创建单独的视图和视图模型.但是,如何通知主视图配置已更改?我在Github/Slodge下看到了Sphero项目,我意识到视图模型可以直接引用其他视图.这样,每次配置更改时都很容易通知主视图.但这不是mvvm推荐的解耦视图模型的偏差吗?

我能否获得一些有关处理此类类结构的最佳方法的见解?

structure decouple viewmodel mvvmcross sphero-api

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

BEM和"活动"类/解耦HTML和JS

我已经开始使用BEM方法来解耦我的HTML和CSS ...并且它在大多数情况下运行良好.即使只是你的个人意见,我仍然想知道别人如何处理这个问题:

我们假设我们需要构建一个简单的导航.HTML看起来类似于

<nav class="nav">
    <ul class="nav__list">
        <li class="nav__item">
            <a class="nav__link" href=""></a>
        </li>
        <li class="nav__item">
            <a class="nav__link" href=""></a>
        </li>
    </ul>
</nav>
Run Code Online (Sandbox Code Playgroud)

我不确定我是否需要".nav_ item"和".nav _link",或者如果使用它代替它是更好的实践

.nav__list > li { CODE }
Run Code Online (Sandbox Code Playgroud)

但我真正的问题是如何处理"主动"类(不仅仅是导航,而是一般).是否更好地使用特定的"活动"类,如".nav_ item - active",因此您可以在CSS文件中使用单个类,或者使用更多通用类名如".is-active"更好?但是你需要在你的CSS文件中指定你的类,比如".nav _item.is-active"或者(看起来对我来说更糟)".nav__list> .is-active".

每种方法都有其缺点.对我来说,如果使用BEM,第二种方式看起来是错误的,但如果你是第一种方式,你会遇到JS的"麻烦",因为你需要将特定的类名"硬编码"到你的JS中

someElement.addClass(".nav__item--active");
Run Code Online (Sandbox Code Playgroud)

那样你的JS过分依赖你的HTML结构(或者这不重要吗?),这可能会改变......这导致了第二个问题.我听说不仅要解析你的HTML和CSS,还要解决你的HTML和JS问题.因此,您可以使用这些".js-"类将单击事件和所有类型的东西添加到元素中,而不是使用"样式"类来触发这类事件.所以不要使用

<button class="btn btn--large"></button> // $(".btn--large") in jQuery
Run Code Online (Sandbox Code Playgroud)

你将会拥有

<button class="btn btn--large js-dostuff"></button> // $(".js-dostuff") in jQuery
Run Code Online (Sandbox Code Playgroud)

我认为这与HTML5数据属性相结合几乎适用于任何事情,但我问自己导航或手风琴或类似的东西会发生什么.对于可维护性来说,使用那些".js-"类是否更好(对于每个项目)

<nav class="nav">
    <ul class="nav__list">
        <li class="nav__item js-open-subnav">
            <a class="nav__link" href=""></a>
            <ul class="nav__sub">
                <!-- ... -->
            </ul>
        </li>
    </ul>
</nav>
Run Code Online (Sandbox Code Playgroud)

或者我应该在我的JS中使用$(".nav__item")...在这种情况下?但是这样你并没有真正解耦你的HTML和JS(至少就我理解这个话题而言).这不仅仅是关于导航,而是关于所有那些javascript交互,如手风琴,滑块等.

我希望你们能分享这些问题的最佳实践并帮助我.

谢谢

html javascript css decouple bem

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

你如何使用python-decouple加载预期路径之外的.env文件?

我被迫将我的.env文件保存在项目根目录之外的非标准路径中(完全在一个单独的目录中).

假设我有我的Django项目/var/projects/my_project,尽管我的.env文件存放/opt/envs/my-project/.env在我的文件中SECRET_KEY.在我的settings.py文件中,我想.env在该路径中明确使用该文件,以便我仍然可以这样做:

from decouple import config
secret_key = config('SECRET_KEY')
Run Code Online (Sandbox Code Playgroud)

python django config decouple

8
推荐指数
2
解决办法
1797
查看次数