I read up a bit on Node's require system.  It seems that because import
statements in AS are generally at the package level, it wouldn't be a good
equivalent for Node's require.  I think Node's require system is an
explicit class/package loader like Java's and allows you to defer the
loading of code until just before it is needed.

Do we have to find a way to replace the need to make require calls in your
AS code?

-Alex

On 12/2/15, 11:00 AM, "Josh Tynjala" <joshtynj...@gmail.com> wrote:

>Node.js has its own require system. It's called CommonJS.
>
>I was thinking that it could also be based on imported classes. It can be
>a
>little tricky, though. A module is pretty flexible with what it exports.
>Most simply, a module could export a single class. In this case, the
>translation is pretty simple:
>
>//as
>import SomeClass;
>
>//js
>var SomeClass = require("SomeClass");
>
>However, a module could export multiple classes or even functions too,
>more
>like an ActionScript package. It might work something like this:
>
>//as
>import fs.readFileSync; //function
>import fs.ReadStream; //class
>
>//js
>var readFileSync = require("fs").readFileSync;
>var ReadStream = require("fs").ReadStream;
>
>That's for the core modules. You can also require() modules using a
>relative path. If we were to allow the ability to emit classes as CommonJS
>modules, we might use the following syntax. In a class in the top-level
>package, it might look like this:
>
>//as
>import com.example.RelativeClass;
>
>//js
>var RelativeClass = require("./com/example/RelativeClass");
>
>But for something in com/example, it would look like this:
>
>//as
>import com.example.RelativeClass;
>
>//js
>var RelativeClass = require("./RelativeClass");
>
>- Josh
>
>On Wed, Dec 2, 2015 at 10:14 AM, Alex Harui <aha...@adobe.com> wrote:
>
>>
>>
>> On 12/2/15, 9:59 AM, "Josh Tynjala" <joshtynj...@gmail.com> wrote:
>>
>> >The require() call for a Node.js module should probably be generated in
>> >the
>> >PackageHeaderEmitter, where the goog.require() calls are generated.
>>
>> OK, but based on what kind of source code lines?  The goog.requires are
>> generated from import statements, although we might change that to being
>> generated by explicit instantiation of a class someday.
>>
>> I think you are saying you want to replace the goog.require subsystem
>>with
>> some other require subsystem in order to get node.js to work.  Is
>>node.js
>> using RequireJS or their own require system?  The work item may be to
>> finally getting around to supporting alternative require subsystems.
>>
>> -Alex
>>
>>

Reply via email to