How can I split my javascript code into separate files?

前端 未结 3 1766
迷失自我
迷失自我 2021-01-30 18:11

I\'m reading the Javascript Guide from Mozilla And when they contrasted JS to Java , It got me thinking, Java code is easily split up with each class in his own file. after futh

相关标签:
3条回答
  • 2021-01-30 18:23

    You don't need to do anything differently. Just include the script files and they work as if it was a single file.

    Javascript doesn't have file scope. Once the code is parsed it doesn't matter where the code came from.

    0 讨论(0)
  • 2021-01-30 18:25

    You should have one global namespacing object which every module has to access and write to. Modify your files like so:

    // employe.js
    
    window.myNameSpace = window.myNameSpace || { };
    
    myNameSpace.Employee = function() {
        this.name = "";
        this.dept = "general";
    };
    

    and Manager.js could look like

    // Manager.js
    
    window.myNameSpace = window.myNameSpace || { };
    
    myNameSpace.Manager = function() {
        this.reports = [];
    }
    myNameSpace.Manager.prototype = new myNameSpace.Employee;
    

    This is of course a very simplified example. Because the order of loading files and dependencies is not child-play. There are some good librarys and patterns available, I recommend you looking at requireJS and AMD or CommonJS module patterns. http://requirejs.org/

    0 讨论(0)
  • 2021-01-30 18:42

    For small and medium projects like a website or game, the native namespacing and constructors work very well. They are a poor choice when the loading order is too complex to handle without some sort of autoloading.

    index.html:

    <script src="Employee.js"></script>
    <script src="Manager.js"></script>
    

    Manager.js:

    var Manager = function() {
        var employee1 = new window.Employee(this);
        var employee2 = new window.Employee(this);
    };
    

    Employee.js:

    var Employee = function(boss) {
        // work stuff here
        this.wage = 5;
    };
    

    Note, properties inside the employee constructor function are visible to the manager. The new word signals a constructor. This is also possible without a constructor by returning an object with properties instead of a function as shown above.

    0 讨论(0)
提交回复
热议问题