小编Jac*_*cob的帖子

KnockoutJS是否为构建大型Web应用程序提供了合适的架构?

快速提问:

KnockoutJS会为开发大型网络应用程序提供坚实的基础吗?我害怕有一个巨大的viewModel将变得无法维护.

背景信息

我将构建一个基于客户端的Web应用程序.后端只是一个RESTful端点.Web应用程序的整个界面将以纯HTML/CSS/JS构建 - 不涉及服务器端脚本.

网络应用程序本身将包含几个较小的应用程序和一个通用登录(有点像谷歌的网络应用程序,你有Gmail,文档,日历,阅读器等).

每个Web应用程序都有一些常用功能(例如侧边栏树视图,顶部栏菜单视图,通知系统)以及一些应用程序独特的功能.通常我会将我的应用程序分解为封装功能,例如:

var myNamespace = {
    common: {
        settings: {},
        user: {},
        notifications: {}
    },
    app1: {},
    app2: {},
    app3: {}
};
Run Code Online (Sandbox Code Playgroud)

现在,我非常喜欢使用KnockoutJS,并认为在构建项目的某些元素时(例如通知系统或具有自动刷新功能的高级网格视图,因为应用程序将支持协作)将会有所帮助.但我无法弄清楚将viewModel放到这个结构中的位置.

我只能找到如何使用KnockoutJS构建应用程序的简单示例.你真的可以建立比Twitter读者更先进的东西吗?有没有很好的例子说明如何在viewModel中分解很多功能,或者可能在很多viewModel中分解?

提出的解决方案

虽然更多理论问题(快速问题)在这里仍然没有答案,但我认为我找到了一种在实践中有效的解决方案.@Simon的回答给了我一些思考的东西,这是我到目前为止所得到的:

// First: a collection of Observables that I want to share
ld.collectionOfObservables = {
    notifications: ko.observableArray([]),
};

// Now let's define a viewModel. I put all my stuff inside the
// 'ld' namespace to avoid cluttering the global object. 
ld.viewModel1 = function (args) { …
Run Code Online (Sandbox Code Playgroud)

architecture knockout.js

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

KnockoutJS:SimpleGrid组件

我正在考虑构建一个高级网格组件(具有列重新排序,隐藏/显示列,排序,高级过滤(基于每列)等功能).我想和KnockoutJS一起进行数据到UI的绑定(除非有人认为这是个坏主意吗?).

现在,我知道有这个基本的网格示例,我也发现了它的扩展,但是可以用这个东西做更多的事情.所以我想知道你是否听说过任何人已经在这样的网格上工作过?(这样我可以贡献而不是重新发明轮子.)

datagrid knockout.js

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

从Tomcat的日志中排除某些请求

我的Tomcat访问日志当前充满了来自负载均衡器的运行状况检查请求,因此很难真正了解正在发生的事情。例如,使用GoAccess,我可以看到一些令人误解的统计信息:

Hits      h% Vis.    v%   Bandwidth Mtd Proto    Data
 ----- ------ ---- ----- ----------- --- -------- ----
 46221 81.20%    2 0.02%   30.72 MiB GET HTTP/1.1 /geoserver/index.html
 16     0.03%    1 0.01%   50.23 KiB GET HTTP/1.1 /geoserver/wms?SERVICE=WMS&VERSION=1.1.0&REQUEST=GetMap&FORMAT=image/jpeg.
 16     0.03%    1 0.01%  338.80 KiB GET HTTP/1.1 /geoserver/wms?SERVICE=WMS&VERSION=1.1.0&REQUEST=GetMap&FORMAT=image/png.
Run Code Online (Sandbox Code Playgroud)

该日志是使用Tomcat的标准Access Log Valve创建的。该阀门应该具有一个参数,conditionUnless我尝试使用该参数来消除对这些请求的所有要求index.html(这是运行状况检查的地方,因此我可以安全地过滤掉所有请求)。

根据文档,conditionUnless

打开条件日志记录。如果设置,请求将仅被记录 ServletRequest.getAttribute()null。例如,如果将此值设置为垃圾,则仅在记录特定请求 ServletRequest.getAttribute("junk") == null。使用过滤器是在许多不同请求上设置/取消ServletRequest中的属性的简便方法。

但是我无法弄清楚如何使用过滤器过滤出所有请求index.html并以某种形式标记它们。显然,仅此一项server.xml是不够的:

<Valve  className="org.apache.catalina.valves.AccessLogValve" 
        directory="/var/log/tomcat8/accesslogs"
        prefix="node1" suffix=".log"
        pattern="combined"
        renameOnRotate="true"
        conditionUnless="index.html" …
Run Code Online (Sandbox Code Playgroud)

logging tomcat

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

现在当jQuery.tmpl注定要失败时,Knockout的默认模板引擎

有没有人知道当jQuery.tmpl 没有被积极开发或维护时,Knockout的默认模板引擎会发生什么?将Knockout切换到另一个默认引擎(可以很容易地完成,如"Note 8"中所述)?或者它会继续使用jquery.tmpl的1.0.0之前的默认值,即使它被删除了吗?是否有任何候选人更有可能成为新的默认值?

你怎么看?

jquery-templates knockout.js

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