JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了javascript – 拆分knockoutjs大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的应用视图模型正在变得非常大.如何正确地将其拆分为文件和命名空间?我是否创建了第二个名称空间对象并将视图模型作为参数传入?
var BALL = {};
BALl.roll = function(avm) { // function code };

解决方法

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

我的理由是,为了使多个绑定正常工作而不是冲突,您需要非常小心,您选择的目标dom元素不会改变.不幸的是,标记有一个令人讨厌的习惯,即随着时间的推移而改变,以后可能会让你的viewModel出现问题.

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

>整个应用程序的一个全局顶级命名空间,例如myapp
>将单独的功能块拆分为单独的文件.通常有自己独特的命名空间.例如`myapp.navigation”
>如果特定的一个命名空间太大,则将其拆分为更多的子命名空间,或者如果不合适,则将相同的命名空间拆分为多个文件.
>在最后混合所有文件以保持性能.

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

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文件中你会有

Namespace("myapp.navigation",function() {
     var self = this; // your myapp.navigation object

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

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

您的applyBindings调用现在可以永远

ko.applyBindings(myapp);

希望这可以帮助.

大佬总结

以上是大佬教程为你收集整理的javascript – 拆分knockoutjs全部内容,希望文章能够帮你解决javascript – 拆分knockoutjs所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。