On 2/12/17, 3:17 PM, "Harbs" <harbs.li...@gmail.com> wrote:
>I just added a CompressionUtils class which uses ByteArray on the Flash >side and pako on the javascript side. > >It uses inject_html to link to the js because I don’t know of a better >way to currently do this. > >I don’t like this approach for a number of reasons: >1. It hardwires the link into the generated HTML. In this case it’s using >the “best” cdn, but it does not allow the content to be hosted on the app >server. >2. There’s no (easy) way to link to relative paths when an app is being >loaded locally. Requiring it be downloaded from the internet is >inefficient, and does not allow the app to be run when there’s no >internet connection. Somewhere in the work queue is having inject_html copy over local files referenced in the injected HTML. >3. This will not work for Node.js. Node.js needs require(‘pako’) instead >of linking to the script. > >Here’s what I’m thinking: I’d like to have a “Require” tag which would >cause FlaconJX to do the right thing depending on the compilation. If >it’s compiling for Node.js, it would require() the dependency. If it’s >compiling for the browser, it would link to a relative path if that path >exists (there would be some standardized way of linking) or to a url if >not (assuming a url is provided). > >I don’t really care what the require tag looks like, but I personally >like metadata over the comment approach. It could also be a function call >which the compiler recognizes as a “special” one which gets optimized out. > >So something like this: > >[Require(name=“pako", >url="https://cdnjs.cloudflare.com/ajax/libs/pako/1.0.3/pako.min.js”)] > >or: >/** >* @require pako, >https://cdnjs.cloudflare.com/ajax/libs/pako/1.0.3/pako.min.js ><https://cdnjs.cloudflare.com/ajax/libs/pako/1.0.3/pako.min.js> >*/ >or: >require(‘pako’,'https://cdnjs.cloudflare.com/ajax/libs/pako/1.0.3/pako.min >.js' <https://cdnjs.cloudflare.com/ajax/libs/pako/1.0.3/pako.min.js'>); >where the signature for require would be: >require(name:String,url:String=“”) Sounds like work. Feel free to try to make the changes. An alternative might be to have a "NodeCompressionUtils" that has the appropriate require in it? Or is this a general problem for Node? -Alex