Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/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_Oop - Fatal编程技术网

将JavaScript文件导入一个文件的最佳方法?

将JavaScript文件导入一个文件的最佳方法?,javascript,oop,Javascript,Oop,我有使用“类”概念的语言进行编码的背景。现在我正在编写JavaScript,我想以类似的方式编写代码,以便我创建的每个面向对象的“类”都是它自己的独立文件 看 看 在其他语言中,我会在类文件的顶部创建import语句,以确保在类文件中使用其他自定义类,从而将其他自定义类编译成最终的二进制文件 当然,JavaScript不是一种编译语言;但是,我仍然希望能够在自定义类文件的顶部包含某种“import”语句,以便确保导入的JS“class”文件可供用户的浏览器下载 如果有一个第三方工具将我的所有

我有使用“类”概念的语言进行编码的背景。现在我正在编写JavaScript,我想以类似的方式编写代码,以便我创建的每个面向对象的“类”都是它自己的独立文件

在其他语言中,我会在类文件的顶部创建import语句,以确保在类文件中使用其他自定义类,从而将其他自定义类编译成最终的二进制文件

当然,JavaScript不是一种编译语言;但是,我仍然希望能够在自定义类文件的顶部包含某种“import”语句,以便确保导入的JS“class”文件可供用户的浏览器下载

如果有一个第三方工具将我的所有单独的类文件合并到一个JS文件中,那么浏览器只需对一个JS文件发出一个HTTP请求,而不是对每个单独的JS“类”进行多次调用,这将是非常理想的。是否有人知道是否存在这样一个工具,它可以执行以下操作:

  • 允许我选择要包含在单个JS文件中的JS文件
  • 爬过我在步骤1中选择的文件,在每个自定义“类”文件的顶部找到所有“导入”语句。这些“导入”语句可以是代码中经过特殊格式化的注释,第三方将其识别为导入语句
  • 然后,第三方将使用从步骤1中选择的所有文件以及从步骤2中找到的所有导入文件创建单个JS文件
  • 一些流行的JavaScript框架似乎就是这样做的。例如,jQueryUI允许用户检查要使用的对象,从而自定义单个jQueryUI源文件的下载。如果取消选中选中的项目所需的元素,则表单会告诉您,在继续下载文件之前,您需要纠正一个依赖项


    那么,是否有第三方工具允许开发人员使用某种“导入”语句注释,以确保将许多依赖的JS文件(以及仅开发人员需要的文件)合并到单个JS文件中?

    正是为此目的而构建的。

    请看一看。它允许您以模块化的方式导入各种javascript文件,并在它们之间添加所需的依赖项。最后,您还可以使用r.JS将它们缩小为一个单独的JS文件,一个简单的批处理文件可以为您做到这一点:

    @for %i in (classes/*.js) type %i >> build.js
    
    如果您的JS源文件都在一个文件夹中,并且本例假设该文件夹名为
    classes
    ,则这种方法效果最好。如果有子文件夹,它会变得有点复杂,但是可以应用类似的原理。

    看看,JQuery使用它来构建。如果您不关心HTTP请求,您可以使用前面提到的RequireJS,它也有很好的异步方法来加载文件,在某些情况下可以提高性能。

    查看这个类 这允许在类中动态导入。它还允许 用于导入文件夹及其所有子文件夹中的所有类。 它非常简单,因为它只是一个添加到字符串中的原型函数。 只需添加导入器类,就可以调用“com.project.Classfile.js.import()等类; 或“com.project.*.import()”以获取所有子类。
    fork-on-

    假设.js文件中没有不可靠的结构,
    cat*.js>megafile.js
    就可以了。这不完全是你想要的,但js不是你的典型语言,事情的运作方式有点不同。。。试试Grunt:这不会触发对每个所需脚本的HTTP请求吗?只有在您让它动态加载一个模块的情况下。@waynekoots如何运行RequireJS以创建一个JS文件,然后我可以使用它在HTML页面上发布?本质上,我试图在发布代码之前将其编译成单个文件。谢谢@jaxim:下面的文档描述得很好:@WayneKoorts在对RequireJS做进一步研究后,我发现了另外两个实用程序:榨汁机和链轮;这么简单,但工作确实如此。css和html文件呢?你能解释一下这个脚本在做什么吗?它非常简单,翻译成英语:“对于classes文件夹中的每个.js文件,将其内容附加到build.js”——它将所有文件连接在一起。不过,在运行之前,您需要删除任何预先存在的build.js。。。