Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有其他方法包含JavaScript文件?_Javascript_Design Patterns_Architecture_Include - Fatal编程技术网

是否有其他方法包含JavaScript文件?

是否有其他方法包含JavaScript文件?,javascript,design-patterns,architecture,include,Javascript,Design Patterns,Architecture,Include,我们习惯于使用标准的单独包含一些javascript文件,但是。。。我真的不喜欢这样一种包括在内的方式 对于具有C#/C++背景的开发人员来说,许多特性对我来说都是一团糟 我真的不喜欢包含js文件的方式,但我明白,这是最常见的做法 有了这样的想法,我想尝试不同的可能方式 正如我所想,有两种可能的方法可以实现包含过程: 1) 。在虚函数-include()中动态创建标记,我可以在原型中定义它(js中的类模拟) 但是。。。这与标准中的方法几乎相同,但只是在原型中存储了一些动态逻辑,可以动态加载web

我们习惯于使用标准的
单独包含一些javascript文件,但是。。。我真的不喜欢这样一种包括在内的方式

对于具有C#/C++背景的开发人员来说,许多特性对我来说都是一团糟

我真的不喜欢包含js文件的方式,但我明白,这是最常见的做法

有了这样的想法,我想尝试不同的可能方式

正如我所想,有两种可能的方法可以实现包含过程:

1) 。在虚函数-
include()
中动态创建标记,我可以在原型中定义它(js中的类模拟)

但是。。。这与标准中的方法几乎相同,但只是在原型中存储了一些动态逻辑,可以动态加载web应用程序的一些所需模块

这就是为什么我不喜欢它,但这是一个选择,我必须把它添加到列表中

2) 。通过
AJAX/WebSockets/SPDY
动态加载js文件,这是您想要的,甚至可以通过执行分区函数(需要一些逻辑或实现一些设计模式)通过
eval()
函数执行加载文件的部分,并在新定义的函数
中准备它(args);
使js场景看起来像:

include( "models.js" );
include( "dbController.js" );
...
是的……我知道,
eval()
在JavaScript世界中是一个邪恶的东西,但我不知道不同函数的名称,它允许我使用相同的功能

而且…和最初的包含方式相比,它可能太慢了,我再说一遍,它甚至很脆弱

这是我可以想象的两种方式,也许你会建议一个更好的解决方案,或者说服我放弃一些坏想法。

是一个JavaScript模块化工具,它完全满足你的需要。你可以在自己的文件中定义模块,如下所示:

define('moduleName', [ dependencies ], function () {
  // module code
});
并异步加载它们:

require('moduleName');
或作为其他模块的依赖项:

define([ 'moduleName' ], function (myModule) {
   // other module
});

它还有一个用于将您的模块编译成一个JavaScript文件以备生产。

@Barmar:)感谢您的链接,我将深入学习它。可能是闭包工具。您可以将所有与闭包兼容的代码编译到一个文件中,但仍然可以延迟加载定义用户不太可能使用的行为的部分代码。许多库与编译器不兼容,但不会使用您的代码进行编译。你需要外人去那些满满的图书馆+非常感谢您提供的新信息:)非常有用!