首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >拆分knockoutjs

拆分knockoutjs
EN

Stack Overflow用户
提问于 2012-02-09 19:43:36
回答 1查看 2.1K关注 0票数 6

我的应用程序视图模型变得非常大。如何正确地将其拆分为文件和名称空间?是否创建第二个名称空间对象并将视图模型作为参数传入?

代码语言:javascript
运行
复制
var BALL = {};
BALL.roll = function(avm) { // function code };
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-29 10:07:09

我个人的偏好不是拆分我的applyBindings调用,而是使用单个全局名称空间分支。

我的理由是,为了让多个绑定正确工作,并且不会发生冲突,您需要非常小心,您选择的目标dom元素不会发生变化。不幸的是,标记有一个随时间变化的坏习惯,这可能会在以后给您的viewModels带来麻烦。

我在一个非常大的KO项目中使用的一般方法是

为整个应用提供一个全局顶级命名空间,例如将单独的功能块myapp

  • Split
  1. 到单独的文件中。通常使用它们自己独特的名称空间。例如,`myapp.navigation'
  2. If一个命名空间特别太大,将其拆分为更多的子命名空间,或者如果这样做不合适,则将同一命名空间拆分到多个文件中。为了保留performance.

  • 在末尾散列所有文件

我最近使用的一些命名空间代码

代码语言:javascript
运行
复制
var Namespace = (function() {
    var namespace, global, root;

    namespace = function(identifier, contents) {
        if (!identifier || identifier.length == 0) {
            throw Error("A namespace identifier must be supplied");
        }
        global = window;

        // create the namespace
        var parts = identifier.split(".");
        for (var i = 0; i < parts.length; i += 1) {
            if (!global[parts[i]]) {
                global[parts[i]] = {};
            }
            if (i == 0) {
                root = global[parts[i]];
            }
            global = global[parts[i]];
        }

        // assign contents and bind
        if (contents) {
            global.$root = root;
            contents.call(global);
        }
    };

    return namespace;
})();

因此,在myapp.navigation文件中,您将拥有

代码语言:javascript
运行
复制
Namespace("myapp.navigation", function() {
     var self = this; // your myapp.navigation object

     this.someFunction = function() {
     }       
});

这只是使用自调用函数传入手动构造的名称空间的简写。它为你提供了一个私有的闭包,你可以自由地在不同的js文件中使用多个具有相同命名空间的命名空间调用。

您的applyBindings调用现在可以始终是

代码语言:javascript
运行
复制
ko.applyBindings(myapp);

希望这能有所帮助。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9210249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档